- 集群总线 cluster bus
- 哈希槽 hash slot
- 哈希标签 hash tag
redis集群的TCP端口:
- 集群中的每个节点都需要打开2个TCP连接。正常的命令端口(比如6379)用来处理客户端连接,将这个端口值增加10000,得到16379,就是数据端口。
- 第二个端口用于集群总线,这是节点之间使用二进制协议的通信通道。集群总线用于故障检测、配置更新、故障迁移授权等等。客服端应该总是连接正常的redis命令端口,永远都不该尝试直接去和集群总线端口通信。但依然要确认防火墙对两个端口都是放行的,否则集群节点之间将无法通信。
- 命令端口和集群总线端口之间的偏移量是固定的10000.
正常工作的redis集群,每个节点的状态:
- 用于和client通信的普通的客服端通信端口(比如6379)应该对所有需要连接到集群的客户端开放,包括集群的其它节点(它们使用客户端通信端口来完成键的迁移)
- 集群总线端口(客户端通信端口 + 10000)必须从其它集群节点是可达的
如果你没有把这两个端口都打开,那集群可能不会正常工作。集群总线使用一种不同的二进制协议进行节点之间的数据交换,这样的方式更适合在使用小带宽和低处理时间的节点之间交换信息。
redis集群使用16384个哈希槽,也就是2的14次方个。槽位计算使用键的CRC16值对16384取模。
redis集群支持对多个键操作,只要执行这条命令设计的所有key都属于相同的哈希槽。用户可以通过哈希标签来强制使多个键都进入相同的哈希槽。
哈希标签是指对于一个key,只有包含在花括号中的子串才会被用来计算hash值,比如this{foo}key和that{foo}key就会被分配到相同的哈希槽中,因为他们拥有相同的hash标签,可以用在处理多个键的单一命令中。
redis集群配置参数:
副本迁移
- 集群总是会从拥有最多副本的主节点迁移副本
- 为获得自动副本迁移的好处,你需要为某个主节点多添加一些副本,任意选一个主节点就行
- 配置参数cluster-migration-barrier控制副本迁移的特性
节点版本升级
从节点的升级很容易,直接关机然后用新版本重启即可。主节点的升级分以下步骤:
- 使用”CLUSTER FAILOVER”命令触发一次手动故障迁移
- 等待主节点变为从节点
- 使用升级从节点的方法来完成升级
- 如果需要让升级完的从节点再次变成主节点,那就再出发一次手动故障迁移
集群操作相关
创建集群配置文件
参考链接