У меня есть несколько микросервисов на Heroku - eureka-сервер, Zuul-сервер и некоторые сервисы приложений.
Хотя я пытаюсь получить доступ к любой из моих служб, например, «service1» через шлюз Zuul, Zuul не может переслать запрос соответствующей службе (когда я пытаюсь запустить их локально, все работает нормально).
Я нашел следующие ошибки в логах Zuul:
com.netflix.zuul.exception.ZuulException: Forwarding error
Caused by: com.netflix.client.ClientException: Load balancer does not have the available server for the client: service1
Ниже приведены конфигурации моих услуг:
1) "сервер zuul" application.yml
server:
port: ${PORT:8000}
zuul:
prefix: /api
ignoredServices: '*'
routes:
service1:
path: /path_for_service1/**
serviceId: service1
strip-prefix: false
...
management:
endpoints:
web:
exposure:
include: "*"
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_URL:http://localhost:5000}/eureka/
2) "сервер eureka" application.yml
server:
port: ${PORT:5000}
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.1) "service1" application.yml
server.port=${PORT:8081}
eureka.client.service-url.defaultZone=${EUREKA_URL:http://localhost:5000}/eureka/
3.2) "service1" bootstrap.yml
spring:
application:
name: service1
Все микросервисы видны на приборной панели eureka.
Если я изменю маршруты zuul на жестко запрограммированный URL, он будет работать хорошо, но это не то, что я ищу.
zuul:
prefix: /api
ignoredServices: '*'
routes:
service1:
path: /path_for_service1/**
url: http://url_of_service_1
strip-prefix: false
Не могли бы вы помочь мне с этим вопросом?