Redis集群部署

redis集群搭建

一、安装redis

解压安装包

tar -zxvf auto_install_redis_4.0.2.tar.gz

进入解压目录

cd auto_install_redis

执行安装脚本

sh redis_install.sh

启动redis

/usr/local/redis/src/redis-server /usr/local/redis/redis.conf &

二、规划集群架构
image

环境说明:

采用一台机器开启多个端口,来构建Redis Cluster,客户端通过连接三个主节点来进行通信

三主三从:

Master:127.0.0.17001
Master:127.0.0.17002
Master:127.0.0.17003

Slave:  127.0.0.18001
Slave:  127.0.0.18002
Slave:  127.0.0.18003

部署Redis集群

创建集群配置文件目录:

主节点

 mkdir -pv /usr/local/redis/cluster/700{1..3}

从节点:

mkdir -pv /usr/local/redis/cluster/800{1..3}

复制配置文件

cp /usr/local/redis/redis.conf /usr/local/redis/cluster/7001/redis_7001.conf
cp /usr/local/redis/redis.conf /usr/local/redis/cluster/7002/redis_7002.conf
cp /usr/local/redis/redis.conf /usr/local/redis/cluster/7003/redis_7003.conf
cp /usr/local/redis/redis.conf /usr/local/redis/cluster/8001/redis_8001.conf
cp /usr/local/redis/redis.conf /usr/local/redis/cluster/8002/redis_8002.conf
cp /usr/local/redis/redis.conf /usr/local/redis/cluster/8003/redis_7003.conf

修改配置文件参数

sed -i 's/6379/7001/g' /usr/local/redis/cluster/7001/redis_7001.conf
sed -i 'N;4i\cluster-enabled yes' /usr/local/redis/cluster/7001/redis_7001.conf
sed -i 'N;6i\cluster-config-file nodes.conf' /usr/local/redis/cluster/7001/redis_7001.conf
sed -i 'N;8i\cluster-node-timeout 5000' /usr/local/redis/cluster/7001/redis_7001.conf
sed -i 's/appendonly no/appendonly yes/g' redis_7001.conf

批量修改端口

sed -i 's/6379/7002/g' /usr/local/redis/cluster/7002/redis_7002.conf  
sed -i 's/6379/7003/g' /usr/local/redis/cluster/7003/redis_7003.conf  
sed -i 's/6379/8001/g' /usr/local/redis/cluster/8001/redis_8001.conf  
sed -i 's/6379/8002/g' /usr/local/redis/cluster/8002/redis_8002.conf  
sed -i 's/6379/8003/g' /usr/local/redis/cluster/8003/redis_8003.conf  
sed -i 's/6379/7001/g' /usr/local/redis/cluster/7001/redis_7001.conf

启动redis服务

/usr/local/redis/src/redis-server /usr/local/redis/cluster/7001/redis_7001.conf
/usr/local/redis/src/redis-server /usr/local/redis/cluster/7002/redis_7002.conf 
/usr/local/redis/src/redis-server /usr/local/redis/cluster/7003/redis_7003.conf 
/usr/local/redis/src/redis-server /usr/local/redis/cluster/8001/redis_8001.conf 
/usr/local/redis/src/redis-server /usr/local/redis/cluster/8002/redis_8002.conf 
/usr/local/redis/src/redis-server /usr/local/redis/cluster/8003/redis_8003.conf

查看redis集群是否启动成功

image

安装ruby

yum -y install ruby ruby-devel rubygems rpm-build

二、安装redis的ruby模块

yum install gem
gem install redis

安装redis模块时,发现版本太低,最低需要2.2.2

Fetching: redis-4.0.1.gem (100%)
ERROR:  Error installing redis:
    redis requires Ruby version >= 2.2.2.

升级ruby版本

安装rvm

curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm

查看rvm库中已知的ruby版本

rvm list known

安装一个ruby版本

rvm install 2.3.3

设置默认版本

rvm use 2.3.3

卸载一个已知版本

rvm remove 2.0.0

查看ruby版本,已升级至2.3.3

ruby --version
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]

再次安装redis即可

gem install redis

三、使用redis-trib.rb创建集群

/usr/local/redis/src/redis-trib.rb  create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003

image

四、打印集群信息

连接集群

