Redis集群主节点选择slave节点作为主节点主要的条件是:
- 主节点不可用
检测到当前主节点不可用时(网络隔离、进程崩溃等),需要选择新的主节点。 - Slave节点数据一致
只有slave节点与主节点数据完全一致时,才有资格成为下一个主节点。 - Slave节点在线
只有正在运行的slave节点,才有可能被提升为主节点。 - Slave节点负载不超限
slave节点如果CPU/内存接近阈值,可能无法很好处理写请求负载。 - Slave节点投票数最多
使用哨兵模式时,不同节点需要相互选举,投票多的选为主节点。 - Slave节点优先级最高
可以为节点分配不同的优先级,优先级高的优先被选为主节点。
总的来说,Redis集群选择slave节点为主节点,主要考虑:
- 当前主节点不可用
- Slave节点数据一致
- Slave节点已在线
- Slave节点负载足够
- Slave节点获得最多投票数
- Slave节点优先级最高
综上,主要基于两个方面:
- 数据一致性:保证数据不丢失
- 资源利用:选择负载较轻的节点
两者结合,可以使得下一个主节点更加可靠。