PD Leader重新选举原因

今天遇到PD Leader切换导致系统抖动的情况,想知道非故障情况下PD Leader切换的原因
也没有发生网络隔离,节点也都正常没有出现故障。

1 个赞

非故障情况不会切换

我也感觉pd应该不会随便切换

相应时间点到日志贴一下看看呢

看下监控,在切换的时候,pd leader的负载状态如何。理论上pd leader不会在正常情况下主动做切换。

看着io,cpu,内存这些都没有什么波动

有日志没

这还认真了呢,我去薅日志去。。。

主要都不太了解为啥会切

上链接,也贴到版主交流会里面来,到时候交流探讨一下~

[2022/02/25 11:20:40.046 +08:00] [ERROR] [server.go:1178] [“failed to update timestamp”] [error="[PD:etcd:ErrEtcdKVPut]context deadline exceeded"]
[2022/02/25 11:20:40.304 +08:00] [ERROR] [tso.go:302] [“invalid timestamp”] [timestamp={}]
[2022/02/25 11:20:40.305 +08:00] [ERROR] [tso.go:302] [“invalid timestamp”] [timestamp={}]
[2022/02/25 11:20:40.306 +08:00] [ERROR] [tso.go:302] [“invalid timestamp”] [timestamp={}]
[2022/02/25 11:20:40.716 +08:00] [ERROR] [tso.go:302] [“invalid timestamp”] [timestamp={}]
[2022/02/25 11:20:41.065 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]
[2022/02/25 11:20:41.266 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]
[2022/02/25 11:20:41.466 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]
[2022/02/25 11:20:41.667 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]
[2022/02/25 11:20:41.867 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]
[2022/02/25 11:20:42.067 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]
[2022/02/25 11:20:42.268 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]
[2022/02/25 11:20:42.468 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]
[2022/02/25 11:20:42.669 +08:00] [ERROR] [leader.go:135] [“no etcd leader, check pd leader later”] [error="[PD:member:ErrEtcdLeaderNotFound]etcd leader not found"]

如果非要找个异常指标,就是CPU了

租借期到期是不是也会触发重新选举?

前提也是发生故障或者网络隔离。才会lease

当一个候选人从整个集群的大多数服务器节点获得了针对同一个任期号的选票,那么他就赢得了这次选举并成为领导人。每一个服务器最多会对一个任期号投出一张选票,按照先来先服务的原则(注意:5.4 节在投票上增加了一点额外的限制)。要求大多数选票的规则确保了最多只会有一个候选人赢得此次选举(图 3 中的选举安全性)。一旦候选人赢得选举,他就立即成为领导人。然后他会向其他的服务器发送心跳消息来建立自己的权威并且阻止新的领导人的产生

除非心跳没了…才会重新选举

非故障情况下,一般是网络或者磁盘问题,基本没例外。
可参考PD异常相关的文档
https://docs.pingcap.com/zh/tidb/stable/troubleshoot-cpu-issues#pd-异常

1 个赞

结贴吧,看来大家都出奇的一致,只有故障才会切换Leader

一般就三种情况:
人为驱逐leader;
网络故障;
存储等故障;

总而言之,故障居多

那估计是网络原因,当时是从1切换到2,然后又短时间切换回1,之后就正常了。