Настройка Netflix Eureka с использованием Spring Boot Microservices на AWS EC2 (Route 53 + VPC) - PullRequest
2 голосов
/ 19 апреля 2019

Мы пытаемся развернуть набор микросервисов (написан на Spring Boot 2) на AWS, и мы хотим включить обнаружение служб с помощью Eureka.

Сервер Eureka работает на Tomcat 9 на экземпляре Linux EC2. Панель инструментов Eureka доступна, но клиенты не регистрируются. Однако клиенты успешно зарегистрировались на локальном хосте.

Из-за нехватки ресурсов мы не можем использовать EIP для микросервисов. Мы используем Маршрут 53 вместе с Виртуальным частным облаком для маршрутизации.

Я обнаружил, что некоторые упоминания об этой установке в основном совместимы, но без инструкций:

Зарегистрируйте узел VPC Eureka в Route53 вместо EIP

Обнаружение служб - микросервисы на AWS

Вот наши свойства сервера Eureka:

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

# below are prod environment variables
eureka.us-east-1.availabilityZones=us-east-1a
eureka.serviceUrl.us-east-1a=https://eureka.mydomain.com/

eureka.shouldUseDns=true
eureka.eurekaServer.domainName=eureka.mydomain.com/
eureka.eurekaServer.port=8081
eureka.eurekaServer.context=svc
eureka.datacenter=cloud

Вот наши свойства клиента Eureka:

eureka.us-east-1.availabilityZones=us-east-1a
eureka.serviceUrl.us-east-1a=https://eureka.mydomain.com/

eureka.shouldUseDns=true
eureka.eurekaServer.domainName=eureka.mydomain.com/
eureka.eurekaServer.port=8081
eureka.eurekaServer.context=svc
eureka.datacenter=cloud

Буду очень признателен за любую помощь в нашей ситуации! Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 02 мая 2019
  1. Кажется, вы используете Eureka на порту 8081. Сервер Eureka обычно работает на порту 8761.
  2. Вы создали конечные точки маршрута 53 (TXT Records) Ref: https://github.com/Netflix/eureka/wiki/Deploying-Eureka-Servers-in-EC2

  3. Клиенты Eureka должны иметь следующую конфигурацию: https://cloud.spring.io/spring-cloud-netflix/multi/multi__service_discovery_eureka_clients.html

`

   @Bean
   @Autowired
   @Profile("!default")
   public EurekaInstanceConfigBean eurekaInstanceConfig(InetUtils inetUtils) {
    EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inetUtils);
    AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
    config.setHostname(info.get(AmazonInfo.MetaDataKey.publicHostname));
    config.setIpAddress(info.get(AmazonInfo.MetaDataKey.publicIpv4));
    config.setNonSecurePort(appPort);
    config.setDataCenterInfo(info);
    return config;
   }    

`

Надеюсь, это поможет.

...