/usr/local/redis/src/redis-cli -h 127.0.0.1 -c -p 7001
127.0.0.1:7001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:5481
cluster_stats_messages_pong_sent:5620
cluster_stats_messages_sent:11101
cluster_stats_messages_ping_received:5615
cluster_stats_messages_pong_received:5481
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:11101
127.0.0.1:7001> cluster nodes
2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002@17002 master - 0 1517288841502 2 connected 5461-10922
77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003@17003 master - 0 1517288841502 3 connected 10923-16383
dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002@18002 slave 2086be0eafa4dc281d69b7b2a2051656a8d7a862 0 1517288840002 5 connected
9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001@18001 slave 8e4a9545a11eee83ac87a2c0f6536ec226250577 0 1517288840101 4 connected
becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003@18003 slave 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 0 1517288841002 6 connected
8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001@17001 myself,master - 0 1517288839000 1 connected 0-5460

五、模拟Master 127.0.0.1:7001 down掉

(1)连接127.0.0.1:7001(主节点)写入数据

/usr/local/redis/src/redis-cli -h 127.0.0.1 -c -p 7001
127.0.0.1:7001> set domain www.baidu.com
"OK"

(2)down掉127.0.0.1:7001节点

kill -9 11724

(3)查看redis集群信息,此时7001对应的从8001已提升至Master

127.0.0.1:8001> cluster nodes
becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003@18003 slave 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 0 1517302050665 6 connected
dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002@18002 slave 2086be0eafa4dc281d69b7b2a2051656a8d7a862 0 1517302050565 5 connected
77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003@17003 master - 0 1517302050063 3 connected 10923-16383
9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001@18001 myself,master - 0 1517302050000 8 connected 0-5460
2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002@17002 master - 0 1517302049061 2 connected 5461-10922
8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001@17001 master,fail - 1517301509734 1517301509000 1 disconnected

“cluster_stats_messages_auth-ack_received:2”信息代表,有2个Master确认了8001 Slave的选举请求

127.0.0.1:8001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:8
cluster_my_epoch:8
cluster_stats_messages_ping_sent:37078
cluster_stats_messages_pong_sent:30029
cluster_stats_messages_meet_sent:3
cluster_stats_messages_auth-req_sent:10
cluster_stats_messages_sent:67120
cluster_stats_messages_ping_received:30022
cluster_stats_messages_pong_received:30588
cluster_stats_messages_meet_received:3
cluster_stats_messages_fail_received:2
cluster_stats_messages_auth-ack_received:2
cluster_stats_messages_received:60617

连接8001端口,可正常获取数据

/usr/local/redis/src/redis-cli -h 127.0.0.1 -c -p 8001
127.0.0.1:8001> get domain
"www.baidu.com"

(4)再次启动7001节点,启动服务

/usr/local/redis/src/redis-server /usr/local/redis/cluster/7001/redis_7001.conf

发现7001已加入redis集群之中,此时变为了Slave

127.0.0.1:8001> cluster nodes
becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003@18003 slave 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 0 1517302851318 6 connected
dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002@18002 slave 2086be0eafa4dc281d69b7b2a2051656a8d7a862 0 1517302850516 5 connected
77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003@17003 master - 0 1517302850000 3 connected 10923-16383
9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001@18001 myself,master - 0 1517302849000 8 connected 0-5460
2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002@17002 master - 0 1517302850316 2 connected 5461-10922
8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001@17001 slave 9dba04d53816bc625d85968d440d46b638759463 0 1517302850000 8 connected

六、动态添加redis节点

(1)使用add-node新增主节点报错

/usr/local/redis/src/redis-trib.rb add-node 127.0.0.1:7004 127.0.0.1:8001
>>> Adding node 127.0.0.1:7004 to cluster 127.0.0.1:8001
>>> Performing Cluster Check (using node 127.0.0.1:8001)
M: 9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003
   slots: (0 slots) slave
   replicates 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71
S: dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002
   slots: (0 slots) slave
   replicates 2086be0eafa4dc281d69b7b2a2051656a8d7a862
M: 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[ERR] Node 127.0.0.1:7004 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决方法:

登录要添加的reids,清除当前数据库

[root@webserver 7004]# /usr/local/redis/src/redis-cli -h 127.0.0.1 -c -p 7004
127.0.0.1:7004> flushdb   
OK

