Elasticsearch:完全集群重启时 - Shards没有恢复并保留为未分配的分片

时间:2016-07-20 19:37:45

标签: elasticsearch kibana

我使用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

1 个答案:

答案 0 :(得分:0)

当您进行完整群集重新启动时,您需要至少启动数据节点的法定数量。这是通过index.recovery.initial_shards配置的,可防止分配过时的分片副本。

  

index.recovery.initial_shards

     

主要分片只能恢复   如果有足够的节点可用于分配足够的副本   形成法定人数。它可以设置为:

     

仲裁(默认)

     

quorum-1(或一半)

     

     

全1。

     

数值是   也支持,例如1。

您可以在官方文档here

中详细了解此配置

您可以在此elasticsearch github comment

中找到类似的问题