【问题标题】:Why is my Elasticsearch cluster on localhost stuck in yellow status instead of green?为什么我在 localhost 上的 Elasticsearch 集群卡在黄色状态而不是绿色状态?
【发布时间】:2015-05-08 23:13:18
【问题描述】:

我通过创建 3 个不同的配置文件然后运行以下命令,在我的开发框上启动了 3 个弹性搜索实例:

elasticsearch.bat -Des.config="C:\Program Files\elasticsearch-1.5.1\config\elasticsearch.yml"
elasticsearch.bat -Des.config="C:\Program Files\elasticsearch-1.5.1\config\elasticsearch_1.yml"
elasticsearch.bat -Des.config="C:\Program Files\elasticsearch-1.5.1\config\elasticsearch_2.yml"

这似乎已成功创建 3 个节点,但集群运行状况如下:

{
   "cluster_name": "elasticsearch",
   "status": "yellow",
   "timed_out": false,
   "number_of_nodes": 3,
   "number_of_data_nodes": 3,
   "active_primary_shards": 135,
   "active_shards": 135,
   "relocating_shards": 0,
   "initializing_shards": 0,
   "unassigned_shards": 135,
   "number_of_pending_tasks": 0
}

多播已启用(因为它是默认设置)并且所有配置文件都具有默认设置。我在每一个中所做的唯一明确设置是:

script:
    disable_dynamic: false

我需要它,因为我使用的是脚本字段,但我认为此设置不太可能对我当前的问题产生任何影响。我希望集群应该是绿色的,因为默认的副本数是 1。出于某种原因,elasticsearch 认为副本分片处于非活动状态,但我不知道为什么它没有激活副本。以下链接似乎与我所做的类似,但实现了绿色状态的集群:

http://thediscoblog.com/blog/2013/09/03/effortless-elasticsearch-clustering/

有什么想法我可能做错了吗?

更新 为了给 Andrei 给出的答案提供一些背景信息,查看日志会发现重复出现的如下行:

[2015-05-08 16:04:25,284][WARN ][cluster.routing.allocation.decider] [Robert Kelly] high disk watermark [10%] exceeded on [IZ6wN0KQQMSjjtkhfkQnMQ][Yith] free: 6.2gb[5.2%], shards will be relocated away from this node
[2015-05-08 16:04:25,284][WARN ][cluster.routing.allocation.decider] [Robert Kelly] high disk watermark [10%] exceeded on [AQ8BnsURQsCywKxkjStu7A][Robert Kelly] free: 6.2gb[5.2%], shards will be relocated away from this node
[2015-05-08 16:04:25,284][WARN ][cluster.routing.allocation.decider] [Robert Kelly] high disk watermark [10%] exceeded on [ZlH32e6JT9C_VcAfNtxV0A][Maxam] free: 6.2gb[5.2%], shards will be relocated away from this node

【问题讨论】:

  • 集群是黄色的,因为您的所有分片都未分配:"unassigned_shards": 135, 但是,我不明白为什么会这样。你能读写集群吗?日志中是否有任何内容?
  • 发布GET /_cluster/settingsGET /_cat/indices?v的结果。
  • 和配置文件不一样:elasticsearch.bat -Des.config="C:\Program Files\elasticsearch-1.5.1\config\elasticsearch_1.yml" elasticsearch.bat -Des.config="C:\Program Files\elasticsearch-1.5.1\config\elasticsearch_1.yml"
  • 是的,抱歉,这是一个错字,我现在已经更正了
  • 那些命令的输出呢? :-)

标签: elasticsearch


【解决方案1】:

您没有足够的磁盘空间,将不再分配副本。运行

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.disk.threshold_enabled": false
  }
}

禁用保护机制。但这是一个临时解决方案,当然您需要释放一些磁盘空间。此外,集群重启后错误会再次出现。

如果你希望它是永久的,运行

PUT /_cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.disk.threshold_enabled": false
  }
}

不同之处在于后一种情况下的设置是persistent,这意味着它会在集群重启后继续存在。

这个,或change the limits of the threshold

【讨论】:

  • 感谢安德烈这个答案很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 2021-10-25
相关资源
最近更新 更多