nix*_*get 7 amazon-ecs amazon-elb aws-cloudformation
我一直在寻找有关使用ECS和ELB(应用程序负载均衡器)创建堆栈的云形成的一些信息,但无法这样做.
我创建了两个Docker镜像,每个镜像都包含一个侦听端口3000和4000的Node.js微服务.如上所述,我如何使用ECS和ELB创建堆栈?我假设应用程序负载均衡器可以配置为侦听这两个端口?
示例Cloud Formation模板确实会有所帮助.
小智 9
Application Load Balancer可用于在服务中的ECS任务中加载流量.Application Load Balancer有两个很酷的功能,你可以利用; 动态端口映射(主机上的端口由ECS/Docker自动分配)允许您在单个EC2实例上运行同一服务的多个任务和基于路径的路由,允许您根据模式中的模式将传入请求路由到不同的服务网址路径.
要连接它,首先需要像这样定义一个TargetGroup
"TargetGroupService1" : {
"Type" : "AWS::ElasticLoadBalancingV2::TargetGroup",
"Properties" : {
"Port": 10,
"Protocol": "HTTP",
"HealthCheckPath": "/service1",
"VpcId": {"Ref" : "Vpc"}
}
}
Run Code Online (Sandbox Code Playgroud)
如果使用动态端口映射,则目标组中指定的端口无关紧要,因为它将被每个目标的动态分配端口覆盖.
接下来,定义一个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
}
}
Run Code Online (Sandbox Code Playgroud)
最后,您将ECS服务与TargetGroup相关联.这使ECS能够自动将任务容器注册为目标组中的目标(使用您在TaskDefinition中配置的主机端口)
"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" }
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在我撰写的博客文章中找到更多详细信息,请参阅Amazon ECS和Application Load Balancer
| 归档时间: |
|
| 查看次数: |
4118 次 |
| 最近记录: |