簡體   English   中英

Traefik:在Azure上部署的群集模式下的錯誤網關

[英]Traefik: Bad Gateway in Swarm Mode deployed on Azure

我目前正在嘗試使用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上創建了兩個VM,創建了Swarm,Traefik發現了我的服務,但是當我嘗試通過azure-dns/api/shop發出請求時,它總是返回Bad Gateway。

在本地使用docker-compose up時,它可以正常工作。 我還沒有在本地使用docker-machine嘗試Docker Swarm。 我會盡快。

確認backend-network是覆蓋網絡。

然后先嘗試不

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

根據問題3770,粘性會話似乎在v1.7中存在錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM