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

相关推荐
其实防守也摸鱼1 小时前
教育信息技术应用创新---基础软件信息赛
运维·服务器·数据库·github·copilot
GG-_-Bond1 小时前
9.1-kv存储持久化的设计
数据库
苏生Susheng1 小时前
【软件实施】Windows 服务器运维实战
java·运维·服务器·windows·spring boot·javaweb·实施
Gauss松鼠会1 小时前
【GaussDB】GaussDB 组件、节点和AZ故障仲裁与切换流程
运维·服务器·数据库·gaussdb
myy-learn2 小时前
32 SQLITE数据库
jvm·数据库·sqlite
JavaPub-rodert2 小时前
Redis 和 MySQL 如何保证数据一致性?从业务方案到底层原理完整讲解
数据库·redis·mysql
大牧师2 小时前
TypeORM 学习教程
数据库·sql·学习·node.js·orm·nest.js·typeorm
数字孪生视频孪生2 小时前
空间智能技术|跨镜轨迹全域可溯,无感定位无扰赋能落地
大数据·运维·人工智能·重构·架构
ComputerInBook2 小时前
linux包管理工具——yum(YellowdogUpdaterModified)
linux·运维·服务器·yum·dnf