(要让集群正常工作至少需要3个主节点,在这里我们要创建
6
个
redis
节点,其中三个为主节点,三个为从节点,对应的
redis
节点的
ip
和端口对应关系如下)
192.168.100.42:6379
192.168.100.43:6379
192.168.100.44:6379
192.168.100.45:6379
192.168.100.46:6379
192.168.100.47:6379
1:下载
redis
。官网下载
3.0.0
版本,之前
2.
几的版本不支持集群模式
下载地址:HTTP://download.redis.io/releases/redis-3.0.0.tar.gz
2:上传服务器,解压,编译
make 需要C++编译环境
yum install gcc-c++
make MALLOC=libc install
tar -zxvf redis-3.0.0.tar.gz mv redis-3.0.0.tar.gz redis3.0 cd /usr/local/redis3.0 make make install
3:修改配置文件
redis.conf
cp /usr/local/redis3.0/redis.conf /usr.local/cluster vi redis.conf ##修改配置文件中的下面选项 port 6379 daemonize yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 15000 appendonly yes ##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到别的节点下
4:分别启动这
6
个
redis
实例
redis-server redis.conf ##启动之后使用命令查看redis的启动情况ps -ef|grep redis 如下图显示则说明启动成功
5:执行
redis
的创建集群命令创建集群
cd /usr/local/redis3.0/src ./redis-trib.rb create --replicas 1 192.168.100.46:6379 192.168.100.42:6379 192.168.100.44:6379 192.168.100.45:6379 192.168.100.43:6379 192.168.100.47:6379
6.1执行上面的命令的时候可能会报错,因为是执行的
ruby
的脚本,需要
ruby
的环境
错误内容:/usr/bin/env: ruby: No such file or directory
所以需要安装ruby的环境,这里推荐使用
yum install ruby
安装
yum install ruby
6.2然后再执行第
6
步的创建集群命令,可能还会报错,提示缺少
rubygems
组件,使用
yum
安装
错误内容:
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
yum install rubygems
如不能安装手动离线安装
1,下载rubygems-2.4.8.tar包,下载地址:
https://rubygems.org/pages/download
点击下载TGZ
2,tar -zxvf 解压该压缩包
3,进入解压目录,执行:ruby setup.rb
4,如果出现错误提示说:ERROR:RDoc documentation generator not installed: no such file to l
5,安装依赖包:yum install ruby-rdoc
6,再次执行ruby setup.rb即可完成安装
6.3再次执行第
6
步的命令,可能还会报错,提示不能加载
redis
,是因为缺少
redis
和
ruby
的接口,使用
gem
安装
错误内容:
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from ./redis-trib.rb:25
gem install redis
出现这个情况是 rubygem版本过高
gem list
版本为3.3.2
gem list
gem uninstall redis --version 3.3.2
gem install redis --version 3.0.0
gem list
集群常用操作
cluster集群相关命令,更多redis相关命令见文档:
http://redis.readthedocs.org/en/latest/
redis-cli -h 192.168.31.245 -c -p 7002 CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。 节点 CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。 CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。 CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。 槽(slot) CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。 CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。 CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。 CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。 CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。 CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。 键 CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。 CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。 CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽 redis-trib.rb check 192.168.100.46:6379检测节点信息