2017-03-27 13 views
0

我在码头构成haproxy和nginx玩耍。 我试图做到的是,如果我缩放nginx的容器是码头构成规模不与haproxy一起工作

泊坞窗,撰写规模的nginx = 2

的HAProxy的容器还代理了新的nginx的容器。但不知何故它不承认新的集装箱。

这里是我的CONFIGS:

泊坞窗,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文件中?

回答

0

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

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

1

或者,使用dockercloud-haproxy

HAProxy的形象,链接容器之间平衡,如果在泊坞云推出或使用泊坞撰写V2,重新配置,当连接群集成员重新部署,加入或离开。

而且也:

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

  • 在泊坞云(云计算模式)
  • 运行与多克的旧连结(传统模式)运行
  • 与Docker Compose v2一起运行(Compose模式,与Docker Swarm兼容)
  • 与码头工人SwarmMode(群模式)

例如运行:

docker-compose scale nginx=5 

而且haproxy会自动检测到新的情况下,自己重新配置,并重新启动。