Итак, мне нужно многоадресный трафик роя, поэтому я создал "драйвер macvlan" в области роя.Диапазон IP-адресов хоста, на котором работает докер.
#docker network create --config-only --subnet 192.168.0.0/24 -o parent=eth0 --ip-range 192.168.0.100/24 test
#docker network create -d macvlan --scope swarm --config-from test test_net
Ниже приведен составной файл:
version: "3"
services:
lb:
image: 'dockercloud/haproxy:latest'
links:
- web
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- '81:80'
- '1936:1936'
deploy:
restart_policy:
condition: any
mode: replicated
replicas: 1
update_config:
delay: 2s
placement:
constraints: [node.role == manager]
networks:
- test_net
whoami:
image: tutum/hello-world
networks:
- test_net
environment:
- "SERVICE_PORTS=80"
- "COOKIE= SRV insert indirect preserve nocache"
ports:
- "80"
deploy:
restart_policy:
condition: any
mode: replicated
replicas: 5
update_config:
delay: 2s
labels:
- "traefik.docker.network=test_net"
- "traefik.port=80"
- "traefik.frontend.rule=PathPrefix:/"
- "traefik.backend.loadbalancer.sticky=true"
loadbalancer:
image: traefik
command: --docker \
--docker.swarmmode \
--docker.watch \
--web \
--loglevel=DEBUG
ports:
- 80:80
- 9090:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
restart_policy:
condition: any
mode: replicated
replicas: 1
update_config:
delay: 2s
placement:
constraints: [node.role == manager]
networks:
- test_net
networks:
test_net:
external: true
Когда стек работает, traefik выбирает внутреннюю IP-сеть вне диапазонаиз macvlan.
docker deploy -c docker-compose.yml test
haproxy-cloud выбирает имя хоста и достигает правильно.
Traefik выбирает неподходящие IP-адреса из входной сети и выдает «время ожидания шлюза»
Как заставить трафик правильно добраться до узлов?