Redis Cluster 集群解决方案
Redis Cluster 集群解决方案
- 多个 Redis 实例协同进行
- 采用 slot (槽)分割数据,是 CRC16 与 16384 取模后分散
- 主从结构和选举算法,保证每个节点的可靠性
- 客户端可以连接任意一个 node 进行操作

- 所有的 redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽。
- 节点的 fail 是通过集群中超过半数的节点检测失效时才生效。
- 客户端与 redis 节点直连,不需要中间 proxy 层,客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
- redis-cluster 把所有的物理节点映射到 [0-16383] slot 上,cluster 负责维护 node <-> slot <-> value

Redis Cluster 注意事项
- 不完全支持批量操作:mset、mget
- 事务不能跨节点支持
- 不支持多实例
- key 是最小粒度
- 最少 6 个才能保证组成完整高可用的集群
- 连接的时候只需要连接 1 台服务器即可。
- 如果 1 个主从连接宕机的话,那么集群就宕机了。
Redis Cluster 配置步骤
(建议使用官方安装包的方式安装 redis,不要使用 apt-get install 或者 yum 直接安装)
- 分别安装 6 台 服务器,三个主节点,三个从节点
我这里采用的是虚拟机,相应的 ip 地址分别为:
- 192.168.174.128 (28 号服务器)
- 192.168.174.129 (29 号服务器)
- 192.168.174.130 (30 号服务器)
- 192.168.174.131 (31 号服务器)
- 192.168.174.132 (32 号服务器)
- 192.168.174.133 (33 号服务器)
- 配置
redis.conf配置文件 (在所有的服务器上操作)
vim /etc/redis/redis.conf
- 第一步:
1 | |
- 第二步:
1 | |
- 第三步:开启集群相关参数
1 | |
- 第四步:开启集群配置文件
1 | |
- 第五步:开启集群超时时间
1 | |
- 安装
ruby组件。如果不安装这个软件,集群的时候,会报组件错误。你需要在那台服务器上面做集群,你就需要在哪台服务器上安装这个组件,并不是每台服务器上面都安装。这里采用第一台服务器做集群,因此在第一台服务器上安装ruby组件。(在 28 号服务器上操作)
1 | |
- 安装其他组件 (在 28 号服务器上操作)
1 | |
- 配置集群 (在 28 号服务器上操作)
因为我是直接采用的 apt-get install 的方式安装的 redis 因此,服务器上面的 redis 工具 redis-trib.rb 在 /usr/share/doc/redis-tools/examples 目录下。如果你是通过安装包安装的 redis 那么请直接到 redis 解压目录中执行命令,如: ~/redis-4.0.9/src/redis-trib.rb
1 | |

如果出现如下报错时

问题原因:
slot 插槽被占用了(这是搭建集群前时,以前 redis 的旧数据和配置信息没有清理干净。)
解决方案如下:
用 redis-cli 登录到每个节点执行 flushall 和 cluster reset 就可以了


- 连接集群 (在任意一台服务器上操作)
这里我挑选的是 ip 地址为 : 192.168.174.131 的服务器,特别说明下,当执行 keys 命令的时候,只针对于当前服务器
1 | |
- 测试
1 | |

1 | |

1 | |

Redis Cluster 集群解决方案
https://www.chendujin.com/posts/663a091e.html