首页 > 解决方案 > Elasticsearch/docker数据节点关机后无法重新连接

问题描述

我有基于 sebp/elk docker 映像的 ELK 单节点集群。我尝试将数据节点添加到此集群,并且由于数据节点中不需要 Kibana,因此我使用 Elastic 文档中预期的基本弹性搜索图像。

我的主节点 docker-compose.yml 如下

version: "3.3"
services:
  elk:
    image: sebp/elk
    ports:
      - "5601:5601"
      - "9200:9200"
      - "9300:9300"
      - "5044:5044"
    volumes:
      - type: bind
        source: /etc/logstash
        target: /etc/logstash
      - type: bind
        source: /etc/elasticsearch
        target: /etc/elasticsearch
      - type: bind
        source: /nas03/elasticsearch
        target: /var/lib/elasticsearch

/etc 目录已从容器中移动一次,现在在重新启动后仍然存在。主节点运行良好。我正在尝试使用这个 docker-compose.yml 添加数据节点:

version: '3.3'
services:
  es11:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.11.2
    container_name: es11
    environment:
      - node.name=es11
      - network.publish_host=depot-elk11
      - cluster.name=elasticsearch
      - discovery.seed_hosts=depot-elk
      - cluster.initial_master_nodes=depot-elk
      - bootstrap.memory_lock=true
      - node.roles=data
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - type: bind
        source: /nas04/es11_data
        target: /usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300

首先启动节点应用到集群中,我看到它是在_cat/nodes请求中添加的。如果我把它放下并且容器被移除然后它再次启动 - 它不会识别集群。错误是timed out while waiting for initial discovery state - timeout: 30s

如果我放下节点并删除容器,然后我清理数据目录-它将启动并重新与集群关联,一切都会好起来的。这意味着不仅数据目录应该在容器删除中保持不变。查看容器,我发现 /usr/share/elasticsearch/config 中只有 elasticsearch.keystore 最近更新,我已将其添加到卷列表中,但没有帮助。

我究竟做错了什么?

标签: dockerelasticsearchdocker-compose

解决方案


推荐阅读