ETCD集羣運維—備份及容災恢復

etcd是一個開源的分佈式鍵值對數據庫,他的每個節點都有一份數據的copy,當有節點故障時保證了高可用性。etcd使用Raft算法來保證一致性。算法


特別提醒:若使用v3備份數據時存在v2的數據則不影響恢復數據庫

若使用v2備份數據時存在v3的數據則恢復失敗api


etcd V2新增節點(刪除數據後從新加入)分佈式

適用於單節點故障,從新加入集羣ide

V2與V3新增節點的區別僅在於member add參數url


中止etcd服務spa

# systemctl stop etcdrest


# 清空etcd data數據日誌

# mv /var/lib/etcd/default.etcd /tmpserver


# 查看etcd列表

# /opt/kubernetes/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://172.30.0.89:2379,https://172.30.0.81:2379,https://172.30.2.10:2379" member list


# remove 已存在的etcd name

# /opt/kubernetes/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://172.30.0.89:2379,https://172.30.0.81:2379,https://172.30.2.10:2379" member remove a4ec138b3529c929


# 新增etcd節點

# V2

# /opt/kubernetes/bin/etcdctl --ca-file=/opt/kubernetes/ssl/ca.pem --cert-file=/opt/kubernetes/ssl/server.pem --key-file=/opt/kubernetes/ssl/server-key.pem member add etcd03 https://172.30.0.89:2380

# V3

# ETCDCTL_API=3  /opt/kubernetes/bin/etcdctl --endpoints=https://172.30.2.10:2379,etcd02=https://172.30.0.81:2379,etcd03=https://172.30.0.89:2379  --cacert=/opt/kubernetes/ssl/ca.pem   --cert=/opt/kubernetes/ssl/server.pem   --key=/opt/kubernetes/ssl/server-key.pem  member add  etcd03 --peer-urls="https://172.30.0.89:2380" 


# 修改該節點etcd配置ETCD_INITIAL_CLUSTER_STATE="existing"

# 同時重啓全部etcd

# systemctl restart etcd


etcd數據備份恢復(集羣不可用,災難恢復)

注意:單節點備份一份當前或歷史數據便可,在恢復的時候須要同步到全部節點,若只想恢復一臺節點的,則會在系統日誌裏報request cluster ID mismatch

沒有節點加入,由於是會建立一個新的集羣id ,至關於從新搭建一臺新的cluster(數據保留,cluster id變動)


# 中止apiserver(集羣不可用狀態,確認無寫入的話也能夠不停)


# 中止etcd服務

systemctl stop etcd


# 數據備份

# ETCDCTL_API=3 /opt/kubernetes/bin/etcdctl snapshot  save /var/lib/etcd/etcd_backup/etcd_$(date "+%Y%m%d%H%M%S").db


# 同步備份數據到各個節點

# scp etcd_$(date "+%Y%m%d%H%M%S").db  集羣各etcd節點


# 移除數據目錄 

mv /var/lib/etcd/default.etcd /tmp


# 快照恢復數據  修改name 和 initial-advertise-peer-urls爲當前節點的便可

# ETCDCTL_API=3 /opt/kubernetes/bin/etcdctl snapshot --cacert=/opt/kubernetes/ssl/ca.pem --cert=/opt/kubernetes/ssl/server.pem --key=/opt/kubernetes/ssl/server-key.pem  restore /var/lib/etcd/etcd_20190903102702.db --name=etcd01 --data-dir=/var/lib/etcd/default.etcd --initial-cluster="etcd01=https://172.30.2.10:2380,etcd02=https://172.30.0.81:2380,etcd03=https://172.30.0.89:2380" --initial-cluster-token="etcd-cluster" --initial-advertise-peer-urls=https://172.30.2.10:2380


# 重啓etcd

相關文章
相關標籤/搜索