部署
1 | 略 |
空间不足问题
在使用期间我们也观察到 Load 一直突高不下的情况,经检查发现 etcd 内的数据量已达到 600 多兆,所以我们采取了定期压缩 etcd 的措施,将历史事物数据全部清除。具体代码可参考:
获取当前的版本
1
rev=$(ETCDCTL_API=3 etcdctl --endpoints=:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
压缩当前版本之前的所有记录
1
ETCDCTL_API=3 etcdctl compact $rev
清理多余的碎片空间
1
2
3
4清理当前 etcd 节点的碎片空间
ETCDCTL_API=3 etcdctl defrag
清理集群的碎片空间
ETCDCTL_API=3 etcdctl defrag --cluster解除警告
1
2一定要解除警告,否则 etcd 集群还是异常状态
ETCDCTL_API=3 etcdctl alarm disarm
备份脚本
1 | !/usr/bin/env bash |
恢复脚本
1 | 略 |