【问题标题】:issue with adding a new member in etcd cluster在 etcd 集群中添加新成员的问题
【发布时间】:2020-12-11 12:56:10
【问题描述】:

我在 docker 上运行了 3 个节点的 etcd 集群

Node1:

etcd-advertise-client-urls: "http://sensu-backend1:2379"
etcd-initial-advertise-peer-urls: "http://sensu-backend3:2380"
etcd-initial-cluster: "sensu-backend1=http://sensu-backend1:2380,sensu-backend2=http://sensu-backend2:2380,sensu-backend3=http://sensu-backend3:2380"
etcd-initial-cluster-state: "new" # new or existing
etcd-listen-client-urls: "http://0.0.0.0:2379"
etcd-listen-peer-urls: "http://0.0.0.0:2380"
etcd-name: "sensu-backend1"

Node2:

etcd-advertise-client-urls: "http://sensu-backend2:2379"
etcd-initial-advertise-peer-urls: "http://sensu-backend3:2380"
etcd-initial-cluster: "sensu-backend1=http://sensu-backend1:2380,sensu-backend2=http://sensu-backend2:2380,sensu-backend3=http://sensu-backend3:2380"
etcd-initial-cluster-state: "new" # new or existing
etcd-listen-client-urls: "http://0.0.0.0:2379"
etcd-listen-peer-urls: "http://0.0.0.0:2380"
etcd-name: "sensu-backend2"```

Node3:

etcd-advertise-client-urls: "http://sensu-backend3:2379"
etcd-initial-advertise-peer-urls: "http://sensu-backend3:2380"
etcd-initial-cluster: "sensu-backend1=http://sensu-backend1:2380,sensu-backend2=http://sensu-backend2:2380,sensu-backend3=http://sensu-backend3:2380"
etcd-initial-cluster-state: "new" # new or existing
etcd-listen-client-urls: "http://0.0.0.0:2379"
etcd-listen-peer-urls: "http://0.0.0.0:2380"
etcd-name: "sensu-backend3"

我将每个节点作为 docker 服务运行,而没有保留 etcd 数据目录。 当我将所有节点一起启动时,etcd 形成了集群。

如果我删除一个节点并尝试添加为 etcd-initial-cluster-state: "existing" 那么我会收到以下错误 {"component":"etcd","level":"fatal","msg":"tocommit(6264) is out of range [lastIndex(0)]. Was the raft log corrupted, truncated, or lost?","pkg":"raft","time":"2020-12-09T11:32:55Z"}

停止 etcd 后,我使用 etcdctl member remove 从集群中删除了该节点。当我用空的 etcd 数据目录重新启动容器时,我得到集群 ID 不匹配错误。

{"component":"backend","error":"error starting etcd: error validating peerURLs {ClusterID:4bccd6f485bb66f5 Members:[\u0026{ID:2ea5b7e4c09185e2 RaftAttributes:{PeerURLs:[http://sensu-backend1:2380]} Attributes:{Name:sensu-backend1 ClientURLs:[http://sensu-backend1:2379]}} \u0026{ID:9e83e7f64749072d RaftAttributes:{PeerURLs:[http://sensu-backend2:2380]} Attributes:{Name:sensu-backend2 ClientURLs:[http://sensu-backend2:2379]}}] RemovedMemberIDs:[]}: member count is unequal"}

请帮我解决这个问题。

【问题讨论】:

    标签: etcd


    【解决方案1】:

    如果您删除集群中的节点,您也应该手动将其从 etcd 集群中删除,即通过执行“etcdctl remove”。

    并且成员不匹配计数错误是因为 'etcd-initial-cluster' 仍然具有所有 3 个节点条目,您需要在所有容器中也从该字段中删除该已删除节点的条目。

    【讨论】:

    • 我通过手动添加成员解决了
    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 2019-06-04
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多