https://coreos.com/etcd/docs/latest/admin_guide.html
只有當集群中多數節點正常的情況下,才可以進行運行時的配置管理。如果集群多數節點損壞,集群就失去了寫入數據的能力。官方推薦3,5,7為etcd cluster數目,其中7可以滿足大部分情況
通常情況下,如果是Follower節點宕機,如果剩余可用節點數量超過半數,集群可以幾乎沒有影響的正常工作。如果是Leader節點宕機,那么Follower就收不到心跳而超時,發起競選獲得投票,成為新一輪term的Leader,繼續為集群提供服務。
在最初啟動etcd集群時,發現核心節點的數量已經滿足要求時,多余的自動啟用Proxy模式,若核心節點掛掉,proxy模式的節點並不會轉化為普通節點,etcd目前沒有任何機制會自動去變化整個集群總共的節點數量
節點遷移和替換
當你節點所在的機器出現硬件故障,或者節點出現如數據目錄損壞等問題,導致節點永久性的不可恢復時,就需要對節點進行遷移或者替換。當一個節點失效以后,必須盡快修復,因為etcd集群正常運行的必要條件是集群中多數節點都正常工作。
遷移一個節點需要進行四步操作:
- 暫停正在運行着的節點程序進程
- 把數據目錄從現有機器拷貝到新機器
- 使用api更新etcd中對應節點指向機器的url記錄更新為新機器的ip
- 使用同樣的配置項和數據目錄,在新的機器上啟動etcd
在最初啟動etcd集群時,發現核心節點的數量已經滿足要求時,多余的自動啟用Proxy模式,若核心節點掛掉,proxy模式的節點並不會轉化為普通節點
災難恢復
當集群超過半數的節點都失效時,就需要通過手動的方式,ectd提供了一套備份數據並無損重建cluster 的方法
- 備份數據到新機器
- 利用數據和 -force-new-cluster重新創建一個單node集群
- 修改peer url將其他節點加入
為了最大化集群的安全性,一旦有任何數據損壞或丟失的可能性,你就應該把這個節點從集群中移除,然后加入一個不帶數據目錄的新節點。