Докер роится с Трафиком - выбираешь недостижимый ip - PullRequest
0 голосов
/ 21 октября 2018

Итак, мне нужно многоадресный трафик роя, поэтому я создал "драйвер 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 выбирает имя хоста и достигает правильно.haproxy stats

Traefik выбирает неподходящие IP-адреса из входной сети и выдает «время ожидания шлюза»

traefik status

Как заставить трафик правильно добраться до узлов?

...