【问题标题】:org.elasticsearch.cluster.block.ClusterBlockException: blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized]org.elasticsearch.cluster.block.ClusterBlockException:被阻止:[SERVICE_UNAVAILABLE/1/state 未恢复/初始化]
【发布时间】:2021-03-26 20:56:56
【问题描述】:

我使用的是 ELK 6.8.9,所有配置都在我的 docker-compose 文件中。它工作正常,但突然我收到一个错误

org.elasticsearch.action.search.SearchPhaseExecutionException: all shards failed
or org.elasticsearch.cluster.block.ClusterBlockException: blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];

这就是我配置 ELK 的方式

   elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.9
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    volumes:
      - /opt/services/data/elasticsearch:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    user: ${USER_ID}

打电话

curl -XGET 'localhost:9200/_cluster/health/balance_sheet?pretty'-- request
response -clear
{
  "cluster_name" : "docker-cluster",
  "status" : "red",
  "timed_out" : true,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

【问题讨论】:

  • 您关心数据还是可以删除它?你安装卷了吗?您能分享一下您是如何运行 Elasticsearch 容器的吗?
  • 不,我现在不关心数据,我只想以正确的方式配置我的 ELK,并且我还将卷安装在我的 docker compose 文件中,正如您在图像和弹性容器中看到的那样在 docker 容器中运行

标签: docker elasticsearch logstash kibana elk


【解决方案1】:

解决 Elasticsearch 6.5.1 问题的步骤

  1. 禁用只读索引:
curl -X PUT "localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d'{ "index.blocks.read_only" : false } }'
  1. 重启非主节点
  2. 通过rest api查看索引状态:
curl http://10.146.64.42:9200/_cat/indices
  1. 查看集群运行状况:
curl http://10.146.64.42:9200/_cluster/health

一段时间后,弹性集群将恢复绿色健康状态。

【讨论】:

    【解决方案2】:

    假设您不关心数据(正如您在问题的 cmets 中所说 - 您可以删除本地计算机中的 /opt/services/data/elasticsearch 文件夹

    在您的容器为 down 时执行此操作,然后再次运行 up

    【讨论】:

    • 但这将是一个临时解决方案如果我会关心数据会发生什么情况有什么办法可以在不丢失数据的情况下解决这个问题
    • @Er.Garvesh 对。首先,让我们看看它是否解决了您当前的问题。我不确定您做了什么,但听起来碎片已损坏。您是否在索引过程中将容器取下来或其他什么?
    • 不确定索引的中间但有时我重新启动我的服务器我正在对日志存储文件进行一些更改,我还尝试删除索引并重新启动 Elasticsearch 但一段时间后我又一次收到此错误。每当我删除索引并重新启动 Elasticsearch 时,它都会工作一段时间,但它对我来说不是一个固定的解决方案
    • 删除索引后为什么要重启 Elasticsearch?
    • 所以我想这是你的问题。 Elasticsearch 默认复制因子为 1,这意味着您为每个分片复制了两个。两个相同的分片不能存在于同一个节点上,因为您只使用一个节点运行 - 第二个分片因为未分配。您需要将默认复制因子更改为 0 或添加另一个 Elasticsearch 节点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2021-10-28
    • 2017-06-13
    • 2019-11-03
    相关资源
    最近更新 更多