集群开启时钟同步校验,服务器间时钟偏移超过阈值会直接禁止 Leader 选举,请说明底层原理;生产环境如何规避时钟漂移导致集群不可写?
时钟同步影响选举的底层原理
1. 选举模型是"依赖时钟同步"的方案
OceanBase 以分区为单位,多个全能副本(FULL)在一个选举周期内进行预投票 → 投票 → 计票广播 → 结束投票,最终选出唯一 Leader。选举成功后,各副本签订认定 Leader 的租约(Lease) 。Leader 在租约到期前不断发起连任,正常情况一直连任成功。
2. Paxos 选举协议检查消息时间差
选举过程中,副本间通过 RPC 传递投票消息。Paxos 协议会检查每条消息在发送端和接收端的时间差,并设置最大允许延迟:
表格
| 检查项 | 最大允许值 |
|---|---|
| 两节点间时钟偏差上限 | 100ms |
| RPC 延迟上限 | 200ms |
当消息延迟超过上限时,该消息被判定为过期消息,被选举模块忽略。大量过期消息导致选举无法正常进行 → 无主或脑裂。