docker构成规模不适用于haproxy

我正在玩docker-compose haproxy和nginx。 我想要完成的是,如果我缩放nginx容器

docker-compose scale nginx = 2

haproxy容器也代理新的nginx容器。 但不知何故,它不承认新的集装箱。

这是我的configuration:

泊坞窗,compose.yml:

version: '2.1' services: nginx: image: 'bitnami/nginx:latest' healthcheck: test: "curl -f http://localhost/?healthcheck" expose: - "80" haproxy: image: haproxy restart: always depends_on: nginx: condition: service_healthy links: - nginx ports: - "80:80" volumes: - ./haproxy:/usr/local/etc/haproxy/ expose: - "80" 

haproxy.cfg

 global log 127.0.0.1 local0 log 127.0.0.1 local1 notice defaults log global mode http option httplog timeout connect 5000 timeout client 10000 timeout server 10000 frontend localnodes bind 0.0.0.0:80 mode http default_backend nodes backend nodes mode http option forwardfor balance roundrobin server nginx nginx:80 check option httpchk GET /?haproxyselfcheck http-check expect status 200 

我能做些什么来让haproxy识别新的容器,而不是仅仅手动添加一个更多的nginx到docker-compose文件中?

或者,使用dockercloud-haproxy

在链接容器之间平衡的HAProxy映像,如果在Docker Cloud中启动或使用Docker Compose v2,则在链接集群成员重新部署,连接或离开时自行重新configuration。

并且:

您可以通过三种不同的方式使用dockercloud/haproxy

  • 运行在Docker Cloud(云模式)
  • 运行Docker传统链接(传统模式)
  • 运行Docker Compose v2(Compose模式,与Docker Swarm兼容)
  • 运行Docker SwarmMode(Swarm模式)

例如:

 docker-compose scale nginx=5 

haproxy会自动检测新的实例,重新configuration自己,然后重新启动。

在做了一些研究之后,我发现了一个解决scheme,与docker群一起工作。 Docker群拥有自己的负载平衡器。 但是,将代理服务器转换为最适合的服务似乎是来自传奇人物Victor Farcic的docker-flow-proxy https://github.com/vfarcic/docker-flow-proxy

然后可以将新服务添加到代理。