如何在ECS上设置Traefik?

时间:2018-07-11 18:25:21

标签: docker amazon-ecs traefik aws-load-balancer

简而言之

我设法在本地和Traefik上运行AWS ECS,但是现在我想知道如何设置某种负载平衡以使我的两个具有随机IP的服务对公众可用。

我在ECS上的当前设置

[Internet]
    |
[Load balancer on port 443 + ALB Security group on 443]
    |
[Target group on port 443 + Security group from *any* port]
    |
[cluster]
    |
[service1 container ports "0:5000"]

虽然可行,但我现在想添加另一个容器,例如。 service2也带有随机端口,例如0:8000。这就是为什么我需要类似Traefik的原因。

我做了什么

这是Toml文件:

[api]

address = ":8080"

[ecs]

clusters = ["my-cluster"]
watch = true

domain = "mydomain.com"

region = "eu-central-1"
accessKeyID = "AKIA..."
secretAccessKey = "..."

我还在/etc/hosts中添加了主机条目:

127.0.0.1 service1.mydomain.com 127.0.0.1 service2.mydomain.com

还有容器上的相对标签,我可以curl service1.mydomain.com/status并得到200

现在我的最后一点就是以下问题:

  • 应如何将所有这些内容发布到互联网上? AWS ALBAWS Network LB?网桥/主机/其他?

1 个答案:

答案 0 :(得分:3)

AWS ALB与AWS Network LB取决于您要处理SSL的人。

  • 如果您具有通配符证书,并且所有服务都是同一域的子域,则ALB可能是一个不错的选择

  • 如果您想使用traefik Network LB加密,可能是更好的选择

在两种情况下,您的设置都将如下所示:

  "dependencies": {
    "body-parser": "^1.18.3",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "dotenv": "^6.0.0",
    "express": "~4.16.0",
    "http-errors": "~1.6.2",
    "morgan": "~1.9.0",
    "pg": "^6.1.0",
    "pg-hstore": "^2.3.2"
  },
  "devDependencies": {
    "chai": "^4.1.2",
    "mocha": "^5.2.0"
  }

在这两种情况下,最简单的方法是使traefik ecs服务自动注册到目标组。

这可以在服务创建(网络配置部分)时完成,以后不能再执行。 Link to documentation

Screen of configuration console