gpt4 book ai didi

aws-cloudformation - ECS 和应用程序负载均衡器

转载 作者:行者123 更新时间:2023-12-04 00:17:42 25 4
gpt4 key购买 nike

我一直在寻找有关Cloud Formation的一些信息,以使用ECSELB(应用程序负载均衡器)创建堆栈,但无法找到这样做。

我创建了两个 Docker 镜像,每个镜像都包含一个监听端口 30004000 的 Node.js 微服务。如前所述,如何使用 ECSELB 创建堆栈?我假设应用程序负载均衡器可以配置为监听这两个端口?

示例 Cloud Formation 模板确实很有帮助。

最佳答案

应用程序负载均衡器可用于跨服务中的 ECS 任务加载流量。应用程序负载均衡器有两个可供您利用的很酷的功能: 动态端口映射(主机上的端口由 ECS/Docker 自动分配)允许您在单个 EC2 实例上为同一服务运行多个任务以及基于路径的路由允许您根据 URL 路径中的模式将传入请求路由到不同的服务。

要连接它,您首先需要定义一个像这样的 TargetGroup

"TargetGroupService1" : {
"Type" : "AWS::ElasticLoadBalancingV2::TargetGroup",
"Properties" : {
"Port": 10,
"Protocol": "HTTP",
"HealthCheckPath": "/service1",
"VpcId": {"Ref" : "Vpc"}
}
}

如果您使用动态端口映射,则目标组中指定的端口无关紧要,因为它将被每个目标的动态分配端口覆盖。

接下来定义一个 ListenerRule,它定义应路由到 TargetGroup 的路径:

"ListenerRuleService1": {
"Type" : "AWS::ElasticLoadBalancingV2::ListenerRule",
"Properties" : {
"Actions" : [
{
"TargetGroupArn" : {"Ref": "TargetGroupService1"},
"Type" : "forward"
}
],
"Conditions" : [
{
"Field" : "path-pattern",
"Values" : [ "/service1" ]
}
],
"ListenerArn" : {"Ref": "Listener"},
"Priority" : 1
}
}

最后,您将 ECS 服务与 TargetGroup 相关联。这使 ECS 能够自动将您的任务容器注册为目标组中的目标(使用您在任务定义中配置的主机端口)

"Service1": {
"Type" : "AWS::ECS::Service",
"DependsOn": [
"ListenerRuleService1"
],
"Properties" : {
"Cluster" : { "Ref" : "ClusterName" },
"DesiredCount" : 2,
"Role" : "/ecsServiceRole",
"TaskDefinition" : {"Ref":"Task1"},
"LoadBalancers": [
{
"ContainerName": "Task1",
"ContainerPort": "8080",
"TargetGroupArn" : { "Ref" : "TargetGroupService1" }
}
]
}
}

您可以在我撰写的有关此问题的博客文章中找到更多详细信息,请参阅 Amazon ECS and Application Load Balancer

关于aws-cloudformation - ECS 和应用程序负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39185957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com