Объединение SpringBoot, Zuul и Eureka, но привязка сервисов к Localhost

Я настроил Zuul для маршрутизации и Eureka для обнаружения служб, и все работает нормально. Перед установкой Eureka я использовал server.address=127.0.0.1 для привязки моей фактической службы к localhost, чтобы к ним можно было получить доступ только из шлюза Api.

При объединении Зуула и Эврики server.address=127.0.0.1 больше не работает. Я не могу получить доступ к своим фактическим конечным точкам REST ни изнутри моей сети, ни извне.

application.properties моего обнаружения службы Eureka:

spring.application.name=service-discovery
server.port=8761
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false

application.properties моего шлюза Zuul API:

spring.application.name=api-gateway
zuul.prefix=/api
server.port=8080

ribbon.eureka.enabled=true
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

zuul.routes.library.path=/library/**
zuul.routes.library.serviceId=library

application.properties моей реальной службы REST:

spring.application.name=library
server.servlet.context-path=/library
server.port=8090
server.address=127.0.0.1

ribbon.eureka.enabled=true
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

Когда я удаляю server.address=127.0.0.1 из файла свойств службы REST, я, конечно, могу получить доступ к ресурсу - но также и без localhost, чего я не хочу.

Итак, я пытаюсь добиться того, чтобы к моим маленьким микросервисам можно было получить доступ только из localhost (после того, как запрос прошел через шлюз Zuul API). Кроме того, я хочу использовать Eureka для обнаружения сервисов и для того, чтобы иметь возможность предоставлять вторые экземпляры serives.


person pixelstuermer    schedule 16.03.2018    source источник


Ответы (1)


Регистрация реальных микросервисов с eureka.instance.hostname=localhost или eureka.instance.ip-address=127.0.0.1 на сервере Eureka в сочетании с привязкой микросервиса к localhost (server.address=127.0.0.1) сделала свою работу.

Это файлы application.properties:

application.properties моего обнаружения службы Eureka:

spring.application.name=service-discovery
server.port=8761
server.address=127.0.0.1
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false

application.properties моего шлюза Zuul API:

spring.application.name=api-gateway
zuul.prefix=/api
server.port=8080
ribbon.eureka.enabled=true
eureka.client.registerWithEureka=false
zuul.routes.library.path=/library/**
zuul.routes.library.serviceId=library
zuul.routes.library.stripPrefix=false

application.properties моей реальной службы REST:

spring.application.name=library
server.servlet.context-path=/library
server.port=8090
server.address=127.0.0.1
ribbon.eureka.enabled=true
eureka.client.registerWithEureka=true
eureka.instance.hostname=localhost
eureka.instance.ip-address=127.0.0.1

Микросервис «библиотека» теперь доступен только с localhost, но все еще зарегистрирован на Eureka и за шлюзом Zuul API.

person pixelstuermer    schedule 19.03.2018