簡體   English   中英

Docker 容器中的 Zuul 重定向問題

[英]Zuul Redirect Issue in Docker container

我正在使用 Grail 應用程序並編寫了幾個微服務,這些微服務可由 grails 應用程序訪問。 請求來自 grails 到 4000 端口上的網關。 現在基於請求網關將請求重定向到相應的服務,如身份驗證、通知、報告,這些是微服務。

現在我在 docker 容器中啟動微服務,服務發現在 8761,配置服務器在 8888,zuul 網關在 4000 端口。 通知服務在 8755 端口上運行,當請求通知網關時,它首先重定向到對我來說工作正常的通知,根據應用程序流程,通知將驗證令牌,因此它將調用在 8282 端口上公開的身份驗證服務。 時刻通知正在通過網關向身份驗證發送請求失敗...

當所有服務都啟動並在“localhost”上運行時,一切正常

zuul:
  ignoredServices: '*'
  host:
    connect-timeout-millis: 120000
    socket-timeout-millis: 120000
  routes:
    notification-service:
      path: /notification/**
      url: http://${NOTIFICATION_SERVICE_HOST:127.0.0.1}:8755
      stripPrefix: true
      sensitiveHeaders:
    report-service:
      path: /report/**
      url: http://${REPORT_SERVICE_HOST:127.0.0.1}:8762
      stripPrefix: true
      sensitiveHeaders:
    p2p-auth-service:
      path: /authService/**
      url: http://${AUTH_SERVICE_HOST:172.17.0.1}:8282
      stripPrefix: true
      sensitiveHeaders:

當請求到達通知時,它會正確出現,這意味着我添加的常量 NOTIFICATION_SERVICE_HOST 被我傳遞的 IP 替換。 但是當它調用身份驗證服務時,我已經給出了常量 AUTH_SERVICE_HOST,但同樣的情況並沒有發生。 總是失敗並顯示 500 條空消息。

我的 docker compose 文件如下

version: '3.7'

services:

  configserver:
    image: config
    container_name: configserver
    ports:
      - "8888:8888"
    networks:
      - bridge-abc
    environment:
      SPRING.PROFILES.ACTIVE: native
      EUREKA.CLIENT.SERVICEURL.DEFAULTZONE: http://registry:8761/eureka

  registry:
    image: registry
    container_name: registry
    ports:
      - "8762:8761"
    networks:
      - bridge-abc
    depends_on:
      - configserver
    restart: on-failure
    environment:
      SPRING.PROFILES.ACTIVE: dev
      SPRING.CLOUD.CONFIG.URI: http://configserver:8888/
      EUREKA.CLIENT.SERVICEURL.DEFAULTZONE: http://registry:8761/eureka

  gateway:
    image: gateway
    container_name: gateway
    ports:
      - "4000:4000"
    networks:
      - bridge-abc
    depends_on:
      - configserver
      - registry
    restart: on-failure
    environment:
      SPRING.PROFILES.ACTIVE: dev
      SPRING.CLOUD.CONFIG.URI: http://configserver:8888/
      EUREKA.CLIENT.SERVICEURL.DEFAULTZONE: http://registry:8761/eureka
      REGISTRY_SERVER: registry
      REGISTRY_PORT: 8761
      NOTIFICATION_SERVICE_HOST: 172.17.0.1
      AUTH_SERVICE_HOST: 172.17.0.1

  authservice:
    image: auth-service
    container_name: authservice
    ports:
      - "8282:8282"
    networks:
      - bridge-abc
    depends_on:
      - configserver
      - registry
    restart: on-failure
    environment:
      SPRING.PROFILES.ACTIVE: dev
      SPRING.CLOUD.CONFIG.URI: http://configserver:8888/
      EUREKA.CLIENT.SERVICEURL.DEFAULTZONE: http://registry:8761/eureka
      DB_HOST: 1.2.3.4
      DB_PORT: 1234
      DB_NAME: my-db-name
      DB_USERNAME: user
      DB_PASSWORD: password
      REGISTRY_SERVER: registry
      REGISTRY_PORT: 8761
      

  notification:
    image: notification-service
    container_name: notification
    ports:
      - 8755:8755
    networks:
      - bridge-perfios
    depends_on:
      - configserver
      - registry
    restart: on-failure
    environment:
      SPRING.PROFILES.ACTIVE: dev
      SPRING.CLOUD.CONFIG.URI: http://configserver:8888/
      EUREKA.CLIENT.SERVICEURL.DEFAULTZONE: http://registry:8761/eureka
      REGISTRY_SERVER: registry
      REGISTRY_PORT: 8761
      DB_HOST: 1.2.3.4
      DB_PORT: 1234
      DB_NAME: my-db-name
      DB_USERNAME: user
      DB_PASSWORD: password
      REGISTRY_SERVER: registry
      REGISTRY_PORT: 8761

在上面的 docker compose 文件中,我將 NOTIFICATION_SERVICE_HOST 和 AUTH_SERVICE_HOST 值作為 172.17.0.1 傳遞,以便容器可以相互通信,常量 AUTH_SERVICE_HOST 不起作用並始終假設為 127.0.0.1(常量值不會被 172.17.0.1 替換,始終是假設 127.0.0.1) 而常量 NOTIFICATION_SERVICE_HOST 工作正常,這個常量值被 172.17.0.1 替換

我不確定這里出了什么問題,或者如果缺少某些配置或者我做錯了什么,請提出建議。

我已經解決了這個問題,在每個驗證令牌的微服務中都發生了問題,為此; 它將轉到網關,然后請求將重定向到身份驗證服務。 在解析每個微服務中的 DNS 名稱時,它使用默認 IP 進行映射,即 127.0.0.1。 我已經改變了每個miceroservice的容器/etc/hosts如下

172.17.0.1 'my domain name' 

這解決了我的問題。
現在我需要了解如何使其通用,以便如果我刪除容器並再次運行 docker-compose up 那么下面的詳細信息應該自動更新到容器的主機文件

172.17.0.1 'my domain name'

任何建議都是非常可觀的。

暫無
暫無

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

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