03-patroni-节点选举
【摘要】 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)