Как развернуть докер с помощью встроенной балансировки нагрузки маршрутизации меша
Я развернул свои сервисы в кластере Docker Swarm из двух узлов.
[root@prod2 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER
STATUS
2p5j932qfrlnl7mwduac216zf * prod2 Ready Active Leader
pu7vew6yektar4zxvt88cvl5t iZ23q47vq9vZ Ready Active
Я хочу использовать функцию ячеистой маршрутизации для балансировки нагрузки моего сервисного 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
после развертывания я нашел эти выходные данные в Docker PS:
ID NAME MODE REPLICAS IMAGE
tq0ti36y0w11 app-1 replicated 2/2 private-registry.com/myapp/app-1:latest
и я могу получить доступ к своему приложению-1 в узле-1 (prod2) успешно. Я ожидал, что функция сетки маршрутизации загрузит баланс моего доступа к app-1. Однако я обнаружил, что узел-2(iZ23q47vq9vZ) никогда не получает никакого запроса.
Я пытался найти подход в Интернете, от документации докера до проблем с github. Однако я не нашел никакого полезного ответа. Пожалуйста, сделайте мне одолжение!
PS: моя версия докера
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
Экспериментальный: ложный