环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7,UOS(海光),银河麒麟svs(X86_64)
版本:4.5,6.0
症状
应用无法连接数据库,无法对外提供服务。
问题原因
检查操作系统日志记录,发现故障时间段内etcd集群各节点间出现长时间的网络故障,导致etcd集群不可用。 etcd集群是存储集群主备切换仲裁信息的分组件,导致数据集群无法维持正常的运行状态,首先降级为只读集群。
解决方案
整体处理思路为停止hghac服务,首先恢复etcd集群,之后选择合适的主节点启动hghac服务,最后恢复整个hac集群的服务,详细步骤如下:
1、按照先备后主的顺序停止整个集群的hghac服务
#确定集群主备状态
hghactl -c /usr/local/hghac/hghac.yml list
#按照先备后主的顺序关闭hghac服务
systemctl stop hghac.service
2、恢复etcd服务
#停止所有节点上的etcd服务
systemctl stop etcd.service
#所有节点备份原来的etcd data目录
cp /usr/local/hghac/etcd/data /usr/local/hghac/etcd/data.bak
#清空所有节点的data目录
cd /usr/local/hghac/etcd/data
rm -rf *
#启动所有节点的etcd服务,各节点启动服务时间不要超过5秒
systemclt status etcd.service
#检查etcd集群状态
etcdctl V2版本
etcdctl cluster-health
etcdctl V3版本
etcdctl endpoint health --write-out=table
3、按照先主后备的顺序启动hac集群
#启动主节点hghac服务
systemctl start hghac.service
#检查hghac服务状态
systemctl status hghac.service
#启动备节点hghac服务
systemctl start hghac.service
#确定集群主备状态
hghactl -c /usr/local/hghac/hghac.yml list