重新添加即可

[root@webserver 7004]# /usr/local/redis/src/redis-trib.rb add-node 127.0.0.1:7004 127.0.0.1:8001
>>> Adding node 127.0.0.1:7004 to cluster 127.0.0.1:8001
>>> Performing Cluster Check (using node 127.0.0.1:8001)
M: 9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003
   slots: (0 slots) slave
   replicates 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71
S: dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002
   slots: (0 slots) slave
   replicates 2086be0eafa4dc281d69b7b2a2051656a8d7a862
M: 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:7004 to make it join the cluster.
[OK] New node added correctly.

查看集群node信息,7004master节点已加入集群,但未分配slot

127.0.0.1:7004> cluster nodes
becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003@18003 slave 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 0 1517302851318 6 connected
dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002@18002 slave 2086be0eafa4dc281d69b7b2a2051656a8d7a862 0 1517302850516 5 connected
77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003@17003 master - 0 1517302850000 3 connected 10923-16383
9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001@18001 myself,master - 0 1517302849000 8 connected 0-5460
41434ada7f3952e593bbc9b586e9bbfd9b7b7dce 127.0.0.1:7004@17004 myself,master - 0 1517371924000 10 connected
2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002@17002 master - 0 1517302850316 2 connected 5461-10922
8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001@17001 slave 9dba04d53816bc625d85968d440d46b638759463 0 1517302850000 8 connected

下面给新增主节点7004,手动迁移分配槽

[root@webserver cluster]# /usr/local/redis/src/redis-trib.rb reshard 127.0.0.1:7004
>>> Performing Cluster Check (using node 127.0.0.1:7004)
M: 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce 127.0.0.1:7004
   slots:0-1332,5461-6794,10923-12255 (4000 slots) master
   1 additional replica(s)
S: 8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
M: 9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001
   slots:1333-5460 (4128 slots) master
   1 additional replica(s)
S: 7a4d196ff9492118ccc45991ddc468f037649430 127.0.0.1:8005
   slots: (0 slots) slave
   replicates 2086be0eafa4dc281d69b7b2a2051656a8d7a862
S: dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002
   slots: (0 slots) slave
   replicates 2086be0eafa4dc281d69b7b2a2051656a8d7a862
M: d62c612b6cc6505e10fa1cc29e0fbe6eb97268a5 127.0.0.1:7006
   slots: (0 slots) master
   0 additional replica(s)
M: 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003
   slots:12256-16383 (4128 slots) master
   1 additional replica(s)
M: 2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002
   slots:6795-10922 (4128 slots) master
   2 additional replica(s)
S: 627205d46cb355406cf0aa12a135ec7869f78581 127.0.0.1:8004
   slots: (0 slots) slave
   replicates 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce
S: becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003
   slots: (0 slots) slave
   replicates 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 4000
What is the receiving node ID? 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1:all
注意:all代表从3个master节点中各抽取部分槽凑给新增7004节点

查看集群信息

127.0.0.1:7004> cluster nodes 
8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001@17001 slave 9dba04d53816bc625d85968d440d46b638759463 0 1517375622596 8 connected
9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001@18001 master - 0 1517375621000 8 connected 2667-5460
41434ada7f3952e593bbc9b586e9bbfd9b7b7dce 127.0.0.1:7004@17004 myself,master - 0 1517375622000 10 connected 0-2666 5461-8127 10923-13588
7a4d196ff9492118ccc45991ddc468f037649430 127.0.0.1:8005@18005 slave 2086be0eafa4dc281d69b7b2a2051656a8d7a862 0 1517375622695 2 connected
dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002@18002 slave 2086be0eafa4dc281d69b7b2a2051656a8d7a862 0 1517375621192 2 connected
77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003@17003 master - 0 1517375622194 9 connected 13589-16383
2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002@17002 master - 0 1517375622596 2 connected 8128-10922
627205d46cb355406cf0aa12a135ec7869f78581 127.0.0.1:8004@18004 slave 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce 0 1517375621093 10 connected
becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003@18003 slave 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 0 1517375623196 9 connected

给指定master添加slave

/usr/local/redis/src/redis-trib.rb add-node --slave --master-id 2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:8005 127.0.0.1:7002
>>> Adding node 127.0.0.1:8005 to cluster 127.0.0.1:7002
>>> Performing Cluster Check (using node 127.0.0.1:7002)
M: 2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
M: 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 627205d46cb355406cf0aa12a135ec7869f78581 127.0.0.1:8004
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
M: 9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001
   slots:0-5460 (5461 slots) master
   4 additional replica(s)
S: 388a98b020f9453b4eea160e0eebade61e0fc514 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
S: dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002
   slots: (0 slots) slave
   replicates 2086be0eafa4dc281d69b7b2a2051656a8d7a862
S: becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003
   slots: (0 slots) slave
   replicates 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71
S: 9e5a1174e03c22ce04de5b29bff0f734cd784d57 127.0.0.1:7004
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:8005 to make it join the cluster.
Waiting for the cluster to join.
>>> Configure node as replica of 127.0.0.1:7002.
[OK] New node added correctly.

查看集群,8005已添加至7002的从节点

127.0.0.1:7005> cluster nodes
9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001@18001 master - 0 1517366540548 8 connected 0-5460
388a98b020f9453b4eea160e0eebade61e0fc514 127.0.0.1:7005@17005 myself,slave 9dba04d53816bc625d85968d440d46b638759463 0 1517366538000 0 connected
becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003@18003 slave 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 0 1517366540000 3 connected
627205d46cb355406cf0aa12a135ec7869f78581 127.0.0.1:8004@18004 slave 9dba04d53816bc625d85968d440d46b638759463 0 1517366539847 8 connected
9e5a1174e03c22ce04de5b29bff0f734cd784d57 127.0.0.1:7004@17004 slave 9dba04d53816bc625d85968d440d46b638759463 0 1517366540000 8 connected
77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003@17003 master - 0 1517366540548 3 connected 10923-16383
dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002@18002 slave 2086be0eafa4dc281d69b7b2a2051656a8d7a862 0 1517366539000 2 connected
8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001@17001 slave 9dba04d53816bc625d85968d440d46b638759463 0 1517366538343 8 connected
7a4d196ff9492118ccc45991ddc468f037649430 127.0.0.1:8005@18005 slave 2086be0eafa4dc281d69b7b2a2051656a8d7a862 0 1517366540000 8 connected
2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002@17002 master - 0 1517366540548 2 connected 5461-10922

删除节点

 /usr/local/redis/src/redis-trib.rb del-node 127.0.0.1:7004 758945d6c1429bdbae17fd5df76bb3705aa8a445
>>> Removing node 758945d6c1429bdbae17fd5df76bb3705aa8a445 from cluster 127.0.0.1:7004
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

reblance平衡节点

参数介绍:

host:port               平衡集群节点slot数量,这个是必传参数,用来从一个节点获取整个集群信息,相当于获取集群信息的入口
--weight                节点的权重,格式为node_id=weight,如果需要为多个节点分配权重的话,需要添加多个--weight 参数,即--weight b31e3a2e=5 --weight 60b8e3a1=5,node_id可为节点名称的前缀,只要保证前缀位数能唯一区分该节点即可。 没有传递–weight的节点的权重默认为1。
--use-empty-masters     rebalance是否考虑没有节点的master, 默认没有分配slot节点的master是不参与rebalance的,设置--use-empty-masters可以让没有分配slot的节点参与rebalance
--timeout               设置migrate命令的超时时间
--simulate              设置该参数,可以模拟rebalance操作,提示用户会迁移哪些slots,而不会真正执行迁移操作
--threshold             只有节点需要迁移的slot阈值超过threshold,才会执行rebalance操作
[root@webserver ~]# /usr/local/redis/redis-4.0.2/src/redis-trib.rb rebalance --threshold 1 --weight 2086be0eafa4dc281d69b7b2a2051656a8d7a862=2 --weight 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71=2 --weight 9dba04d53816bc625d85968d440d46b638759463=2 --weight 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce=2 --use-empty-masters  --simulate 127.0.0.1:7001

平衡完节点报错“[WARNING] The following slots are open: 1584” 1584槽已被打开

[root@webserver ~]# /usr/local/redis/redis-4.0.2/src/redis-trib.rb check 127.0.0.1:7001
>>> Performing Cluster Check (using node 127.0.0.1:7001)
S: 8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
M: 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003
   slots:13589-16383 (2795 slots) master
   1 additional replica(s)
