首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch:在完整集群中,重新启动-碎片没有恢复,而是作为未分配的碎片保留。

Elasticsearch:在完整集群中,重新启动-碎片没有恢复,而是作为未分配的碎片保留。
EN

Stack Overflow用户
提问于 2016-07-20 19:37:44
回答 1查看 1.4K关注 0票数 0

我使用的是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的样本结果(有许多这样的指数)

代码语言:javascript
复制
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的示例结果(有许多这样的碎片)

代码语言:javascript
复制
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结果

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 21:04:42

在完全重新启动群集时,至少需要启动数据节点的仲裁。这是通过index.recovery.initial_shards配置的,这可以防止分配过期的碎片副本。

index.recovery.initial_shards 只有当有足够的节点可分配足够的副本以形成仲裁时,才能恢复主碎片。可将其设置为: 法定人数(违约) 法定人数-1(或一半) 完整 全部-1。 还支持数字值,例如1。

您可以在正式文档这里中了解有关此配置的更多信息。

您可以在本elasticsearch github评论中找到类似的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38489405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档