无法连接AWS EC2上运行的Akka HTTP服务求助
Akka HTTP部署AWS EC2连接故障排查方案
一、验证Akka HTTP服务监听状态
- 登录EC2实例,执行以下命令确认服务是否正确绑定端口:
若输出显示ss -tulpn | grep 53770.0.0.0:5377,说明服务正常监听所有网卡;若仅显示127.0.0.1:5377,则服务仅绑定本地回环,无法被外部访问。 - 检查应用启动日志,确认
Http().bindAndHandle调用无异常,排除端口占用、权限不足等报错(5377为非特权端口,无需root权限)。
二、EC2实例网络层排查
- 确认公网IP有效性:检查EC2实例是否分配公网IP,执行以下命令验证实例自身的公网IP是否与你访问的
3.101.78.138一致:
若实例无公网IP(子网为私有子网且未配置NAT网关),公网无法直接访问。curl http://169.254.169.254/latest/meta-data/public-ipv4 - 检查网络ACL规则:子网
subnet-bc22ebda关联的网络ACL需同时配置:- 入站规则:允许TCP 5377端口,源
0.0.0.0/0(或你的本地IP) - 出站规则:允许所有TCP端口(或至少允许临时端口范围),目标
0.0.0.0/0
网络ACL为无状态规则,需双向放行才能建立TCP连接。
- 入站规则:允许TCP 5377端口,源
- 本地连通性测试:在EC2实例内部执行:
若本地访问失败,说明服务未正常启动;若本地能访问,问题出在外部网络链路。curl http://localhost:5377 curl http://<实例内网IP>:5377
三、Akka HTTP配置校验
- 检查
application.conf中是否存在覆盖绑定地址的配置:
若存在该配置,会覆盖代码中指定的akka.http.server.default-http-address = "localhost"0.0.0.0,导致服务仅监听本地。 - 确认应用初始化完成:查看应用完整日志,排除依赖缺失、配置错误等导致服务未完成初始化的情况。
四、补充验证手段
- 使用telnet测试连接:
若提示telnet 3.101.78.138 5377Connection refused,说明服务未监听端口或安全组/ACL拦截;若超时,说明公网链路不通。 - 复核安全组规则:确认安全组
sg-0901a32ad173d6aae的入站规则为TCP协议、5377端口、源IP范围正确,避免误配置为UDP或错误的源IP。
内容的提问来源于stack exchange,提问作者Igor Urisman
相关产品推荐
相关产品推荐

