Spring微服务多网络环境下Eureka注册IP地址错误导致API网关无法访问的问题咨询
Spring微服务多网络环境下Eureka注册IP地址错误导致API网关无法访问的问题咨询
各位大佬好,我最近在容器化Spring微服务集群时遇到了一个棘手的问题,想请教下大家有没有解决方案:
我的集群包含两个Spring服务(serviceA、serviceB)、PostgreSQL数据库、Eureka注册中心以及Spring API网关,同时配置了两个外部Docker网络:
- net-ms:用于连接serviceA、serviceB、Eureka注册中心和API网关
- net-db:用于连接serviceA和数据库
我在Eureka的配置中设置了prefer-ip-address=true,但启动整个集群后,经常出现serviceA将自己在net-db网络中的IP地址注册到Eureka的情况,而不是我们期望的net-ms网络IP。这直接导致API网关报错,提示无法访问serviceA。
举个实际例子:
serviceA有两个IP:172.19.0.2(属于net-ms)和172.20.0.4(属于net-db),Eureka注册中心的IP是172.19.0.5,但serviceA却把172.20.0.4这个net-db的IP注册到了Eureka上。
以下是我的docker-compose配置文件:
services: discovery-server: container_name: discovery-server healthcheck: test: "wget -T5 -qO - http://localhost:8761/actuator/health | grep UP || exit 1" interval: 1m timeout: 5s retries: 3 start_period: 30s networks: - net-ms serviceA: container_name: serviceA depends_on: discovery-server: condition: service_healthy database: condition: service_healthy command: --eureka.client.serviceUrl.defaultZone=http://discovery-server:8761/eureka environment: SPRING_DATASOURCE_URL: jdbc:postgresql://database:5432/foo networks: - net-ms - net-db serviceB: container_name: serviceB depends_on: discovery-server: condition: service_healthy database: condition: service_healthy command: --eureka.client.serviceUrl.defaultZone=http://discovery-server:8761/eureka networks: - net-ms api-gateway: container_name: api-gateway depends_on: discovery-server-ms: condition: service_healthy command: --eureka.client.serviceUrl.defaultZone=http://discovery-server:8761/eureka ports: - "8080:8080" networks: - net-ms database: container_name: postgres image: postgres:17.5 healthcheck: test: "pg_isready -U postgres -d postgres" interval: 1m timeout: 10s retries: 3 start_period: 30s networks: - net-db networks: net-ms: external: true net-db: external: true
想请教大家:有没有办法让serviceA在Eureka中注册指定的net-ms网络的IP地址呢?
内容来源于stack exchange
相关产品推荐
相关产品推荐

