ES集群状态一直yellow状态引发的思考

背景:

我们开发环境最近一个月ES集群总是yellow状态,一些索引总是yellow,但Es集群各节点是正常的。yello说明索引的副本有故障导致。那为什么副本一直无法恢复?

原因分析:

Es集群因为部分索引的副本状态为Unassigned Replica那为什么集群各节点是好的,坏的副本不能自动恢复呢?ES是有平衡机制的,正常情况下副本丢失是可以从主分片那重新获取到并重建的。

回顾下Es平衡机制,ES平衡机制需要满足一定的条件才会触发,详细如下

cluster.routing.allocation.allow_rebalance

Always   标识rebalance一直会开着

Indices_primaries_active  标识Es的主分片都上线才开始rebalance

Indices_all_active   标识ES主分片和副本分片都上线才开始rebalance.  默认配置

如果各节点分片数量不均衡根据平衡策略条件必须主分片和副本都上线后才会触发。那是否可以先把有问题的索引副本数改成0,然后在修改成指定副本通过这种方式来恢复副本?

PUT my-index/_settings

{

  "number_of_replicas": 1

}

但是我所遇到的情况是副本改成0后集群状态变成green,重新修改副本为1后又变成yellow。感觉很奇怪。

通过查看指定索引的setting信息发现一些秘密,执行GET _settings?pretty。筛选指定索引的配置发现多了一个冷热数据的配置信息cluster.routing.allocation.require.temperature=warn。之前我们开发做过集群节点冷热数据配置,从索引的属性上来看索引被设置为了冷数据。那是否有可能是因为被打上冷数据标签导致的问题呢?

通过修改索引冷热数据属性来尝试是否能让索引重新平衡分片。命令如下

PUT my_index/_settings

{

  "routing": {

    "allocation": {

      "require": {

        "temperature":null

      }

    }

  }

}

完成上述操作后目前集群状态以恢复正常。这里留下一个疑问?难道索引被打成冷数据后会影响副本重建吗?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当 Elasticsearch 集群的状态yellow 时,表示所有的主分片都已经分配到了某些节点上,但是某些副本分片尚未分配到节点上。这种情况下,Elasticsearch 集群仍然可以工作,但是如果任何一个节点失败,那么可能会导致数据丢失或不可用。 要解决这个问题,您可以考虑以下几个步骤: 1. 扩大集群规模:如果您的集群规模较小,则可以尝试增加节点数以获得更多的分片和副本分片。这样可以使分片和副本分片更容易在节点之间分配。 2. 提高硬件配置:如果您的节点硬件配置较低,则可以考虑升级硬件配置以提高节点性能。 3. 调整分片数量:您可以尝试调整分片数量以更好地适应您的数据和节点。例如,如果您的数据非常小,那么您可以考虑减少分片数量。 4. 重新分配副本分片:您可以手动重新分配副本分片以确保每个节点都有足够的副本分片。您可以使用 Elasticsearch 的 API 来执行此操作。例如,您可以使用 _cat/shards API 来查看分片和节点分配情况,然后使用 _cluster/reroute API 来重新分配副本分片。 5. 检查节点状态:您可以检查节点的状态以确保它们正常运行并且可以与其他节点通信。您可以使用 Elasticsearch 的 API 来查看节点状态。例如,您可以使用 _cat/nodes API 来查看节点列表和状态。 总之,解决 Elasticsearch 集群状态yellow 的问题需要您根据实际情况采取适当的措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~轩辕三易~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值