HAC 集群主节点状态在starting、running之间频繁切换

文章目录

环境

系统平台:N/A

版本:4.5

症状

1、集群主节点状态在starting、running之间频繁来回切换;

2、HAC持续输出警告日志:

复制代码
WARNING: I am the leader but not owner of the lease;

3、etcd 日志持续输出高时钟漂移告警,节点间时钟偏移达 1 分 13 秒;

复制代码
{"level":"warn","ts":"2026-06-30T15:16:42.510106333+0800","caller":"rafthttp/probing_status.go:82","msg":"prober found high clock drift","round-tripper-name":"ROUND_TRIPPER_SNAPSHOT","remote-peer-id":"de112373a298a62","clock-drift":"1m13.697308085s","rtt":"481.862µs"}

4、配置时钟同步后,etcd日志正常,HAC集群日志依然报错,集群主节点状态依然在starting、running之间频繁来回切换

问题原因

1、集群各节点系统时钟存在 73 秒大幅漂移,etcd 依赖时间做租约有效期、Raft 集群状态判定,时差导致租约逻辑错乱;

2、主节点本地进程判定自身是集群 Leader,但 etcd 集群因时间差判定主节点租约已过期,锁失效,HAC持续输出租约丢失告警;

3、HAC检测到租约丢失,判定集群状态异常,主动下发指令重启 HGDB 数据库,数据库启动阶段显示starting,启动完成短暂变为running,循环往复;

4、仅配置时钟同步只能修复后续时间偏差,无法清除时差错乱遗留的 etcd 持久化脏数据(过期租约、冲突集群元数据),因此同步时间后告警、节点切换故障依旧存在。

解决方案

1、全节点完成 chrony/NTP 时钟同步校准,消除节点间时钟偏移;

2、各节点停止 HAC 集群、停止 etcd 服务;

sql 复制代码
#确定集群主备状态
hghactl -c /usr/local/hghac/hghac.yml list

#按照先备后主的顺序关闭hghac服务
systemctl stop hghac.service

#停止所有节点上的etcd服务
systemctl stop etcd.service

3、备份原有 etcd 数据目录,清空 etcd 持久化存储目录

复制代码
#所有节点备份原来的etcd data目录 (存储路径为etcd.yml中data-dir配置,依据实际配置备份)
mv /usr/local/hghac/etcd/data    /usr/local/hghac/etcd/data.bak

4、依次启动 etcd 服务、HAC 集群,由 HAC重新向干净的 etcd 写入元数据

sql 复制代码
#启动所有节点的etcd服务
systemclt start etcd.service

#检查etcd集群状态
etcdctl endpoint health --write-out=table

按照先主后备的顺序启动hac集群

#启动hghac服务
systemctl start  hghac.service

#确定集群主备状态
hghactl -c /usr/local/hghac/hghac.yml list

5、观察日志不再输出租约丢失告警,主节点稳定保持running状态,故障修复。

相关推荐
imDwAaY15 分钟前
MySQL 存储引擎是什么?
android·数据库·mysql
星云低代码开发平台22 分钟前
ERP 与 CRM 客户信用核对:业务键、时点和权限验收
大数据·数据库·人工智能
xiaogai_gai32 分钟前
销售出库单同步实战:旺店通→金蝶云星空的单一策略深度拆解
大数据·前端·数据库
下页、再停留35 分钟前
【C#桌面客户端系列学习-11】将SQLite数据库打包到exe里
数据库·c#·visual studio
下页、再停留36 分钟前
【C#桌面客户端系列学习-12】封装SQLite数据库基础操作工具类(CURD)
数据库·c#·visual studio
最强小杰36 分钟前
Claude Opus 4.8 调用报 529 怎么办?并发限制触发过载——退避策略与降级方案完整指南
运维·网络·python·ai
LYmatch40 分钟前
2024年408真题第41~47题汇总解析
数据库
程序员Sunday1 小时前
Redis 缓存穿透、击穿、雪崩怎么区分?从回源压力找原因
数据库·redis·缓存
我科绝伦(Huanhuan Zhou)1 小时前
磐维数据库(PanWeiDB)日常运维命令总结
运维·数据库
guo_wen_qiang1 小时前
redis实现秒杀功能-超卖&库存遗留问题的解决
数据库·redis·缓存