使用多个 Elastic Load Balancing 侦听器 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用多个 Elastic Load Balancing 侦听器

您可以在 ECS 托管式 Docker 环境中配置多个 Elastic Load Balancing 侦听器,以支持不在默认 HTTP 端口上运行的代理或其他服务的入站流量。

在您的源包中创建一个 .ebextensions 文件夹并添加一个文件扩展名为 .config 的文件。以下示例显示了用于在端口 8080 上创建 Elastic Load Balancing 侦听器的配置文件。

.ebextensions/elb-listener.config

option_settings: aws:elb:listener:8080: ListenerProtocol: HTTP InstanceProtocol: HTTP InstancePort: 8080

如果您的环境在您创建的自定义 Amazon Virtual Private Cloud (Amazon VPC) 中运行,则 Elastic Beanstalk 会处理其余任务。在默认 VPC 中,您需要配置实例的安全组以允许来自负载均衡器的入口流量。添加将入口流量规则添加到安全组的第二个配置文件:

.ebextensions/elb-ingress.config

Resources: port8080SecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 8080 FromPort: 8080 SourceSecurityGroupName: { "Fn::GetAtt": ["AWSEBLoadBalancer", "SourceSecurityGroup.GroupName"] }

有关配置文件格式的更多信息,请参阅添加和自定义 Elastic Beanstalk 环境资源选项设置

除了将侦听器添加到 Elastic Load Balancing 配置并在安全组中打开端口外,您还需要将主机实例上的端口映射到 Dockerrun.aws.json v2 文件 containerDefinitions 部分的 Docker 容器上的端口。以下摘录显示了一个示例:

"portMappings": [ { "hostPort": 8080, "containerPort": 8080 } ]

有关 Dockerrun.aws.json v2 文件格式的详细信息,请参阅 Dockerrun.aws.json v2