Tencent / phxpaxos

The Paxos library implemented in C++ that has been used in the WeChat production environment.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

服务器热启的时候如何使得master不切换?

summerhoum opened this issue · comments

在使用master功能的时候,如果有3个节点ABC,运行起来后,节点B成为了master。然后服务需要热启更新,但是希望热启后,会重新运行paxos,重新进行选举,节点B就有可能成为非master了。有没有办法在热启后让B优先发起成为master的请求呢?

可以通过phxpaxos::Node::SetMasterLease将master租约时长调到比重启时长更大。

也可以让B节点启动完成后通过paxos同步一个信令给其它节点,让他们调用phxpaxos::Node::DropMaster主动暂停一段时间的master续租,这样B节点会重新取得master。

也可以让B节点启动完成后通过paxos同步一个信令给其它节点,让他们调用phxpaxos::Node::DropMaster主动暂停一段时间的master续租,这样B节点会重新取得master。

这样的话,还会出现master切换的情况

可以通过phxpaxos::Node::SetMasterLease将master租约时长调到比重启时长更大。

这样好像也没有办法解决,因为进程停止后,原本的paxos也停止了,再运行进程的时候,paxos会重新运行,重新选举master。有没有办法在开始运行paxos进行master选举的时候,指定某个节点先进行master的提议?

commented

经验上建议将热启动耗时控制在小于租约时间,这样之前的master会优先继续成为master。
指定master的方法不可行,一旦有了租约,必须得严格遵守租约。