Микро-сервисы JHipster не могут правильно зарегистрироваться в Eureka на AWS - PullRequest
0 голосов
/ 03 мая 2018

У меня есть приложение Spring Cloud, хорошо работающее на AWS. Я решил добавить сгенерированные JHipster микро-сервисы (шлюз JHipster и UAA). Обе эти службы регистрируются на существующем сервере Eureka, как и все предыдущие.

Все работает нормально на локальном компьютере или работает в контейнерах Docker, развернутых на экземпляре EC2 в AWS.

Однако при развертывании на разных экземплярах EC2 сгенерированные JHipster службы регистрируются неправильно. Пользовательский интерфейс Eureka отображает:

Application     AMIs                Availability Zones              Status
HELLO-SERVICE   ami-809f84e6 (2)    eu-west-1b (1), eu-west-1a (1)  UP (2) - i-02eg07053a672ea37 , i-083c2f2204d01f4ba
UAA             n/a (2)             (2)                             UP (2) - 97b39345fb59:uaa:9999 , ga6831e52701:uaa:9999
  • "HELLO-SERVICE" - простое приложение с весенней загрузкой. Eureka отображает информацию AWS и связывает ее с частным ip / портом, который работает.
  • "UAA" генерируется Jhipster. В Eureka отсутствует информация AWS для этой службы, и она связывает ее с адресом 172.17.x.x.x, который не работает.

Что меня беспокоит, так это то, что обе службы используют одни и те же файлы конфигурации eureka:

eureka:
  datacenter: cloud
  instance:
    preferIpAddress: true
  client:
    healthcheck:
      enabled: true
    registerWithEureka: true
    fetchRegistry: true
    region: eu-west-1
    preferedSameZone: true
    availabilityZones:
      eu-west-1: eu-west-1a,eu-west-1b
    serviceUrl:
      eu-west-1a: http://[eurekainstance]:8761/eureka/
      eu-west-1b: http://[eurekainstance]:8761/eureka/

Почему приложение, сгенерированное JHipster, и простое приложение Spring Boot ведут себя по-разному, используя одну и ту же конфигурацию? У меня закончились идеи, любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 03 мая 2018

Я отвечу на свой вопрос, если он кому-нибудь пригодится. Эта проблема не имела ничего общего с JHipster или AWS, но с Docker.

Добавление EurekaInstanceConfigBean решило эту проблему:

public EurekaInstanceConfigBean eurekaInstanceConfig(InetUtils inet) {
        EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inet);
        AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
        config.setDataCenterInfo(info);
        info.getMetadata().put(AmazonInfo.MetaDataKey.localHostname.getName(), info.get(AmazonInfo.MetaDataKey.localIpv4));
        config.setHostname(info.get(AmazonInfo.MetaDataKey.localHostname));
        config.setIpAddress(info.get(AmazonInfo.MetaDataKey.localIpv4));
        config.setNonSecurePort(port);
        return config;
    }

См. документацию для получения дополнительной информации.

...