搭建3节点ES集群设置内置账号密码时遇master_not_discovered_exception错误
Elasticsearch集群密码设置失败与连接问题排查
1. 集群发现核心配置缺失
仅配置cluster.name和network.host不足以让节点形成集群,必须添加节点发现与主节点初始化参数到elasticsearch.yml:
# 集群种子节点(填写Swarm集群中ES服务的名称,假设服务名为es11、es12、es13) discovery.seed_hosts: ["es11", "es12", "es13"] # 初始候选主节点列表(首次启动集群时需要,后续集群稳定后可移除) cluster.initial_master_nodes: ["es11", "es12", "es13"]
Docker Swarm环境下,容器通过服务名跨节点通信,缺失这些配置会导致节点无法找到彼此,进而无法选举主节点,触发master_not_discovered_exception。
2. SSL与端口配置错误
(1)HTTP端口访问问题
- 若未启用HTTP层SSL,执行密码设置时应使用
http://localhost:9200而非https,否则会出现连接拒绝;若已启用SSL,需确保elasticsearch.yml中配置了完整的HTTP SSL参数:xpack.security.http.ssl.enabled: true xpack.security.http.ssl.keystore.path: /usr/share/elasticsearch/config/node.p12 xpack.security.http.ssl.truststore.path: /usr/share/elasticsearch/config/ca.p12 - 检查
docker-compose.yml中9200端口映射是否正确,确保宿主机端口未被占用:ports: - "9200:9200"
(2)证书权限与路径问题
传输的.p12证书需确保:
- 路径与
elasticsearch.yml中配置的路径完全一致; - 文件权限授予
elasticsearch用户:chown elasticsearch:elasticsearch /usr/share/elasticsearch/config/*.p12
权限错误会导致ES启动失败,容器内部curl localhost:9200自然会连接拒绝。
3. Docker Swarm网络配置问题
ES集群必须使用overlay网络实现跨节点容器通信,在docker-compose.yml中定义并绑定服务:
networks: es-overlay: driver: overlay attachable: true services: es11: image: docker.elastic.co/elasticsearch/elasticsearch:8.x.x networks: - es-overlay # 其他配置... es12: image: docker.elastic.co/elasticsearch/elasticsearch:8.x.x networks: - es-overlay # 其他配置... es13: image: docker.elastic.co/elasticsearch/elasticsearch:8.x.x networks: - es-overlay # 其他配置...
默认bridge网络无法支持Swarm跨节点通信,会导致节点间无法发现彼此。
4. 密码设置时机与集群健康检查
执行elasticsearch-setup-passwords前,必须确保集群已正常启动并选举出主节点:
- 进入容器后,先检查集群状态(根据是否启用HTTP SSL选择命令):
# 未启用HTTP SSL curl http://localhost:9200/_cluster/health?pretty # 已启用HTTP SSL(需指定CA证书) curl --cacert /usr/share/elasticsearch/config/ca.crt https://localhost:9200/_cluster/health?pretty - 等待返回的
status字段为green或yellow后,再执行密码设置命令。
5. 资源限制配置
ES默认需要较大内存,若docker-compose.yml未配置内存限制,会导致ES启动失败:
environment: - ES_JAVA_OPTS="-Xms1g -Xmx1g" deploy: resources: limits: memory: 2G
内存不足会导致ES进程无法正常启动,进而出现连接拒绝问题。
内容的提问来源于stack exchange,提问作者Boodle
相关产品推荐
相关产品推荐

