redis cluster是redis真正的集群模式,它具备master-slave的复制和读写分离模式模式,具备master-slave的高可用和主备切换,支持多master的slot分布式存储。
环境准备,部署3主3从,部署6台redis,设备有限,故如下匹配。
master1 | 192.168.211.140 |
---|---|
slave1 | 192.168.211.140 |
master2 | 192.168.211.141 |
slave2 | 192.168.211.141 |
master3 | 192.168.211.142 |
slave3 | 192.168.211.142 |
cd /etc/redis/
mkdir -p redis-cluster/redis-master
mkdir -p redis-cluster/redis-slave
cp /opt/redis-6.2.1/redis.conf /etc/redis/redis-cluster/redis-master/
cp /opt/redis-6.2.1/redis.conf /etc/redis/redis-cluster/redis-slave/
cp /opt/redis-6.2.1/src/redis-cli /etc/redis/redis-cluster/redis-master/
cp /opt/redis-6.2.1/src/redis-cli /etc/redis/redis-cluster/redis-slave/
cp /opt/redis-6.2.1/src/redis-server /etc/redis/redis-cluster/redis-master/
cp /opt/redis-6.2.1/src/redis-server /etc/redis/redis-cluster/redis-slave/
所有节点修改redis配置文件
#vim /etc/redis/redis-cluster/redis-master/redis.conf
#vim /etc/redis/redis-cluster/redis-slave/redis.conf
#所有节点均要修改,不同点在于bind 和port
bind 192.168.211.140 # 修改bind项,监听自己的IP
protected-mode no # 修改,关闭保护模式
port 7001 # 修改,redis监听端口,
daemonize yes # 以独立进程启动
cluster-enabled yes # 取消注释,开启群集功能
cluster-config-file nodes-6379.conf # 取消注释,群集名称文件设置,无需修改
cluster-node-timeout 15000 # 取消注释群集超时时间设置
appendonly yes
启动所有节点
cd /etc/redis/redis-cluster/redis-master/
redis-server redis.conf
cd /etc/redis/redis-cluster/redis-slave/
redis-server redis.conf
启动redis集群
#--cluster-replicas 表示副本数,-a后面是密码,如果设置了密码的用第二个执行
redis-cli --cluster create 192.168.211.140:7001 192.168.211.140:7002 192.168.211.141:7003 192.168.211.141:7004 192.168.211.142:7005 192.168.211.142:7006 --cluster-replicas 1
redis-cli --cluster create 192.168.211.140:7001 192.168.211.140:7002 192.168.211.141:7003 192.168.211.141:7004 192.168.211.142:7005 192.168.211.142:7006 --cluster-replicas 1 -a reids6379
操作成功如下
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.211.141:7004 to 192.168.211.140:7001
Adding replica 192.168.211.142:7006 to 192.168.211.141:7003
Adding replica 192.168.211.140:7002 to 192.168.211.142:7005
M: 499a274d31e3ff49ee2e793a3f91ff2d0a83de23 192.168.211.140:7001
slots:[0-5460] (5461 slots) master
S: 5f5a66f5f7d5a3a36c1c1e79820de27809844da0 192.168.211.140:7002
replicates 8170f9962cf75f6c14961ffcca02390dddaca229
M: 18d681a290df012f37357431513ec18299d31466 192.168.211.141:7003
slots:[5461-10922] (5462 slots) master
S: 915e9d3ef02f0c994071761a66b19f5fb27a64e8 192.168.211.141:7004
replicates 499a274d31e3ff49ee2e793a3f91ff2d0a83de23
M: 8170f9962cf75f6c14961ffcca02390dddaca229 192.168.211.142:7005
slots:[10923-16383] (5461 slots) master
S: d153d929e4339d96f4b30d02084d257c6e113c88 192.168.211.142:7006
replicates 18d681a290df012f37357431513ec18299d31466
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
>>> Performing Cluster Check (using node 192.168.211.140:7001)
M: 499a274d31e3ff49ee2e793a3f91ff2d0a83de23 192.168.211.140:7001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 8170f9962cf75f6c14961ffcca02390dddaca229 192.168.211.142:7005
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: d153d929e4339d96f4b30d02084d257c6e113c88 192.168.211.142:7006
slots: (0 slots) slave
replicates 18d681a290df012f37357431513ec18299d31466
S: 915e9d3ef02f0c994071761a66b19f5fb27a64e8 192.168.211.141:7004
slots: (0 slots) slave
replicates 499a274d31e3ff49ee2e793a3f91ff2d0a83de23
S: 5f5a66f5f7d5a3a36c1c1e79820de27809844da0 192.168.211.140:7002
slots: (0 slots) slave
replicates 8170f9962cf75f6c14961ffcca02390dddaca229
M: 18d681a290df012f37357431513ec18299d31466 192.168.211.141:7003
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
查看集群状态
redis-cli --cluster check 192.168.211.140:7001