QA@IT
«質問へ戻る

質問を投稿

Docker Swarmにおいてworkerノードで動かしているhaproxyが思った通りに機能しません

Docker Swarmでサーバ2台にアプリのクラスタリングをしたのですが、
ロードバランサとしてdockercloud/haproxyを使ったところ、
workerノードで稼働させた場合にHTTPコネクションが通りませんでした。
なお、managerノードで稼働させ/var/run/docker.sockをマウントしている場合はうまくいきました。
使用したスタックファイルは下記になります。

version: '3'
services:
  app:
    image: dockercloud/hello-world
    deploy:
      replicas: 2
    environment:
      SERVER_PORTS: 80
  lb:
    image: dockercloud/haproxy
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == worker
    environment:
      DOCKER_HOST: tcp://xxx.xxx.xxx.xxx:2375
    ports:
      - 80

なお、workerノードのサーバから以下のようなホスト指定したdockerコマンドの動作は確認しています。

$ docker -H tcp://xxx.xxx.xxx.xxx:2375 ps

どなたか解決方法をご存知ありませんでしょうか。

Docker Swarmでサーバ2台にアプリのクラスタリングをしたのですが、
ロードバランサとして`dockercloud/haproxy`を使ったところ、
workerノードで稼働させた場合にHTTPコネクションが通りませんでした。
なお、managerノードで稼働させ`/var/run/docker.sock`をマウントしている場合はうまくいきました。
使用したスタックファイルは下記になります。

```yml
version: '3'
services:
  app:
    image: dockercloud/hello-world
    deploy:
      replicas: 2
    environment:
      SERVER_PORTS: 80
  lb:
    image: dockercloud/haproxy
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == worker
    environment:
      DOCKER_HOST: tcp://xxx.xxx.xxx.xxx:2375
    ports:
      - 80
```

なお、workerノードのサーバから以下のようなホスト指定した`docker`コマンドの動作は確認しています。
```
$ docker -H tcp://xxx.xxx.xxx.xxx:2375 ps
```

どなたか解決方法をご存知ありませんでしょうか。