如何使用内置的网格路由负载平衡来实现docker堆栈部署

我已经将我的服务部署到两个节点的Docker群集中。

[root@prod2 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 2p5j932qfrlnl7mwduac216zf * prod2 Ready Active Leader pu7vew6yektar4zxvt88cvl5t iZ23q47vq9vZ Ready Active 

我想使用网格路由function来平衡我的服务API。

 [root@prod2 ~]# docker service ls ID NAME MODE REPLICAS IMAGE tq0ti36y0w11 app-1 replicated 2/2 private-registry.com/myapp/app-1:latest 

这是我的docker-compose.yml:

 version '3' services: app-1: image: private-registry.com/myapp/app-1:latest volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro ports: - 8083:8083 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8083/info"] interval: 5s timeout: 5s retries: 128 deploy: mode: replicated replicas: 2 update_config: parallelism: 1 delay: 10s failure_action: continue monitor: 60s max_failure_ratio: 0.3 

部署后,我发现这些输出在泊坞窗ps:

 ID NAME MODE REPLICAS IMAGE tq0ti36y0w11 app-1 replicated 2/2 private-registry.com/myapp/app-1:latest 

我可以成功访问节点1(prod2)中的app-1。 我预计路由网格function将负载平衡我对app-1的访问。 但是,我发现node-2(iZ23q47vq9vZ)从来没有得到任何请求。

我试图在网上search这个方法,从docker的文档到它的github问题。 不过,我还没有find任何有用的回应。 帮我个忙!

PS:我的docker版本

 Client: Version: 17.03.0-ce API version: 1.26 Go version: go1.7.5 Git commit: 3a232c8 Built: Tue Feb 28 08:10:07 2017 OS/Arch: linux/amd64 Server: Version: 17.03.0-ce API version: 1.26 (minimum version 1.12) Go version: go1.7.5 Git commit: 3a232c8 Built: Tue Feb 28 08:10:07 2017 OS/Arch: linux/amd64 

实验:假