Маршрутизация AWS ECS Zuul - PullRequest
       29

Маршрутизация AWS ECS Zuul

1 голос
/ 17 апреля 2019

Я настраиваю Spring Cloud в AWS ECS, но у меня проблема с Zuul / Eureka.Когда я пытаюсь достичь конечной точки "/ api / second / service2", я вижу эту ошибку:

Причина: com.netflix.client.ClientException: у балансировщика нагрузки нет доступного сервера для клиента: service2

Я использую Elastic IP для Eureka, как описано здесь https://github.com/Netflix/eureka/wiki/Deploying-Eureka-Servers-in-EC2.У меня есть 2 весенних загрузочных приложения, и я вижу их обоих в Eureka.Я могу поразить конечную точку напрямую.eureka

Это конфигурация для сервера Eureka:

server:
  port: 8761
eureka:
  client:
    fetchRegistry: false
    registerWithEureka: false
    eurekaServerURLContext: eureka
    region: eu-west-3
    eurekaServerPort: 8761
    useDnsForFetchingServiceUrls: true
    eurekaServerDNSName: my.dns
  datacenter: cloud

Служба 2:

spring:
  application:
    name: service2
server:
  port: 8882
eureka:
  datacenter: cloud
  instance:
    preferIpAddress: true
  client:
    fetchRegistry: true
    eurekaServerURLContext: eureka
    region: eu-west-3
    eurekaServerPort: 8761
    useDnsForFetchingServiceUrls: true
    eurekaServerDNSName: my.dns

Zuul:

pring:
  application:
    name: api-gateway
server:
  port: 8080
eureka:
  datacenter: cloud
  client:
    fetchRegistry: true
    eurekaServerURLContext: eureka
    region: eu-west-3
    eurekaServerPort: 8761
    useDnsForFetchingServiceUrls: true
    eurekaServerDNSName: my.dns

zuul:
  prefix: /api
  routes:
    first-service:
      path: /first/**
      serviceId: service1
    second-service:
      path: /second/**
      serviceId: service2

У вас естьЛюбая идея, где может быть проблема?

РЕДАКТИРОВАТЬ: Это работает, только если я сопоставить порт моего экземпляра service2 с 8882 на порт 80

1 Ответ

0 голосов
/ 19 апреля 2019

Как я вижу, ваш service2 не зарегистрирован в eureka, например:

eureka:
  client:
    registerWithEureka: true

остальные настройки не нужны, это настройки для сервера eureka, и вы не должны настраивать eurekaсервера в любой службе, это делается в самой службе eureka.

И он должен получить реестр, поэтому в service2 у вас будет

spring:
  application:
    name: service2
server:
  port: 8882
eureka:
  client:
    registerWithEureka: true
    fetchRegistry: true

То же самое относится и к остальной частиуслуги

...