docker - 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 最近更新,我已将其添加到卷列表中,但没有帮助。
我究竟做错了什么?
解决方案
推荐阅读
- regex - PR 命名约定的正则表达式
- reactjs - 使用 nextjs 'catch all' 路由获取数据
- php - Laravel API - 传递给 TokenGuard::__construct() 的参数 1 必须实现接口 UserProvider
- powerbi - 在 Power BI 中按列分组,然后对组表求和
- servicestack - ServiceStack PocoDynamo C# 查询嵌套对象属性
- python - 找到二维数组中的最大值
- ios - 如何使用 coremltools 4.0 更改 MLMultiArray 数据类型?
- google-sheets - 根据谷歌表格中的背景颜色更改单元格值
- android - 有没有办法在改造中按字母顺序对查询参数进行排序
- java - 无法使用 Maven 运行测试来运行我的项目