本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
向 Amazon ECS 服務註冊多個目標群組
當您在服務定義中指定多個目標群組時,您的 Amazon ECS 服務可以為來自多個負載平衡器的流量提供服務,以及公開多個負載平衡的連接埠。
若要建立指定多個目標群組的服務,您必須使用 Amazon ECS API AWS CLI、 SDK 或 AWS CloudFormation 範本建立服務。建立服務之後,您可以使用 AWS Management Console檢視該服務以及向其註冊的目標群組。您必須使用 UpdateService
來修改現有服務的負載平衡器組態。
您可以使用以下格式在服務定義中指定多個目標群組。如需服務定義的完整語法,請參閱服務定義範本。
"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:
region
:123456789012
:targetgroup/target_group_name_1/1234567890123456
", "containerName":"container_name
", "containerPort":container_port
}, { "targetGroupArn":"arn:aws:elasticloadbalancing:region
:123456789012
:targetgroup/target_group_name_2/6543210987654321
", "containerName":"container_name
", "containerPort":container_port
} ]
考量事項
當您在服務定義中指定多個目標群組時,應該考慮下列事項。
-
對於使用 Application Load Balancer 或 Network Load Balancer 的服務,您無法連接超過五個目標群組到一個服務。
-
只有在下列情況下支援在服務定義中指定多個目標群組:
-
服務必須使用 Application Load Balancer 或 Network Load Balancer。
-
服務必須使用滾動更新 (
ECS
) 部署控制器類型。
-
-
若服務同時包含使用 Fargate 和 EC2 啟動類型的任務,則該服務支援指定多個目標群組。
-
當建立指定多個目標群組的服務時,必須建立 Amazon ECS 服務連結角色。透過省略 API 請求中的
role
參數,或 AWS CloudFormation中的Role
屬性來建立角色。如需詳細資訊,請參閱使用 Amazon ECS 的服務連結角色。
範例服務定義
以下是在服務定義中指定多個目標群組的一些使用案例範例。如需服務定義的完整語法,請參閱服務定義範本。
具有適用於內部和外部流量的個別負載平衡器
在以下的使用案例中,服務會對相同的容器和連接埠使用兩個不同的負載平衡器,一個用於內部流量,另一個用於面向網際網路的流量。
"loadBalancers":[ //Internal ELB { "targetGroupArn":"arn:aws:elasticloadbalancing:
region
:123456789012
:targetgroup/target_group_name_1/1234567890123456
", "containerName":"nginx", "containerPort":8080 }, //Internet-facing ELB { "targetGroupArn":"arn:aws:elasticloadbalancing:region
:123456789012
:targetgroup/target_group_name_2/6543210987654321
", "containerName":"nginx", "containerPort":8080 } ]
從相同容器公開多個連接埠
在以下的使用案例中,服務會使用一個負載平衡器,但公開相同容器中的多個連接埠。例如,Jenkins 容器可公開適用於 Jenkins Web 界面的連接埠 8080,以及公開適用於 API 的連接埠 50000。
"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:
region
:123456789012
:targetgroup/target_group_name_1/1234567890123456
", "containerName":"jenkins", "containerPort":8080 }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region
:123456789012
:targetgroup/target_group_name_2/6543210987654321
", "containerName":"jenkins", "containerPort":50000 } ]
從多個容器公開連接埠
在以下的使用案例,服務會使用一個負載平衡器和兩個目標群組,以公開不同容器中的連接埠。
"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:
region
:123456789012
:targetgroup/target_group_name_1/1234567890123456
", "containerName":"webserver", "containerPort":80 }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region
:123456789012
:targetgroup/target_group_name_2/6543210987654321
", "containerName":"database", "containerPort":3306 } ]