etcd问题踩坑cluster ID mismatch

记一次etcd集群搭建报错

systemctl restart  etcd.service
Job for etcd.service failed because a timeout was exceeded. See "systemctl status etcd.service" and "journalctl -xe" for details.
报错信息如下:
request sent was ignored (cluster ID mismatch: peer[f73f6335fab3c75e]=903824bb6a071282, local=6a166fcbd8bb0e32)

etcdctl cluster-health
cluster may be unhealthy: failed to list members
Error:  client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: connect: connection refused
; error #1: client: endpoint http://127.0.0.1:2379 exceeded header timeout
error #0: dial tcp 127.0.0.1:4001: connect: connection refused
error #1: client: endpoint http://127.0.0.1:2379 exceeded header timeout

问题产生过程:

环境:三个节点的etcd集群
hosts信息如下

ip1 node1
ip2 node2
ip3 node3

使用yum安装etcd,然后定义了data-dir并给以用户权限

配置文件格式 其他两个节点对应修改ip即可

ETCD_NAME="etcd1"
ETCD_DATA_DIR="/opt/etcd/data/etcd1.etcd"
ETCD_LISTEN_PEER_URLS="http://ip1:2380"
ETCD_LISTEN_CLIENT_URLS="http://ip1:2379,http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://ip1:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://ip1:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://ip1:2380,etcd2=http://ip2:2380,etcd3=http://ip3:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_ADVERTISE_CLIENT_URLS="http://ip1:2379"

同时在三个节点启动etcd 执行systemctl start etcd.service,node1出现问题
node1产生了类似于僵尸进程的样子,etcd由父进程 1–systemd拉起,怎么也kill不掉(kill之后接着启动)
然后此时node2 node3是一个有两个节点的集群

由于node1关不掉,便换了一台新的服务器作为节点加入,问题依然是上方报错
后验证了selinux 防火墙 网络端口等条件都是正常的

但节点作为集群启动(ETCD_INITIAL_CLUSTER=“etcd1=http://ip1:2380”),发现启动成功,集群状态正常
怀疑是数据目录缓存问题
于是三台机器停止etcd服务,并清空datadir,然后同时启动,问题得到解决,集群正常。

分析&&总结

1、node1 etcd服务不停被systemd拉起原因还没排查到
2、重做集群的时候要把另外的服务器的数据目录情况下(应该是清空某个缓存,因为重新定义了配置文件中服务器的ip后并没有生效)


版权声明:本文为qq_39570637原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。