Redis Sentinel应用Raft协议来解决分布式系统一致性问题,即选举redis master的问题。我们在使用redis哨兵架构时,经常强调哨兵节点数量需要设置为3或5或7。假定哨兵节点数量为N,那么quorum票数就设置为N/2+1 。
实际的业务情况有很多变化,部署规模也不等,在设计Redis哨兵高可用架构时如果没留意其中的一些细节,很容易进坑。所以我结合实际工作经验设计出下面这样一道题目,通过具体使用场景结合提问的形式,促进大家思考和掌握其中蕴含的知识。
题目
假定有4个主机,分别各部署一个redis和一个哨兵,组成4节点的哨兵架构。
那么:
1、如果quorum设置为1
- 网络通信均正常的条件下,可以正常选举master吗?
- 网络通信均正常的条件下,如果此时有2个哨兵进程当机了,还能正常选举出新的redis master吗?
- 如果我们的4个哨兵是这样部署的,A机房2个,B机房2个,两个机房使用专线连通,如果这时专线中断了,请问A、B机房中哨兵会表现出什么样的选举行为?
2、如果quorum设置为2
- 网络通信均正常的条件下,可以正常选举master吗?
- 网络通信均正常的条件下,如果此时有2个哨兵进程当机了,还能正常选举出新的redis master吗?
- 如果我们的4个哨兵是这样部署的,A机房2个,B机房2个,两个机房使用专线连通,如果这时专线中断了,请问A、B机房中哨兵会表现出什么样的选举行为?
- 如果我们的4个哨兵是这样部署的,A机房1个,B机房3个,两个机房使用专线连通,如果这时专线中断了,请问A、B机房中哨兵会表现出什么样的选举行为和结果?
3、如果quorum设置为3
- 网络通信均正常的条件下,可以正常选举master吗?
- 网络通信均正常的条件下,如果此时有2个哨兵进程当机了,还能正常选举出新的redis master吗?
- 如果我们的4个哨兵是这样部署的,A机房2个,B机房2个,两个机房使用专线连通,如果这时专线中断了,请问A、B机房中哨兵会表现出什么样的选举行为?
- 如果我们的4个哨兵是这样部署的,A机房1个,B机房3个,两个机房使用专线连通,如果这时专线中断了,请问A、B机房中哨兵会表现出什么样的选举行为和结果?
答案
晚几天再公布,给大家留些自己思考和交流答案的时间。