Traefik: Bad Azway в Swarm Mode развернут на Azure - PullRequest
0 голосов
/ 15 ноября 2018

В настоящее время я пытаюсь развернуть набор микросервисов с помощью Docker Swarm Mode.Я установил контейнер traefik и все свои контейнеры, например:

version: "3.4" 
networks:
  backend-network:
    external: true
services:     

  proxy:
    image: traefik
    command: --api --docker --docker.swarmMode --docker.watch
    networks: 
      - backend-network 
    ports: 
      - "80:80"
      - "8090:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy: 
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints:
          - node.role == manager

  front-end:
    image: *****
    env_file:
      - ./env/.react.env
    networks: [ "backend-network" ]
    ports: 
      - "8080:80"
    deploy: 
      labels:
        - traefik.enable=false
      replicas: 1
      restart_policy: 
        condition: on-failure
      placement:
        constraints:
          - node.role == manager

  users-db:
    image: *****
    networks: ["backend-network"]
    ports: [ "5984:5984" ]
    deploy:
      labels:
        - traefik.enable=false
      replicas: 1
      restart_policy: # restart if something went wrong
        condition: on-failure

  # server that listens HTTP requests
  users:
    image: *****
    env_file: 
      - ./env/.users.env
    # wait until service db is up
    depends_on: [ "users-db" ]
    networks: 
      - backend-network
      # - proxy
    # expose port 80 of host node
    expose:
      - "80"
    deploy:   
      labels:
        - traefik.port=80
        - traefik.docker.network=backend-network
        - traefik.frontend.rule=PathPrefixStrip:/api/auth/
        - traefik.backend.loadbalancer.swarm=true
        - traefik.backend.loadbalancer.stickiness=true
      replicas: 1


  shop:
    image: *******
    env_file: 
      - ./env/.shop.env
    depends_on: [ "users"]
    networks:
      - backend-network
      # - proxy
    expose:
      - "80"
    deploy:
      labels:
        - traefik.port=80
        - traefik.frontend.rule=PathPrefixStrip:/api/shop
        - traefik.docker.network=backend-network
        - traefik.backend.loadbalancer.swarm=true
        - traefik.backend.loadbalancer.stickiness=true
      replicas: 1


  checkout:
    image: *****
    env_file: 
      - ./env/.checkout.env
    depends_on: [ "users", "shop" ]
    networks:
      - backend-network
    expose:
      - "80"
    deploy:
      labels:
        - traefik.port=80
        - traefik.frontend.rule=PathPrefixStrip:/api/checkout
        - traefik.docker.network=backend-network
        - traefik.backend.loadbalancer.swarm=true
        - traefik.backend.loadbalancer.stickiness=true
      replicas: 1


  visualizer:
    image: dockersamples/visualizer:stable
    ports: [ "9000:8080" ]
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      labels: 
        - traefik.enable=false
      placement:
        constraints:
          - node.role == manager

Я скрыл имена образов с помощью ****.

Я создал две виртуальные машины в Azure, я создалРой, Traefik обнаруживает мои сервисы, но когда я пытаюсь сделать запрос, например, с azure-dns/api/shop, он всегда возвращает Bad Gateway.

При использовании docker-compose up в локальном режиме он работает нормально.Я еще не пробовал Docker Swarm локально с docker-машиной.Я скоро буду.

1 Ответ

0 голосов
/ 15 ноября 2018

Убедитесь, что backend-network является оверлейной сетью.

Затем попробуйте сначала без

   - traefik.backend.loadbalancer.swarm=true
   - traefik.backend.loadbalancer.stickiness=true # especially this one

Кажется, что липкая сессия глючит в v1.7 в соответствии с проблемой 3770.

...