当前位置:网站首页>ETCD单节点故障应急恢复
ETCD单节点故障应急恢复
2022-08-11 05:32:00 【!&君子九思&!】
系列文章目录
前言
生产环境中,经常遇到etcd集群出现单节点故障或者集群故障。针对这两种情况,进行故障修复。本文介绍etcd的单节点故障时,故障应急的恢复手册
一、总体恢复流程
由于etcd的raft协议,整个集群能够容忍的故障节点数为(n-1)/ 2,因此在单个节点故障时,单个集群的仍然可用,不会影响业务的读写。
整体的恢复流程如下
二、详细恢复指导
2.1 环境信息
使用本地的vmstation创建3个虚拟机,信息如下
| 节点名称 | 节点IP | 节点配置 | 操作系统 | Etcd版本 | Docker版本 |
|---|---|---|---|---|---|
| etcd1 | 192.168.82.128 | 1c1g 20g | CentOS7.4 | v3.5 | 13.1 |
| etcd2 | 192.168.82.129 | 1c1g 20g | CentOS7.4 | v3.5 | 13.1 |
| etcd3 | 192.168.82.130 | 1c1g 20g | CentOS7.4 | v3.5 | 13.1 |
假设etcd2节点异常,并且本地的数据已经损坏。
2.2 集群删除异常节点
通过member remove命令删除异常节点,此时整个集群只有2个节点,不会触发master重新选主,集群正常运行。
查看当前集群状态
export ETCDCTL_API=3
export ETCD_ENDPOINTS=192.168.92.128:2379,192.168.92.129:2379,192.168.92.130:2379
etcdctl --endpoints=$ETCD_ENDPOINTS --write-out=table member list
etcdctl --endpoints=$ETCD_ENDPOINTS --write-out=table endpoint status

2.2 删除异常节点数据
2.2.1 删除异常member
docker stop etcd2
2.2.2 删除数据
由于数据通过-v /data/etcd:/data/etcd的方式挂载,因此删除对应的数据,会清理etcd数据。
rm -rf /data/etcd/*
2.3 集群重新添加节点
通过如下命令,将异常节点添加到集群中,等对应的节点启动后,就会自动完成集群数据同步和选主
export ETCDCTL_API=3
export ETCD_ENDPOINTS=192.168.92.128:2379,192.168.92.129:2379,192.168.92.130:2379
etcdctl --endpoints=$ETCD_ENDPOINTS member add etcd2 --peer-urls=http://192.168.92.129:2380

2.4 启动节点
2.4.1 完整的启动脚本为
[[email protected] ~]#
[[email protected] ~]# cat start_etcd.sh
/bin/sh
name="etcd2"
host="192.168.92.129"
cluster="etcd1=http://192.168.92.128:2380,etcd2=http://192.168.92.129:2380,etcd3=http://192.168.92.130:2380"
docker run -d --privileged=true -p 2379:2379 -p 2380:2380 -v /data/etcd:/data/etcd --name $name --net=host quay.io/coreos/etcd:v3.5.0 /usr/local/bin/etcd --name $name --data-dir /data/etcd --listen-client-urls http://$host:2379 --advertise-client-urls http://$host:2379 --listen-peer-urls http://$host:2380 --initial-advertise-peer-urls http://$host:2380 --initial-cluster $cluster --initial-cluster-token tkn --initial-cluster-state existing --log-level info --logger zap --log-outputs stderr
注意,由于etcd的数据已经被删除,因此当前节点重启时,从其他的节点获取数据,因此需要调整参数–initial-cluster-state,从new改成existing
--initial-cluster-state existing
2.4.2 查看日志
docker logs 8bf31834f8ce
2.4 等待集群数据完成同步并恢复
查看当前集群的member信息
export ETCDCTL_API=3
export ETCD_ENDPOINTS=192.168.92.128:2379,192.168.92.129:2379,192.168.92.130:2379
etcdctl --endpoints=$ETCD_ENDPOINTS --write-out=table member list
etcdctl --endpoints=$ETCD_ENDPOINTS --write-out=table endpoint status

总结
由于整体集群有多副本,因此单节点异常时,并不会导致整个集群异常,只要正常启动对应的节点并同步数据即可恢复。
边栏推荐
- unity小技巧
- lua-复制一份table,修改新的table,不改变原来的table
- 无胁科技-TVD每日漏洞情报-2022-7-29
- C语言-6月8日-给定一个字符数组‘i am a student’ 统计字符a的个数并进行输出
- Lua 快速入门(四)——多脚本执行
- (3) Software testing theory (understanding the knowledge of software defects)
- Threatless Technology-TVD Daily Vulnerability Intelligence-2022-7-30
- Redis学习笔记【一】
- GoAhead Server 环境变量注入(CVE-2021-42342)漏洞复现
- 无胁科技-TVD每日漏洞情报-2022-7-27
猜你喜欢
随机推荐
C语言两百题(0基础持续更新)(1~5)
无胁科技-TVD每日漏洞情报-2022-7-26
(3) Software testing theory (understanding the knowledge of software defects)
无胁科技-TVD每日漏洞情报-2022-8-4
BaseActvity的抽取
OpenGL 摄像机(Camera)类的创建
企业怎样申请SSL证书?
2022年全国职业技能大赛网络安全竞赛试题B模块自己解析思路(5)
Vulnhub靶机--Chronos
Redis学习笔记【四】完结
【LeetCode-147】对链表进行插入排序
项目笔记——随记
Lua 快速入门(三)——表(Table)
C语言-7月19日-指针的学习
Threatless Technology-TVD Daily Vulnerability Intelligence-2022-7-20
2022年全国职业技能大赛网络安全竞赛试题B模块自己解析思路(3)
Vulnhub靶机--DC7
poco源码简单分析
日志收集分析器(ELK)
无胁科技-TVD每日漏洞情报-2022-7-21









