Redis 集群
时间:2018/12/6 10:42:49
参考:
Redis 集群#
主从复制机制#
-
副本迁移:假设集群中有主节点 A,B,C,从节点 s1,s2,s3,s4。对应状态 A -> (s1, s2),B -> (s3), C -> (s4) 当B的从节点s3挂掉之后,集群会自动从 s1 s2 中选出一个从节点作为 B 的从节点。
-
主节点升级:手动触发故障迁移,把主节点转换为从节点,然后停止运行主节点并升级主节点,重新运行主节点,手动触发故障迁移把从节点恢复为主节点。
数据不一致场景#
-
主从复制。主服务挂掉,从服务被提升为主服务之后,由于主从同步有延迟,可能有一部分数据没有同步到从服务器。虽然Redis提供了命令同步调用机制,保证数据同步到从服务器时再返回保存成功,但是还是会存在不一致的情况主服务数据发送到从服务器之后挂掉,此时数据已经同步到从服务,但是主服务却返回给客户端同步错误,此时客户端认为数据没有保存成功,但是当从服务切换为主服务之后数据已经有了。
-
网络分区。假设有 A,B,C 三个主服务器,对应的从服务器为 A1,B1,C1,客户端为 Client。假设出现分区1
(A,C,A1,B1,C1)
和 分区2(B)
,Client。分区出现一段时间之后 B1会被提升为主服务器,Client的请求都会发送到 B 服务器,当分区恢复的时候 Client B成为B1的备份服务器,客户端在出现网络分区这一段时间发送到B的数据,就丢失了。
常用命令#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
集群配置#
配置项 | 参数值 | 说明 |
---|---|---|
cluster-enabled | yes/no | 是否开启集群模式 |
cluster-config-file | 文件名 | 保存集群信息,用户不可编辑 |
cluster-node-timeout | 单位 ms | 集群节点最大不可用时间,主机点不可用超过时间,从节点将会被提升为主节点,当没有主节点时集群将不可用 |
cluster-require-full-coverage | yes/no | 当key不能映射到集群的节点时是否停止接收写入命令 |
cluster-migration-barrier | 默认值1 | 副本迁移之后主节点最少保留多少个从节点 |