etcd灾难恢复
灾难恢复
etcd 被设计为能承受机器失败。etcd 集群自动从临时失败(例如,机器重启)中恢复,而且对于一个有 N 个成员的集群能容许 (N-1)/2 的持续失败。当一个成员持续失败时,不管是因为硬件失败或者磁盘损坏,它丢失到集群的访问。如果集群持续丢失超过 (N-1)/2 的成员,则它只能悲惨的失败,无可救药的失去法定人数(quorum)。一旦法定人数丢失,集群无法达到一致而因此无法继续接收更新。
为了从灾难失败中恢复,其中etcd v3 提供快照和修复工具来重建集群而不丢失 v3 键数据。
V2版api
备份数据:
etcdctl backup --data-dir /home/etcd/ --backup-dir /home/etcd_backup
恢复:
etcdctl -data-dir=/home/etcd_backup/ -force-new-cluster
V3版api
在使用 API 3 时需要使用环境变量 ETCDCTL_API 明确指定。
在命令行设置:
export ETCDCTL_API=3
备份数据:
etcdctl snapshot save "/root/$(date +%Y%m%d_%H%M%S)_snapshot.db" --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/node-node1.pem --key=/etc/ssl/etcd/ssl/node-node1-key.pem --endpoints=https://192.168.10.132:2379
恢复:
etcdctl snapshot restore /root/20200520_104454_snapshot.db --data-dir=/var/lib/etcd/
--data-dir:指定数据目录对应于 etcd 服务中配置的 data-dir,该目录要不存在。
#查看etcd节点健康状态
etcdctl --ca-file=/etc/ssl/etcd/ssl/ca.pem --cert-file=/etc/ssl/etcd/ssl/node-node1.pem --key-file=/etc/ssl/etcd/ssl/node-node1-key.pem --endpoint=https://192.168.10.132:2379 cluster-health
#查看连接实例
etcdctl --ca-file=/etc/ssl/etcd/ssl/ca.pem --cert-file=/etc/ssl/etcd/ssl/node-node1.pem --key-file=/etc/ssl/etcd/ssl/node-node1-key.pem --endpoint=https://192.168.10.132:2379 member list
查看etcd的配额使用量
当空间配额满载时,会提示mvcc: database space exceeded
export ETCDCTL_API=3 etcdctl endpoint status --write-out table --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/healthcheck-client.crt --key /etc/kubernetes/pki/etcd/healthcheck-client.key https://192.168.102.4:2379/metrics
如对您有帮助,支持下呗!
微信
支付宝