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状态,故障修复。

相关推荐
CoderYanger10 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
wafrdggh13 小时前
2026电商快递批量查询怎么用?固乔助手模板设置评测
大数据·数据库·小程序
一个天蝎座 白勺 程序猿14 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
龙腾AI白云17 小时前
仿真到现实(Sim-to-Real)迁移:跨越仿真与现实鸿沟
数据库·机器学习·plotly·知识图谱·tornado
分布式存储与RustFS17 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希12318 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾19 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
freejackman19 小时前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
.痞老板.20 小时前
mysql初阶--增删改查操作
数据库·mysql
Peter-OK1 天前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql