记一个etcd节点重加入集群
2020-07-06 tech etcd 2 mins 1031 字
最近重装了一个etcd节点。记录一下过程。
-
修改systemctl中
etcd.service
的配置,--initial-cluster-state existing # 注意将new 改为 existing
原本应该这样就可以了。不过我绕了个弯路,我将节点删除后又重新添加进来。也记录一下:
-
查看节点信息
etcdctl --endpoints=$ENDPOINTS member list
查到需要删除的节点。
-
删除节点
etcdctl --endpoints=$ENDPOINTS member remove b9057cfdc8ff17ce
-
清理该节点上的member信息
例如我的:
rm -rf /var/local/etcd/etcddata/member
-
添加节点
etcdctl --endpoints=$ENDPOINTS member add node03 https://xxx.xxx.xxx.xxx:2380
此时将会显示类似如下信息:
ETCD_NAME="xxxxx" ETCD_INITIAL_CLUSTER="8bfe795f8d91446a89c3c1370da1302f=http://xxx:2380,118b5e074f2e4ad0b461f2399f08f72d=http://xxx:2380,infra3=http://xxx:2380" ETCD_INITIAL_CLUSTER_STATE="existing"
-
预先查看日志
在原有节点和新节点上分别查看日志,如果有错误可以快速发现:
journalctl -u etcd -f
-
新节点运行etcd
systemctl restart etcd
大功告成。
期间还遇到下面的错误,把原有 data 清空,根据上面的步骤进行后就解决了:
etcdserver: cannot get the version of member 2e91fd4f1285776 (Get http://xxx.xxx.xxx.xxx:2380/version: dial tcp xxx.xxx.xxx.xxx:2380: i/o timeout)