【发布时间】:2019-09-19 09:18:06
【问题描述】:
背景:
- 有一个旧的 Elasticsearch 集群有 3 个主节点,最小节点为 2 个
- 一台服务器死机,无法很快恢复。
- 左边两个节点不能选举主节点,他们在抱怨:
master not discovered or elected yet, an election requires at least 2 nodes
with ids from [DnW5_lRBRhinokBu542Mvw, LSS3ms9gSlmisxOgLmQZXw, nE5cqi4OQKui5VSWz1hW7g],
have discovered [{dc17-esmaster-04}{LSS3ms9gSlmisxOgLmQZXw}{GyJYhRLLTB-SC66nu3d__w}....
master not discovered or elected yet, an election requires at least 2 nodes
with ids from [DnW5_lRBRhinokBu542Mvw, LSS3ms9gSlmisxOgLmQZXw, nE5cqi4OQKui5VSWz1hW7g],
have discovered [{dc17-esmaster-01}{rxzeJiTHQ2OlQK8iLAj-VQ}{ICKLYhcsSHy2hDajZs0cPw}{
我的理解:
- 通常,一个主节点宕机没有影响,2个节点应该可以工作
- 但是,在我的情况下,主节点的 ID 之一不在数组中:[DnW5_lRBRhinokBu542Mvw, LSS3ms9gSlmisxOgLmQZXw, nE5cqi4OQKui5VSWz1hW7g],如上面的第二个日志所示,该节点的 ID 是 rxzeJiTHQ2OlQK8iLAj-VQ。
- 所以,我猜事实是节点 1 之前从未成功加入集群,只有另外两个节点在工作,今天,一个节点死了,所以,整个集群崩溃了。
如何解决?我认为有两种选择:
- 将该节点的ID修改为该数组中的一个ID,但我不知道该怎么做,节点是自动生成的...
- 让ES集群忘记这个数组[DnW5_lRBRhinokBu542Mvw, LSS3ms9gSlmisxOgLmQZXw, nE5cqi4OQKui5VSWz1hW7g] 重新发现集群,我知道是保存在global-xx.st文件中的,但它是二进制文件,根本无法编辑,我害怕破坏数据完整性..
也许还有第三种选择:
- 再添加两个主节点,使整个集群有5个节点,所以,有3个节点活着,集群可以工作,然后移除两个坏节点..
请给我一些建议。
谢谢。
【问题讨论】:
标签: elasticsearch