【问题标题】:How to Set an existing ECS cluster to a compute environment in AWS Batch如何在 AWS Batch 中将现有 ECS 集群设置为计算环境
【发布时间】:2017-06-06 12:13:23
【问题描述】:

我有一个ECS cluster 在我的环境中运行,它配置了任务、存储库和服务以及自动缩放。

我发现了AWS Batch 服务,当我创建一个新的compute environment 时,一个新的集群被添加到ECS 服务中。 我想知道如何为我现有的集群设置compute environment?

【问题讨论】:

    标签: amazon-web-services cluster-computing solution amazon-ecs


    【解决方案1】:

    我知道这是一个相当古老的问题,而且情况并不完全相同,但我正在努力解决类似的问题,所以它可能对某人有所帮助。在我的例子中,Batch 覆盖了我的 ECS_DISABLE_IMAGE_CLEANUP 设置,导致我特殊的专用超高优先级作业队列(及其计算环境)丢失了图像,当它们不得不再次被拉出时会导致烦人的延迟。

    为了解决这个问题,我必须创建一个启动模板(在 EC2 控制台中),其中所有内容都设置为“不要更改”,以及一些额外的“用户数据”(在高级部分的末尾):

     MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
    
    --==MYBOUNDARY==
    Content-Type: text/x-shellscript; charset="us-ascii"
    
    #!/bin/bash
    echo ECS_DISABLE_IMAGE_CLEANUP=true>>/etc/ecs/ecs.config 
    
    --==MYBOUNDARY==--
    

    然后我不得不重新创建计算环境以使用此启动模板,这会导致此额外行添加到 ecs.config 文件并覆盖批处理设置。也许它也适用于集群!

    【讨论】:

      【解决方案2】:

      据我所知(花了半天时间研究文档和论坛),这是不可能的。 computeEnvironments 的ecsClusterArn 是在创建计算环境后立即分配的,不能更改。

      有趣的是,Batch 以某种方式修改了托管 CE 中新创建的实例上的 /etc/ecs/ecs.config:

      ... // config from my AMI ECS_CLUSTER=my_cluster_name ... // ECS_CLUSTER={ENVIRONMENT NAME HERE}_Batch_{RANDOM UUID HERE} ECS_DISABLE_IMAGE_CLEANUP=false ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION=2m ECS_IMAGE_CLEANUP_INTERVAL=10m ECS_IMAGE_MINIMUM_CLEANUP_AGE=10m ECS_NUM_IMAGES_DELETE_PER_CYCLE=5 ECS_RESERVED_MEMORY=32 ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"] , 第一个 ECS_CLUSTER 被第二个擦除。这看起来像是一些预定义的user-data,但我也找不到可以更改的地方。

      但是,您可能可以通过相反的方法实现最初的目标——创建 unmanaged CE,并遍历您希望在该 CE 中的实例,将 /etc/ecs/ecs.config 中的 ECS_CLUSTER 更改为 @987654329 @,重新启动 ecs-agent(或相关的 docker,如果那不是 Amazon Linux)。现在您的容器属于另一个集群,唯一的区别是集群的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-29
        • 2019-02-17
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        • 2020-02-05
        • 2019-03-02
        • 2014-12-17
        相关资源
        最近更新 更多