记录一次etcd集群崩溃处理

节后apisix网关突然504

查询发现链接etcd异常

查看etcd 日志 发现 有 no space 错误日志

使用 df -TH 查看系统磁盘,发现有 loop盘占用100% 情况,

image-20240222113035963

处理方法:

直接执行

sudo apt autoremove --purge snapd

清理后重启etcd发现报错 etcd mvcc: database space exceeded

这时需要清理历史版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1、获取当前的版本
$ rev=$(ETCDCTL_API=3 etcdctl --endpoints=:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
# 2、压缩当前版本之前的所有记录
$ ETCDCTL_API=3 etcdctl compact $rev
compacted revision 1231231
# 3、清理多余的碎片空间
$ ETCDCTL_API=3 etcdctl defrag
Finished defragmenting etcd member[127.0.0.1:2379]

# 我在清理多余的碎片空间这一步报错了,但是继续走后面的流程

# 4、解除警告
$ ETCDCTL_API=3 etcdctl alarm disarm
memberID:13803658152347727308 alarm:NOSPACE

清理后发现只有节点0能够启动,就按照删除节点并清理磁盘后加入集群的方式修复其他2个节点

参考:

https://blog.csdn.net/zhongbeida_xue/article/details/119209698

https://blog.csdn.net/justlpf/article/details/133136112