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将其他节点加入
为了最大化集群的安全性,一旦有任何数据损坏或丢失的可能性,你就应该把这个节点从集群中移除,然后加入一个不带数据目录的新节点。