扩展ECS集群中的一些(但不是全部)任务

时间:2019-09-13 22:51:45

标签: amazon-web-services amazon-ecs

对于docker-compose,我有一个非常简单的locust。它由一个master(基本上是一个客户端的网络服务器)和一个slave(一个实际执行负载测试的客户端,这是蝗虫)组成。

version: "3"

services:
  locust-master:
    image: chapkovski/locust
    ports:
      - "80:80"
    environment:
      LOCUST_MODE: master


  locust-slave:
    image: chapkovski/locust
    "links": [
      "locust-master"
    ]
    environment:
      LOCUST_MODE: slave
      LOCUST_MASTER_HOST: locust-master
      LOCUST_MASTER_PORT: 5557

一切都适用于AWS ECS。但是现在我想将多个slaves连接到同一个master,但我不知道该怎么做。因为当我尝试按比例扩展任务时,由于端口已经很忙,这会导致错误。这很明显,因为扩展此任务定义会使ECS代理在同一端口上具有多个主服务器。

当我尝试拆分主服务器和从属服务器时,我将有两个任务,而我只能扩展“从属”任务,那么它们当然无法通信,并且主服务器看不到任何客户端。 / p>

如果假设我需要20个客户和一个主服务器,那么仅放大“客户”部分的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您无法通过预定义的端口扩展服务,如果这样做,则会出现错误Ports are already busy

您必须选择解决此问题。

  • 每个EC2实例一项服务(虽然不够好,但可以解决)
  • 动态端口绑定

使用第二个选项,ECS代理会分配一个动态端口,该端口不与任何占用的端口冲突,因此可以扩展所需数量的任务。

enter image description here

您需要在端口映射部分设置主机端口 0 enter image description here

understanding-dynamic-port-mapping-in-amazon-ecs-with-application-load-balancer

"portMappings": [
    {
        "containerPort": 3000,
        "hostPort": 0
    }
 ]