Elasticsearch新节点无法连接集群,求解决方案
问题根源与解决步骤
你的问题核心是主节点启用了Transport层SSL加密,但新节点完全未配置对应SSL参数,导致节点间SSL握手失败,无法加入集群。主节点日志里的javax.net.ssl.SSLHandshakeException: No available authentication scheme直接指向了这个问题。
第一步:同步主节点SSL证书到新节点
主节点开启xpack.security.transport.ssl.enabled: true后,集群内所有节点必须使用相同的SSL证书才能建立通信:
- 从主节点的Elasticsearch证书目录(默认是
/etc/elasticsearch/certs/)复制所有证书文件(比如elastic-certificates.p12)到新节点的相同目录 - 确保新节点上
elasticsearch用户对证书目录和文件有读取权限:chown -R elasticsearch:elasticsearch /etc/elasticsearch/certs/ chmod -R 600 /etc/elasticsearch/certs/
第二步:修改新节点的elasticsearch.yml配置
更新新节点配置,添加Transport SSL参数并修正节点发现地址:
cluster.name: my-cluster node.name: another-node node.data: true node.master: false path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch network.host: ip_of_server # 修正节点发现地址,仅保留主节点IP,移除127.0.0.1(新节点与主节点不在同一机器) discover.seed_hosts: ["ip_address_server_1"] # 启用X-Pack安全并配置Transport SSL,与主节点保持一致 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12 # 若主节点设置了证书密码,需添加以下两行(替换为实际密码) # xpack.security.transport.ssl.keystore.password: "your-cert-password" # xpack.security.transport.ssl.truststore.password: "your-cert-password"
第三步:验证配置并重启节点
- 先在新节点上检查配置文件语法是否合法:
/usr/share/elasticsearch/bin/elasticsearch --configtest - 语法无误后,重启新节点的Elasticsearch服务:
systemctl restart elasticsearch
第四步:检查集群状态
等待几分钟后,在主节点执行命令查看新节点是否成功加入:
curl -k -u elastic:your-admin-password https://ip_address_server_1:9200/_cat/nodes?v
(-k参数用于跳过自签SSL证书的验证,若使用可信证书可移除)
若新节点成功加入,集群状态会逐步从yellow转为green(需等待分片同步完成)。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

