Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何将EC2实例注册到ECS集群?_Amazon Web Services_Docker - Fatal编程技术网

Amazon web services 如何将EC2实例注册到ECS集群?

Amazon web services 如何将EC2实例注册到ECS集群?,amazon-web-services,docker,Amazon Web Services,Docker,我已经在EC2上启动了2个ECS优化实例,但如何将它们注册为ECS容器实例 无法找到执行此操作的方法。当您创建EC2实例时,必须指定链接到ECS容器的IAM角色(如果使用SDK/…,则必须在参数中指定此角色的“实例配置文件ARN”),如果您在aws网站上首次使用ECS时使用交互式ECS群集创建,您应该已经有一个指向默认集群的ecsInstanceRole链接 然后,您的EC2实例启动后,会自动注册为该集群中的ECS容器。当您启动ECS优化镜像时,默认会启动实例上的ECS代理。ecs代理向默认ec

我已经在EC2上启动了2个ECS优化实例,但如何将它们注册为ECS容器实例


无法找到执行此操作的方法。

当您创建EC2实例时,必须指定链接到ECS容器的IAM角色(如果使用SDK/…,则必须在参数中指定此角色的“实例配置文件ARN”),如果您在aws网站上首次使用ECS时使用交互式ECS群集创建,您应该已经有一个指向默认集群的ecsInstanceRole链接


然后,您的EC2实例启动后,会自动注册为该集群中的ECS容器。

当您启动ECS优化镜像时,默认会启动实例上的ECS代理。ecs代理向默认ecs集群注册实例

要使实例在集群上可用,必须创建默认集群

如果您有一个定制的ecs集群,您可以使用userdata部分设置集群名称

ecs代理希望在/etc/ecs/ecs.config上提供的ecs.config文件中包含集群名称

您可以使用userdata脚本在实例启动时进行设置

#!/bin/bash
echo ECS_CLUSTER={cluster_name} >> /etc/ecs/ecs.config
有关更多信息,请参阅以下ecs文档

除了响应非默认集群名称的用户数据脚本之外,请记住容器实例需要外部网络访问才能与Amazon ECS服务通信。因此,如果您的容器实例没有公共IP地址,则它们必须使用网络地址转换(NAT)网关来提供此访问


来源:

要在群集中注册实例,您可以做的另一件事是:

  • 创建服务并为其分配任务
  • 创建服务时-选择负载平衡器和应启动的相应任务数
  • 然后,为负载平衡器创建一个目标组(如果还没有)
  • 您现在有2个选项-手动创建所需实例或编辑集群的启动模板(基于该模板,将自动创建实例)
  • 如果您通过启动模板创建实例-它们将自动链接到目标组(因为您在创建服务时选择了相应的负载平衡器)
  • 否则,手动添加它们-任何通过运行状况检查且在您的服务目标组中的实例都将自动添加到群集,除非群集已具有最大数量的实例

  • 很高兴您指定了“ECS优化实例”。这让我大吃一惊。这正是我在编写整个ecs集群脚本时所需要的。创建实例后,可以附加/更改必要的角色。如果在创建后添加角色,是否可以“重试”ECS注册?