本文主要介绍在使用etcd集群过程中遇到的空间满的问题的解决方法。
解决方法
切换到有etcd可执行文件的目录下:
xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx换成自己etcd集群的真实IP
查看当前状态1
2
3./etcdctl --endpoints=xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
endpoint health
处理etcd空间满的问题:
1 | export ETCDCTL_API=3 |
1.获取当前etcd数据的修订版本(revision)1
rev=$(ETCDCTL_API=3 ./etcdctl --endpoints=:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*')
2.整合压缩旧版本数据1
ETCDCTL_API=3 ./etcdctl compact $rev
3.执行碎片整理1
./etcdctl --endpoints=http://xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx defrag
4.取消告警信息1
./etcdctl --endpoints=http://xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx alarm disarm
根据实践发现只配置auto-compaction-retention只会做碎片整理,不会实际减少空间大小; 如果需要减少大小还是需要使用etcdctl compact 和 etcdctl defrag清理空间
总结
其实可以将本文的步骤写成一个shell脚本然后放到crontab中去每天执行一次就OK了。