两台EC2机器通过Docker部署3节点Elasticsearch集群连接失败问题
跨EC2主机Docker部署ES集群9300端口连接拒绝排查点
- ES网络绑定配置错误
检查每个节点的network.bind_host、network.publish_host参数:- 禁止绑定到
127.0.0.1或容器内部虚拟网段,可设置为0.0.0.0允许所有地址访问 network.publish_host必须显式配置为当前EC2节点的内网IP(即你提到的10.2.0.x段地址),否则ES会默认广播容器内部虚拟IP,其他主机的节点无法连通
- 禁止绑定到
- Docker端口绑定配置错误
检查docker compose中ES服务的ports配置,确保9300端口映射格式为9300:9300,如果配置为127.0.0.1:9300:9300,端口只会绑定到宿主机回环地址,其他主机无法访问
可在宿主机执行ss -tulnp | grep 9300确认端口绑定地址为0.0.0.0或EC2内网IP - 集群发现配置错误
检查discovery.seed_hosts配置,所有节点的该参数必须填写集群所有节点对应的EC2内网IP+transport端口,禁止填写容器内部IP或127.0.0.1 - 同主机多节点端口冲突
单台EC2运行多个ES节点时,需为不同节点配置不同的transport.port(例如9300、9301),同时在docker compose中映射到宿主机不同端口,避免端口占用导致ES进程启动失败、端口未实际监听 - 宿主机内核参数不满足要求
ES要求宿主机vm.max_map_count参数值不小于262144,参数不符合会导致ES启动失败、9300端口未监听,执行sysctl vm.max_map_count可查看当前值,执行sysctl -w vm.max_map_count=262144可临时生效,写入/etc/sysctl.conf可永久生效
内容的提问来源于stack exchange,提问作者VitalyT
相关产品推荐
相关产品推荐

