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
  1. cd /etc/redis/
  2. mkdir -p redis-cluster/redis-master
  3. mkdir -p redis-cluster/redis-slave
  4. cp /opt/redis-6.2.1/redis.conf /etc/redis/redis-cluster/redis-master/
  5. cp /opt/redis-6.2.1/redis.conf /etc/redis/redis-cluster/redis-slave/
  6. cp /opt/redis-6.2.1/src/redis-cli /etc/redis/redis-cluster/redis-master/
  7. cp /opt/redis-6.2.1/src/redis-cli /etc/redis/redis-cluster/redis-slave/
  8. cp /opt/redis-6.2.1/src/redis-server /etc/redis/redis-cluster/redis-master/
  9. 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

屏幕截图 2021-09-28 160203.png