首页 > 技术文章 > ETCD添加删除集群成员过程

determined-K 2021-05-18 16:25 原文

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、重启服务即可

 

推荐阅读