解决Elasticsearch分配问题

上周,我在笔记本电脑上处理了一些Logstash数据。 大约有350个包含logstash数据的索引和一个保存Kibana 4的元数据的索引。 尝试启动单节点群集时,我必须等待一段时间,直到所有索引可用为止。 可以使用某些API来查看启动过程的进度。

群集运行状况API提供有关群集状态的常规信息,并指示群集运行状况是绿色,黄色还是红色。 一段时间后,未分配的分片数量不再更改,但群集仍保持红色状态。

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
  "cluster_name" : "elasticsearch",
  "status" : "red",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1850,
  "active_shards" : 1850,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 1852
}

一个碎片无法恢复:1850还可以,但应该在1851年。要查看问题,我们可以使用cat index命令显示所有索引及其健康状况。

curl http://localhost:9200/_cat/indices
[...]
yellow open logstash-2014.02.16 5 1 1184 0   1.5mb   1.5mb 
red    open .kibana             1 1                        
yellow open logstash-2014.06.03 5 1 1857 0     2mb     2mb 
[...]

.kibana索引没有变黄。 它仅包含一个无法分配的主分片。

重新启动节点并关闭和打开索引没有帮助。 查看elasticsearch-kopf,我可以看到主碎片和副本碎片都没有被确定(您需要勾选“ hide special”复选框以查看索引)。

幸运的是,有一种方法可以使群集再次处于黄色状态。 我们可以在节点上手动分配主要分片。

Elasticsearch提供了可用于在节点上分配分片的集群重新路由API 。 尝试分配.kibana索引的碎片时,我首先遇到了异常。

curl -XPOST "http://localhost:9200/_cluster/reroute" -d'
{
    "commands" : [ {
          "allocate" : {
              "index" : ".kibana", "shard" : 0, "node" : "Jebediah Guthrie"
          }
        }
    ]
}'

[2015-01-30 13:35:47,848][DEBUG][action.admin.cluster.reroute] [Jebediah Guthrie] failed to perform [cluster_reroute (api)]
org.elasticsearch.ElasticsearchIllegalArgumentException: [allocate] trying to allocate a primary shard [.kibana][0], which is disabled

幸运的是,该消息已告诉我们问题所在:默认情况下,由于存在丢失数据的危险,不允许您分配主分片。 如果您想分配一个主分片,则需要通过设置属性allow_primary明确地告诉它Elasticsearch。

curl -XPOST "http://localhost:9200/_cluster/reroute" -d'
{
    "commands" : [ {
          "allocate" : {
              "index" : ".kibana", "shard" : 0, "node" : "Jebediah Guthrie", "allow_primary": "true"
          }
        }
    ]
}'

对我来说,这有所帮助,并且重新分配了我的分片,并且群集运行状况变为黄色。

kibana重新分配

我不确定是什么引起了问题,但很可能与我在本地的工作方式有关。 我定期将笔记本电脑送入睡眠状态,这是您永远不会在服务器上执行的操作。 但是,我在本地几次看到此问题,因此有理由写下修复该问题的必要步骤。

翻译自: https://www.javacodegeeks.com/2015/02/fixing-elasticsearch-allocation-issues.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值