03-patroni-节点选举

举报
snowofsummer 发表于 2021/12/22 08:42:27 2021/12/22
【摘要】 01,集群正常状态一主两从。# 节点A是主节点,B和C是从节点。节点A会定期向etcd发送请求以更新领导者密钥,默认情况是10s更新一次(这是由参数loop_wait控制),更新的时候带了一个TTL。心跳机制: TTL > = loop_wait + retry_timeout * 2patroni进程每隔10秒(loop_wait)都会更新Leader key和TTL,如果Leader节点...

01,集群正常状态

一主两从。

# 节点A是主节点,B和C是从节点。节点A会定期向etcd发送请求以更新领导者密钥,默认情况是10s更新一次(这是由参数loop_wait控制),更新的时候带了一个TTL。

心跳机制:

 TTL > = loop_wait + retry_timeout * 2

patroni进程每隔10秒(loop_wait)都会更新Leader key和TTL,如果Leader节点异常patroni进程无法及时更新Leader key,则会重新进行2次尝试(retry_timeout)。
如果尝试了仍然无效。这个时候时间超过了TTL(生存时间)。领导者密钥就会过期,然后触发新的选举

 

2,当主未发送心跳信息

 

# 发生新的选举很简单
节点b和节点c此时会收到通知,当前已经没有领导者了,我们必须举行新的选举。

 3,选举新主

 # Patroni之间也通过rest api互相访问。他们首先会和曾经的领导者通信,会发现访问超时,然后他们通过rest api访问Patroni进程知道自己的wal_position位置。假设节点b和节点c现在都处于相同的wal_position,都等于100,那么他们会同时访问etcd,发送创建密钥的请求,然后开始领导争夺战。 

 # 两个节点到etcd之间,Node C率先创建了密钥。Node C上面就执行promote,成为了新的主库,Node B将成为新的从库。它会选择从Node C来进行复制。然后Node C就成为了leader。 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。