ETCD添加删除集群成员过程
ETCD删除成员过程
检查ID
[root@master ~]# etcdctl member list --endpoints="https://172.21.130.169:2379,https://172.21.130.168:2379,https://172.28.17.85:2379" --write-out=table
+------------------+---------+--------+-----------------------------+-----------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+--------+-----------------------------+-----------------------------+------------+
| 418294c668bdb445 | started | etcd-3 | https://172.28.17.85:2380 | https://172.28.17.85:2379 | false |
| 4c978cbca553cd70 | started | etcd-1 | https://172.21.130.169:2380 | https://172.21.130.169:2379 | false |
| cc0bba643b3d8ce1 | started | etcd-2 | https://172.21.130.168:2380 | https://172.21.130.168:2379 | false |
+------------------+---------+--------+-----------------------------+-----------------------------+------------+
根据ID删除成员
[root@master ~]# etcdctl member remove 418294c668bdb445 --endpoints="https://172.21.130.169:2379,https://172.21.130.168:2379"
Member 418294c668bdb445 removed from cluster 28d9bab5a0f18219
查看删除后的结果
[root@master ~]# etcdctl member list --endpoints="https://172.21.130.169:2379,https://172.21.130.168:2379,https://172.28.17.85:2379" --write-out=table +------------------+---------+--------+-----------------------------+-----------------------------+------------+ | ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER | +------------------+---------+--------+-----------------------------+-----------------------------+------------+ | 4c978cbca553cd70 | started | etcd-1 | https://172.21.130.169:2380 | https://172.21.130.169:2379 | false | | cc0bba643b3d8ce1 | started | etcd-2 | https://172.21.130.168:2380 | https://172.21.130.168:2379 | false | +------------------+---------+--------+-----------------------------+-----------------------------+------------+
删除了那么我们要怎么添加节点?
1、在失去的那台节点上查看一下现在的状态(因为只是服务挂了所以etcdctl请求查看还是可以的)
2、删除现有的数据(不删除你可以试试,没有明显报错你会很精彩,因为数据内的local-member-id还是之前的)
3、在失去的那台节点上添加节点到集群,为什么?
1)因为添加完会临时在机器上生成新增加的环境变量,重启服务时会直接调用。
2)还有人说那删除数据后直接吧state状态改成new重启就好了,很不幸的告诉你抱歉不好使。因为在把成员移出集群的时候他会做一个记录,而且你在用new加入集群的时候用的id通过计算还是之前删除的那个id。所以直接检测到那个记录你被永久移除导致失败。)
May 18 15:49:43 iZuf6h1kfgutxc3el68z2lZ etcd: {"level":"warn","ts":"2021-05-18T15:49:43.599+0800","caller":"etcdserver/server.go:1095","msg":"server error","error":"the member has been permanently removed from the cluster"}
3)还有人会认为把主的数据拷贝到新节点或者故障节点不就好了,但是抱歉他会强你拷贝过去数据的节点位置。(如下)
[root@master1 ~]# etcdctl member list --endpoints="https://172.21.130.169:2379,https://172.21.130.168:2379,https://172.28.17.85:2379" --write-out=table
+------------------+---------+--------+-----------------------------+-----------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+--------+-----------------------------+-----------------------------+------------+
| 4c978cbca553cd70 | started | etcd-3 | https://172.21.130.169:2380 | https://172.28.17.85:2379 | false |
| cc0bba643b3d8ce1 | started | etcd-2 | https://172.21.130.168:2380 | https://172.21.130.168:2379 | false |
+------------------+---------+--------+-----------------------------+-----------------------------+------------+
正确做法:
1、删除旧数据
2、执行加入命令etcdctl member add etcd-3 --peer-urls="https://172.28.17.85:2380" --endpoints="https://172.21.130.169:2379,https://172.21.130.168:2379"
3、重启服务即可