记etcd节点故障恢复

  • 故障原因:
    电脑断电,导致etcd集群有一个节点启动失败,比对了数据目录,应该是数据不一致导致的。
  • 故障现象:
    etcd服务启动失败,日志中有如下报错:
    recovering backend from snapshot error: database snapshot file path error
故障处理过程
  • 集群中删除故障节点
etcdctl --endpoints="https://192.168.171.200:2379,https://192.168.171.201:2379,https://192.168.171.202:2379" member list   //获取member ID 
36b6dcf065a1b19f: name=etcd03 peerURLs=https://192.168.171.202:2380 clientURLs=https://192.168.171.202:2379 isLeader=false
7a3d1a92c3588a59: name=etcd02 peerURLs=https://192.168.171.201:2380 clientURLs=https://192.168.171.201:2379 isLeader=false
a0ac85faa030bb7e: name=etcd01 peerURLs=https://192.168.171.200:2380 clientURLs=https://192.168.171.200:2379 isLeader=true
etcdctl --endpoints="https://192.168.171.200:2379,https://192.168.171.201:2379,https://192.168.171.202:2379" member remove 36b6dcf065a1b19f  //删除故障节点
  • 删除故障节点数据目录 确保member数据被清除
cd /var/lib/etcd   //默认目录
rm -rf *
  • 将故障节点重新加入集群
etcdctl --endpoints="https://192.168.171.200:2379,https://192.168.171.201:2379,https://192.168.171.202:2379" member add etcd03 https://192.168.171.202:2380
命令会输出节点加入集群需要的启动参数,具体如下:
ETCD_NAME="etcd03"
ETCD_INITIAL_CLUSTER="etcd03=https://192.168.171.202:2380,etcd02=https://192.168.171.201:2380,etcd01=https://192.168.171.200:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"
  • 启动故障节点etcd服务
由于是旧节点重新加入集群,只需要修改ETCD_INITIAL_CLUSTER_STATE参数为existing
sed -i 's/new/existing/g' /opt/etcd/cfg/etcd
systemctl restart etcd  //启动服务
systemctl status etcd		//检查服务状态
  • 检查etcd集群状态
etcdctl --endpoints="https://192.168.171.200:2379,https://192.168.171.201:2379,https://192.168.171.202:2379" cluster-health
小结:

该适用于集群中某个节点故障,例如数据丢失,服务无法启动。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值