Redis Cluster集群模式
Redis哨兵模式:https://blog.csdn.net/liwenyang1992/article/details/133956200
Redis Cluster集群模式示意图:
- Cluster模式是Redis3.0开始推出
- 采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接
- 官方要求:至少6个节点才可以保证高可用,即3主3从;扩展性强、更好做到高可用
- 各个节点会互相通信,采用gossip协议交换节点元数据信息
- 数据分散存储到各个节点上
Redis Cluster 集群 与 Redis Sentinel 有什么不同?
哨兵模式:每个节点持有全量数据,且数据保持一致,为系统Redis高可用
集群模式:每个节点主数据不同,是数据的子集;利用多台服务器构建集群提高超大规模数据处理能力同时提供高可用支持
Redis Cluster 集群如何将数据分散存储?
为什么是16384?
在Redis 集群中槽分配的元数据会不间断的在Redis集群中分发,以保证所有节点都知道槽的分配情况
16384=16k
,在发送心跳包时用char进行bitmap压缩后是2k大小(2×(8bit)×1024(1k)=16k)
通常我们不会部署超过10000个Redis主节点,因此16384就够用了
Redis Cluster 集群构建流程
redis-cluster.conf
#是否开启集群
cluster-enabled yes
#生成的node文件,记录集群节点信息,默认为nodes.conf
cluster-config-file nodes.conf
#节点连接超时时间
cluster-node-timeout 20000
#集群节点映射端口
cluster-announce-port 6379
#集群节点总线端口,节点之间互相通信,常规端口+1万
cluster-announce-bus-port 16379
EOF
cd /usr/local/redis-stable
./src/redis-server redis-cluster.conf
集群构建命令,在任何一个节点上创建集群
./src/redis-cli -a 123456 --cluster create
192.168.31.102:6379 192.168.31.103:6379 192.168.31.104:6379
192.168.31.110:6379 192.168.31.111:6379 192.168.31.112:6379
--cluster-replicas 1
执行效果图:
故障转移示意: