我可以在目标组的运行状况检查中使用第二个动态端口(不是流量端口)吗?

时间:2018-10-29 18:29:17

标签: amazon-web-services haproxy amazon-elb amazon-ecs

我正在运行HAProxy的容器实例,该实例以NLB开头,以代理来自私有子网的Postgres / RDS实例的流量。我的haproxy.cfg文件如下所示:

listen  postgres_rds
        bind *:5432
        mode tcp
        timeout client  10800s
        timeout connect  10800s
        timeout server  10800s
        server primary ${RDS_URL}:5432

listen stats # Define a listen section called "stats"
        bind :9000 # Listen on localhost:9000
        mode http
        stats enable  # Enable stats page
        stats hide-version  # Hide HAProxy version
        stats realm Haproxy\ Statistics  # Title text for popup window
        stats uri /  # Stats URI

因此,正如您所看到的,我已经将容器设置为将端口5432上的流量转发出去,并且还将容器中的端口9000设置为运行状况检查。

在Amazon ECS中,我已将此容器配置为使用动态端口。换句话说,这是任务定义的端口映射部分:

  "portMappings": [
    {
      "hostPort": 0,
      "protocol": "tcp",
      "containerPort": 5432
    },
    {
      "hostPort": 0,
      "protocol": "tcp",
      "containerPort": 9000
    }
  ],

我将容器作为ECS服务运行。我的目标是能够根据需要扩展此服务。但是(目标组中的)任何目标都没有表现出健康状态,因此它会不断循环执行ECS任务-分解新任务并拆除旧任务,而没有将这些任务标记为健康且稳定。

我看到任务正在将这两个端口分配给ECS主机实例上的临时/动态端口。而且我还可以看到负载均衡器将端口5432正确转发到了相应的动态端口。但是,目标组的运行状况检查设置似乎无法类似地进行该动态映射。我在目标组运行状况检查中仅有的选项是“流量端口”(在这种情况下,也就是映射到容器端口5432的动态端口)或静态端口。

我尝试在运行状况检查中设置静态端口,但是这当然不起作用,因为它没有使用静态端口。我开始认为这根本不可能,但我希望能证明自己是错误的。有什么方法可以使用单独的动态端口进行目标组的运行状况检查?或什至不是现在,有什么东西可以允许这种行为?

0 个答案:

没有答案