我使用elasticsearch 2.1.1并拥有一个包含8个节点的集群(3个主节点+5个数据节点)。我尝试过完全群集重启但最终出现了奇怪的问题(我无法在日志中找到任何问题)。
我只是关闭所有节点并重新启动它们。到目前为止一切都进展顺利,但重启后碎片没有恢复,他们只是处于未分配状态。
我的群集有足够的磁盘空间,我重新启动了所有数据节点。仍然所有碎片都没有恢复。 有人可以帮我这个吗?
我尝试调整gateway.recover_after_nodes
和"cluster.routing.allocation.enable": "all"
之类的配置,但无法成功。
更新
这里的问题最初是我的副本4,即我在5个数据节点中包含5个主数据副本。当我重新启动集群时,我只启动了3个数据节点,其中包含最多3个数据副本但是为了防止分配过时的分片副本,ES使用名为index.recovery.initial_shards
的配置,其默认值为仲裁(在我的情况下为4)。因此,为了使分片从完全群集重启中恢复,我需要至少建立仲裁数据节点或者需要相应地减少副本(在我的情况下,<= 3)。
修改
GET /_cat/indices?v
的示例结果(包含许多这样的索引):
health status index pri rep docs.count docs.deleted store.size pri.store.size
red open kafka8-2016.07 10 3
red open kafka8-2016.06 10 3
red open .kibana 1 3
GET /_cat/shards?v
index shard prirep state docs store ip node
kafka8-2016.07 5 p UNASSIGNED
kafka8-2016.07 5 r UNASSIGNED
kafka8-2016.07 5 r UNASSIGNED
kafka8-2016.07 5 r UNASSIGNED
kafka8-2016.07 1 p UNASSIGNED
kafka8-2016.07 1 r UNASSIGNED
kafka8-2016.07 1 r UNASSIGNED
kafka8-2016.07 1 r UNASSIGNED
GET _cat/nodes?v
的结果:
host ip heap.percent ram.percent load node.role master name
host1 ip1 0 82 0.00 d - data-3
host2 ip2 0 87 0.00 d - data-4
host3 ip3 1 80 0.00 - * master-2
host4 ip4 1 73 0.00 - m master-1
host4 ip5 1 84 0.00 d - data-1
答案 0 :(得分:0)
当您进行完整群集重新启动时,您需要至少启动数据节点的法定数量。这是通过index.recovery.initial_shards
配置的,可防止分配过时的分片副本。
index.recovery.initial_shards
主要分片只能恢复 如果有足够的节点可用于分配足够的副本 形成法定人数。它可以设置为:
仲裁(默认)
quorum-1(或一半)
全
全1。
数值是 也支持,例如1。
您可以在官方文档here
中详细了解此配置 中找到类似的问题