災難恢復
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