在EB上运行在Docker上的应用程序拒绝连接到自己

我有一个Play 2 Web应用程序,我使用Docker将其部署到Elastic Beanstalk。 在这个networking应用程序中,我启动了一个Akka集群。 启动过程涉及将自动调节组中的所有节点添加为种子节点(包括其本身)。 在首次部署到EB时,我指定将其部署到VPC(我只select一个可用区)。

当我运行应用程序并启动群集时,我收到以下消息:

AssociationError [akka.tcp:// cluster @ localhost:2551] – > [akka.tcp://cluster@172.31.13.25:2551]:错误[无效的地址:akka.tcp://cluster@172.31.13.25:2551 ] [akka.remote.InvalidAssociation:地址无效:akka.tcp://cluster@172.31.13.25:2551原因:akka.remote.transport.Transport $ InvalidAssociationException:连接被拒绝:/172.31.13.25:2551

其中,172.31.13.25是EC2实例的IP,2551是端口。 在我的Dockerfile中,我有“EXPOSE 9000 2551”。 在EC2安全组中,我已启用所有入站stream量
0.0.0.0/0(和所有出站stream量)。 在VPCnetworkingACL(和安全组)中,我也打开了所有stream量。

这是我的Dockerfile

FROM dockerfile/java:latest MAINTAINER a <a@b.de> EXPOSE 9000 2551 ADD files / WORKDIR /opt/docker RUN ["chown", "-R", "daemon", "."] USER daemon ENTRYPOINT ["bin/myapp"] CMD [] 

为什么我的EC2实例在端口2551上拒绝连接到自己?

原来这是不可能的,因为现在在Elastic Beanstalk上使用Docker。 但是,可以使用Tomcat。

使用播放/激活器,您可以部署一个WAR文件。 通过在war文件中注入以下.ebextensionsconfiguration文件,我可以在EC2实例之间获得一个额外的端口:

 Resources: ExtraPortsSGIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: { "Ref" : "AWSEBSecurityGroup" } IpProtocol: "tcp" FromPort: "2551" ToPort: "2551" SourceSecurityGroupId: { "Ref" : "AWSEBSecurityGroup" }