M: dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002
   slots:8128-10922 (2795 slots) master
   1 additional replica(s)
S: 2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002
   slots: (0 slots) slave
   replicates d62c612b6cc6505e10fa1cc29e0fbe6eb97268a5
M: d62c612b6cc6505e10fa1cc29e0fbe6eb97268a5 127.0.0.1:7006
   slots:0-1583 (1584 slots) master
   1 additional replica(s)
S: becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003
   slots: (0 slots) slave
   replicates 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71
M: 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce 127.0.0.1:7004
   slots:1584-2666,5461-8127,10923-13588 (6416 slots) master
   1 additional replica(s)
M: 9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001
   slots:2667-5460 (2794 slots) master
   1 additional replica(s)
S: 7a4d196ff9492118ccc45991ddc468f037649430 127.0.0.1:8005
   slots: (0 slots) slave
   replicates dfa1326809d1313614a3704e5a5233383315314b
S: 627205d46cb355406cf0aa12a135ec7869f78581 127.0.0.1:8004
   slots: (0 slots) slave
   replicates 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
[WARNING] Node 127.0.0.1:7006 has slots in importing state (1584).
[WARNING] Node 127.0.0.1:7004 has slots in migrating state (1584).
[WARNING] The following slots are open: 1584
>>> Check slots coverage...
[OK] All 16384 slots covered.

连接redis集群, 取消对1584槽的迁移

[root@webserver ~]# /usr/local/redis/src/redis-cli -h 127.0.0.1 -c -p 7004
127.0.0.1:7004> CLUSTER setslot 1584 stable
OK

使用fix命令修复集群,恢复正常

[root@webserver ~]# /usr/local/redis/redis-4.0.2/src/redis-trib.rb fix 127.0.0.1:7001
>>> Performing Cluster Check (using node 127.0.0.1:7001)
S: 8e4a9545a11eee83ac87a2c0f6536ec226250577 127.0.0.1:7001
   slots: (0 slots) slave
   replicates 9dba04d53816bc625d85968d440d46b638759463
M: 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71 127.0.0.1:7003
   slots:13589-16383 (2795 slots) master
   1 additional replica(s)
M: dfa1326809d1313614a3704e5a5233383315314b 127.0.0.1:8002
   slots:8128-10922 (2795 slots) master
   1 additional replica(s)
S: 2086be0eafa4dc281d69b7b2a2051656a8d7a862 127.0.0.1:7002
   slots: (0 slots) slave
   replicates d62c612b6cc6505e10fa1cc29e0fbe6eb97268a5
M: d62c612b6cc6505e10fa1cc29e0fbe6eb97268a5 127.0.0.1:7006
   slots:0-1583 (1584 slots) master
   1 additional replica(s)
S: becaceb971f775f563a1a3c2ba2a5164bac8bfe7 127.0.0.1:8003
   slots: (0 slots) slave
   replicates 77ed0fcdf832e6ddc38e16d1be1d30bdffa18a71
M: 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce 127.0.0.1:7004
   slots:1584-2666,5461-8127,10923-13588 (6416 slots) master
   1 additional replica(s)
M: 9dba04d53816bc625d85968d440d46b638759463 127.0.0.1:8001
   slots:2667-5460 (2794 slots) master
   1 additional replica(s)
S: 7a4d196ff9492118ccc45991ddc468f037649430 127.0.0.1:8005
   slots: (0 slots) slave
   replicates dfa1326809d1313614a3704e5a5233383315314b
S: 627205d46cb355406cf0aa12a135ec7869f78581 127.0.0.1:8004
   slots: (0 slots) slave
   replicates 41434ada7f3952e593bbc9b586e9bbfd9b7b7dce
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

扩展:php连接redis集群

编辑php.ini
PHP调用Redis Cluster

vim  /usr/local/php/etc/php.ini
修改以下2个参数:
session.save_handler = rediscluster
session.save_path = "seed[]=127.0.0.1:7001&seed[]=127.0.0.1:7002&seed[]=127.0.0.1:7003&timeout=10&read_timeout=10&failover=error"
重启php-fpm:
/etc/init.d/php-fpm restart
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值