无法连接到 EC2 上运行的 Akka HTTP

问题描述 投票:0回答:1

我正在将 Akka HTTP 应用程序迁移到 AWS,并被这个问题难住了。 Akka HTTP 服务器的启动方式如下:

Http().bindAndHandle(routes, "0.0.0.0", 5377)

EC2 实例使用 aws CLI 启动:

aws ec2 run-instances \
  --count 1 \
  --instance-type t2.micro \
  --key-name variant-us-west-1 \
  --region $region \
  --subnet-id subnet-bc22ebda \
  --security-group-ids sg-0901a32ad173d6aae \
  --image-id ami-0911f75c0510b955d  `#ubuntu-openjdk-17-jre-headless` \
  --output text --query 'Instances[*].InstanceId'

所讨论的 AMI 是我的私有 AMI,除了 Java 和 AWS CLI 之外什么都没有。安全组

sg-0901a32ad173d6aae
为入站流量打开有问题的端口 5377:

正在运行的实例确实在“安全”选项卡中显示了这些相同的规则:

但是,当我尝试从 AWS 之外的本地系统卷曲它时,出现错误:

curl http://3.101.78.138:5377 
curl: (7) Failed to connect to 3.101.78.138 port 5377 after 19 ms: Couldn't connect to server

我认为请求到达服务器是因为

curl
很快就会失败。如果我更改为未打开的端口,则超时时间会更长。所以我怀疑我的 Akka HTTP 配置,但想不出任何东西。

提前非常感谢!

amazon-ec2 aws-cli akka-http
1个回答
0
投票

Tsal Troser 的评论让我走上了正轨。事实证明,Java 17 绑定了 IP6 地址,尽管我传递给 Akka“0.0.0.0”的接口是 IP4 接口。我不太了解这里的网络细节,但是将

-Djava.net.preferIPv4Stack=true
传递给运行时解决了我的问题。也谢谢 Gaston Schabas 的评论。

© www.soinside.com 2019 - 2024. All rights reserved.