1、准备环境node
(要让集群正常工做至少须要3个主节点,在这里咱们要建立6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系以下)redis
node11:7000
node11:7001ruby
node11:7002服务器
node11:7003app
node11:7004ui
node11:7005spa
tar -zxvf redis-3.0.0.tar.gz3d
mv redis-3.0.0.tar.gz redis3.0server
cd /usr/local/redis3.0接口
make
make install
mkdir -p /usr/local/cluster
cd /usr/local/cluster
mkdir 7000
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
cp /usr/local/redis3.0/redis.conf /usr.local/cluster
vi redis.conf
##修改配置文件中的下面选项
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
##修改完redis.conf配置文件中的这些配置项以后把这个配置文件分别拷贝到7000/7001/7002/7003/7004/7005目录下面
cp /usr/local/cluster/redis.conf /usr/local/cluster/7000
cp /usr/local/cluster/redis.conf /usr/local/cluster/7001
cp /usr/local/cluster/redis.conf /usr/local/cluster/7002
cp /usr/local/cluster/redis.conf /usr/local/cluster/7003
cp /usr/local/cluster/redis.conf /usr/local/cluster/7004
cp /usr/local/cluster/redis.conf /usr/local/cluster/7005
##注意:拷贝完成以后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改成对应的文件夹的名称
cd /usr/local/cluster/7000
redis-server redis.conf
cd /usr/local/cluster/7001
redis-server redis.conf
cd /usr/local/cluster/7002
redis-server redis.conf
cd /usr/local/cluster/7003
redis-server redis.conf
cd /usr/local/cluster/7004
redis-server redis.conf
cd /usr/local/cluster/7005
redis-server redis.conf
##启动以后使用命令查看redis的启动状况ps -ef|grep redis
以下图显示则说明启动成功
cd /usr/local/redis3.0/src
./redis-trib.rb create --replicas 1 192.168.1.160:7000 192.168.1.160:7001 192.168.1.160:7002 192.168.1.160:7003 192.168.1.160:7004 192.168.1.160:7005
执行上面的命令的时候可能会报错,由于是执行的ruby的脚本,须要ruby的环境
错误内容:/usr/bin/env: ruby: No such file or directory
因此须要安装ruby的环境,这里推荐使用yum install ruby安装
yum install ruby
而后再执行第7步的建立集群命令,可能还会报错,提示缺乏rubygems组件,使用yum安装
错误内容:
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
yum install rubygems
再次执行第7步的命令,可能还会报错,提示不能加载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
再次执行第7步的命令,正常执行
输入yes,而后配置完成。
至此redis集群即搭建成功!
redis-cli -c -p 7000
cd /usr/local/cluster/
mkdir 7006
cp /usr/local/cluster/redis.conf /usr/local/cluster/7006/
cd /usr/local/cluster/7006/
vi redis.conf
##修改redis.conf中的port参数的值为7006
redis-server redis.conf
cd /usr/local/redis3.0/src/
./redis-trib.rb add-node 192.168.1.160:7006 192.168.1.160:7000
把这个节点变成主节点,使用redis-trib程序,将集群中的某些哈希槽移动到新节点里面, 这个新节点就成为真正的主节点了。
执行下面的命令对集群中的哈希槽进行移动
而后还须要指定把这些哈希槽转移到哪一个节点上
输入咱们刚才新增的节点的ID
830d7afff64fce647589d7bf0b57437e0b5e22da
而后须要咱们指定转移哪几个节点的哈希槽
输入all 表示从全部的主节点中随机转移,凑够1000个哈希槽
而后再输入yes,redis集群就开始分配哈希槽了。
至此,一个新的主节点就添加完成了,执行命令查看如今的集群中节点的状态
redis-cli -c -p 7000 cluster nodes
前面咱们已经把这个新节点添加到集群中了,如今咱们要让新节点成为192.168.1.160:7001的从节点,只须要执行下面的命令就能够了,命令后面的节点ID就是192.168.1.160:7001的节点ID
redis-cli -c -p 7006 cluster replicate 0b00721a509444db793d28448d8f02168b94bd38
使用下面命令来确认一下192.168.1.160:7006是否已经成为192.168.1.160:7001的从节点
redis-cli -p 7000 cluster nodes | grep slave | grep 0b00721a509444db793d28448d8f02168b94bd38
1:若是删除的节点是主节点,这里咱们删除192.168.1.160:7006节点,这个节点有1000个哈希槽
首先要把节点中的哈希槽转移到其余节点中,执行下面的命令
cd /usr/local/redis3.0/src ./redis-trib.rb reshard 192.168.1.160:7000 |
系统会提示咱们要移动多少哈希槽,这里移动1000个,由于192.168.1.160:7006节点有1000个哈希槽
而后系统提示咱们输入要接收这些哈希槽的节点的ID,这里使用192.168.1.160:7001的节点ID
而后要咱们选择从那些节点中转出哈希槽,这里必定要输入192.168.1.160:7006这个节点的ID,最后输入 done 表示输入完毕
最后一步,使用下面的命令把这个节点删除
cd /usr/local/redis3.0/src/ ./redis-trib.rb del-node 192.168.1.160:7000 须要删除的节点ID |
2:若是节点是从节点的,直接使用下面的命令删除便可。
cd /usr/local/redis3.0/src/ ./redis-trib.rb del-node 192.168.1.160:7000 须要删除的节点ID |