由于es的docker容器,我遇到了一个奇怪的问题,我之前在9200主机端口的docker容器中运行独立的es 7.10(内部docker端口与标准9200和9300 es端口相同),同时,我启动了三个es docker容器(有一个不同的小版本7)(它们应该组成集群,让我们把它命名为docker es cluster)。
这三个es docker容器正在使用主机端口9200、92019202,因此使用9200的群集的es容器由于端口冲突(es 7.10)es容器而无法启动。
因此,我停止了独立的7.10 docker容器,并重新启动了3 cluster es容器,但现在我的其他2个正在侦听9201、9202的es容器没有启动,它们的日志包含以下警告:
{“type”:“server”,“timestamp”:“2020-12-14t15:56:57651+0000”,“level”:“warn”,“component”:“o.e.c.c.clusterformationfailurehelper”,“cluster.name”:“docker cluster”,“node.name”:“es2”,“message”:“master not discovered yet,此节点以前未加入引导(v7+)群集,并且该节点必须发现主合格节点[]来引导集群:hfromhosts providers和[{es2}{ebtsr2xgrvwqpduap\u n\u ew}{tz9frabptamzzle\u 5mavoa}{172.18.0.3}{172.18.0.3:9300}{dim}{ml.machine\u memory=2084032512,xpack.installed=true,ml.max\u open\u jobs=20};节点项0,项0中最后接受的版本0“}
在此之后,我停止了所有docker容器,删除了所有docker图像,做了docker修剪,系统重新启动,但没有解决问题,即使当我从干净状态开始,似乎集群状态是混乱的2个es容器,即使重新启动docker容器,也没有得到修复。
我的docker compose for es容器如下所示,我没有使用卷绑定
es2:
image: "docker.elastic.co/elasticsearch/elasticsearch:<es-version>"
container_name: 2
environment:
- node.name=2
- cluster.name=docker-cluster
- cluster.initial_master_nodes=1,2,3
- discovery.seed_hosts=1,3
- ES_JAVA_OPTS=-Xms1g -Xmx1g
ports:
- "9201:9200"
networks:
- localenv
1条答案
按热度按时间ql3eal8s1#
elasticsearch在新版本(我认为是7.8以上)中有非常严格的规则来连接和分离集群中的节点。您无法轻松分离主节点甚至数据节点。我建议使用elasticsearch节点工具:https://www.elastic.co/guide/en/elasticsearch/reference/current/node-tool.html
最简单的方法是在所有节点上使用以下命令: