Linux实例上Elastic Search本地可访问但远程无法连接如何解决
Elasticsearch 远程访问异常排查方案
1 配置有效性校验
你当前配置中的network.host: 0.0.0.0已经满足公网暴露要求,先确认配置是否生效:
- 本地执行
ss -tunlp | grep 9200查看端口监听状态,正常输出应包含0.0.0.0:9200或:::9200 - 若仅监听
127.0.0.1,说明配置未加载,执行systemctl restart elasticsearch重启服务后再次校验 - 如果是单节点部署,建议调整集群发现配置避免服务启动失败:
# 取消注释并修改对应配置项 node.name: node-1 discovery.seed_hosts: ["127.0.0.1"] cluster.initial_master_nodes: ["node-1"]
修改完成后重启ES服务。
2 实例本地防火墙排查
Linux系统默认会拦截未开放的端口请求,按需执行对应操作:
- 若使用firewalld管理防火墙:
- 执行
firewall-cmd --list-all查看已放行端口,确认是否包含9200/tcp - 未放行则执行
firewall-cmd --add-port=9200/tcp --permanent && firewall-cmd --reload永久放通端口
- 执行
- 若使用iptables管理防火墙:
- 执行
iptables -nL INPUT查看规则列表,确认是否有9200端口的放行规则 - 无放行规则则执行
iptables -I INPUT -p tcp --dport 9200 -j ACCEPT临时放通,验证连通正常后执行规则持久化操作
- 执行
3 云服务商安全组排查
如果你的Linux是云厂商ECS/云服务器实例,需要额外校验安全组规则:
- 登录云厂商控制台进入实例的安全组配置页
- 添加入方向规则:放行TCP 9200端口,源地址设置为你访问端的公网IP,不建议直接放通
0.0.0.0/0避免安全风险
4 网络链路校验
完成以上配置后仍无法访问,可在本地访问端执行如下命令排查链路:
- 执行
nc -zv MY_INSTANCE_IP_ADDRESS 9200验证端口连通性 - 端口不通的话执行
traceroute -T -p 9200 MY_INSTANCE_IP_ADDRESS定位链路丢弃节点
内容的提问来源于stack exchange,提问作者Abdul Rehman Aziz
相关产品推荐
相关产品推荐

