首页 > 编程知识 正文

redis选举机制,redis集群选举

时间:2023-05-06 11:12:36 阅读:150027 作者:2211

1、查找选举中服务器的状态(looking ) leader的状态。 服务器处于此状态时,可能当前群集上没有leader,因此需要进入leader选举状态。 leading :领导者的状态。 服务器角色处于leaderfollowing:dmdwl状态。 服务器的角色是浏览器。 观察:观察者的状态。 服务器的作用是观察器。 2 .选举机制每个server首先对自己进行投票,然后将自己的选票与其他server选票进行比较,权重大的获胜,servers使用权重大的更新自己的投票箱。

选举过程:

每个server都会发出选票。群集中的每个服务器都会从群集中的每个服务器接收投票。处理投票规则如下。 优先检查ZXID (事务ID ),ZXID大的一方获胜。 如果zxid相同,myid比myid更胜一筹。 每次统计投票投票时,服务器都会统计投票信息,以确定是否已有一半的机器收到了相同的投票信息。 确定改变服务器状态leader后,每个服务都会更新其状态,如果是follower,则更改为following;如果是leader,则更改为leading。

1、Leader等待Follower的连接,Follower连接到Leader,将最大的ZxId发送到Leader。

2、leader根据follower的zxid确定同步点,至此完成了选举阶段。

3、选举阶段完成后,leader通知follower可以对外服务。 3、集群启动阶段的选举假设有zookeeper01、zookeeper02、zookeeper03三台机器。

1)服务器1启动,对自己进行投票,广播投票信息。 服务器1的状态保持Looking,因为其他计算机没有启动,并且群集无法对外提供服务。

zookeeper01此时的服务状态:

此时zookeeper服务不对外提供服务。 我们进入zkCli的时候,一直报告错误:

2)服务器2启动,对自己投票,投票信息用(myid,zxid )来识别。 同时与服务器1交换结果,由于服务器2的Myid较大,所以服务器1也向服务器2投票。 此时,服务器2获得的票数(2)2)1/2)占过半数,服务器2获胜成为集群leader,集群开始对外提供服务。

通过查看zookeeper02实例的状态,您可以看到它已经是群集的领导者。

查看zookeeper01服务器的日志,可以看到您是以follower的身份加入集群的。

这时,我们进入zkCli,发现已经可以正常加入,证明集群已经对外服务:

3)服务器3启动,在对自己投票的同时,与以前启动的服务器1、2交换信息,如果发现已经有Leader,服务器3只能作为wnddg发挥作用。

4、服务运营时期的Leader选举Leader服务器关闭后,整个集群将暂停对外服务,进入新的Leader选举。 其过程与开始时期的Leader选举过程基本一致。

假设有三台正在运行的服务器: zookeeper01、zookeeper02和zookeeper03,则当前leader为zookeeper02,如果leader在某个时刻挂起,leader选举将在该时刻开始选举过程如下:

1)变更集群状态:删除leader后,其馀服务器将将其服务器状态更改为looking,然后进入leader选举过程。

查看zookeeper01的日志,发现集群的状态处于LOOKING状态。

2)每个server会发出一个投票运行时,每台服务器上的zxid可能不同。 在第一次投票中,server1和server3对自己进行投票,生成1,122、3,122,并分别向群集中的所有计算机广播投票。

3)处理投票zookeeper01的例子中,发现zookeeper03的zxid等于自己,比较两者的myid,zookeeper03的myid=3 zookeeper01的myid=1 广播投票结果为zookeeper03投票的zookeeper03实例也对zookeeper03投票,将投票结果广播到zookeeper01,并维护自己的投票结果池。 最终,zookeeper01和zookeeper03的投票结果池中,zookeeper03获得2票,zookeeper03被选为leader。

4)改变服务器状态开始对外服务。

5、集群中只剩下一个节点时,停止leader(03 )。 此时,只剩下一个01。 发现集群状态再次进入LOOKING状态,停止了对外服务。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。