elasticsearch,Deployment,elasticsearch" /> elasticsearch,Deployment,elasticsearch" />

Deployment 弹性搜索:在没有未分配碎片问题的情况下重新启动集群的正确方法

Deployment 弹性搜索:在没有未分配碎片问题的情况下重新启动集群的正确方法,deployment,elasticsearch,Deployment,elasticsearch,我有一个4节点和5个碎片的弹性搜索(0.90.3)集群。重启时,我看到5个碎片中有4个未分配,集群状态为红色。所以我假设它重新启动的方式是不对的。每隔30秒向每个节点发出一个kill(SIGKILL)命令。这意味着某个节点被杀死,30秒后剩余3个节点中的另一个节点被杀死&依此类推 我尝试了重新分配碎片的解决方案,但在使用该方法手动将主碎片分配给集群之前,一切都不起作用。但手动分配主分片会重置分片的数据,从而导致丢失 如何避免陷入未分配碎片问题?如果我遇到了这个问题,什么是在不丢失数据的情况下进行

我有一个4节点和5个碎片的弹性搜索(0.90.3)集群。重启时,我看到5个碎片中有4个未分配,集群状态为红色。所以我假设它重新启动的方式是不对的。每隔30秒向每个节点发出一个kill(SIGKILL)命令。这意味着某个节点被杀死,30秒后剩余3个节点中的另一个节点被杀死&依此类推

我尝试了重新分配碎片的解决方案,但在使用该方法手动将主碎片分配给集群之前,一切都不起作用。但手动分配主分片会重置分片的数据,从而导致丢失


如何避免陷入未分配碎片问题?如果我遇到了这个问题,什么是在不丢失数据的情况下进行恢复的方法?

重新启动群集的正确方法是使用

这项工作由以下人员完成:

  • 禁用碎片分配
  • 重新启动一个节点(群集变为黄色)
  • 等待它重新加入集群
  • 重新启用分片分配
  • 等待碎片重新分配(集群变为绿色)
  • 在其他节点上重复

  • 您可能需要增加
    索引.恢复.max_bytes_per_second
    群集.路由.分配.节点\u并发\u恢复
    ,以加快步骤5。当集群为黄色时,一些碎片将被取消分配(因为它们位于重新启动的节点上),但这不是问题。读取和写入仍将正常工作。

    我通常会关闭节点,而不是在进程上调用kill命令。不太可能对系统造成任何干扰,因为它将遵循关闭程序-@Nate谢谢,这是我计划要做的事情。你也能解释一下为什么会出现未分配碎片的问题吗?我真的不知道是什么导致了这一切。是的,SIGKILL可能导致了这种情况,但我无法看到SIGKILL之后发生了什么。如果您试图避免停机,是否应该在关闭下一个节点之前重新启动每个节点?@Avish您是对的。但不幸的是,目前情况并非如此。经验教训是一次更新一个节点。但我真的很想知道ElasticSearch在启动时无法再次形成集群的情况。这似乎不再相关,因为5.5文档中说,
    关闭API已被删除