gpt4 book ai didi

amazon-web-services - 通过 CloudFormation 使用 AWS ECS 将 Docker 容器与多个其他容器链接

转载 作者:行者123 更新时间:2023-12-02 20:19:48 25 4
gpt4 key购买 nike

这是一个例子。有一个 docker 容器 A(例如连接到后端的服务)。我正在从 docker image B 运行多个容器(例如通过服务连接到后端的前端)。现在,我想将 B 中的所有容器(B1、B2、B3 等)链接到容器 A。

如何在 ECS 中实现上述目标?如果我在单个任务定义中创建两个容器(A 和 B),那么在运行该任务的多个服务时将同时运行 A 和 B 的多个容器。

请注意,我正在使用 CloudFormation 来实现上述目标。

提前致谢。

最佳答案

最简单的方法是创建多个 ECS 服务。您可以在同一集群或不同集群中创建它们(这实际上取决于您想要如何设置基础架构)。将容器 B 的服务置于应用程序负载均衡器后面,然后让负载均衡器在来自容器 A 的请求期间处理与各个容器的连接。要在 CloudFormation 中执行此操作,您需要创建以下 CloudFormation 资源类型:

AWS::ECS::Service

AWS::ElasticLoadBalancingV2::LoadBalancer

AWS::ElasticLoadBalancingV2::TargetGroup

AWS::ElasticLoadBalancingV2::Listener

基本上,您将把这些资源类型添加到您的 CloudFormation 模板中。资源将通过以下方式相互引用:

  • AWS::ECS::Service -> TargetGroup 的 ARN(在 LoadBalancers 属性中)
  • AWS::ElasticLoadBalancingV2::Listener -> LoadBalancer 的 ARN(LoadBalancerArn 属性)、TargetGroup 的 ARN(在 DefaultActions 属性中)

请注意,您可以使用“Scheme”属性将 AWS::ElasticLoadBalancingV2::LoadBalancer 资源设置为内部资源或面向 Internet。如果您想让服务 B 保持私有(private),只需将其设置为“内部”即可。

当然,您还需要添加各种资源类型来构建 ECS 集群/服务的其余部分,但我假设您的模板中已包含此部分。

部署 CloudFormation 堆栈更改后,负载均衡器将具有一个 URL(您可以使用 "Fn::GetAtt": ["LogicalIDOfLBResource", "DNSName"] - see the "DNSName" return value in the docs here 将其添加到堆栈的输出中) 。当您向此 URL 发出请求时,负载均衡器将自动连接到任何 B 容器并从容器返回响应,因此您可以在 A 容器中使用此 URL 从 A 连接到 B。

关于amazon-web-services - 通过 CloudFormation 使用 AWS ECS 将 Docker 容器与多个其他容器链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33544444/

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