Микросервисы не регистрируются в Eureka с AWS fargate

Я пытаюсь развернуть свои пружинные загрузочные микросервисы в AWS ECS. Я смог запустить контейнер Eureka как задачу, и она работает нормально. Но когда я запускаю любую другую микросервисную службу с AWS Fargate, это показывает журнал

[ main] c.n.e.transport.JerseyReplicationClient : Cannot find localhost ip java.net.UnknownHostException: 4terdtrtxxx: 53543xxxxd: Name does not resolve at java.net.InetAddress.getLocalHost(InetAddress.java:1505) ~[na:1.8.0_151] ... , Я думаю, что проблема заключается в том, что при запуске AWS Fargate Springboot не может определить свой IP-адрес для регистрации в Eureka. Как я могу решить это?

1 ответ

Решение

Проблема в том, что клиент eureka не получает правильный IP от службы метаданных Fargate. Я решил это, переписав IP (сам называл этот сервис метаданных). Я создал образец, который показывает, как это сделать.

Я надеюсь, что подобная функция будет включена в клиент eureka.

Вы можете использовать этот метод, если используете весеннее облако:

@Bean
public EurekaInstanceConfigBean eurekaInstanceConfig(InetUtils inetUtils){
    EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inetUtils);
    String ip = null;
    try {
        ip = InetAddress.getLocalHost().getHostAddress();
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }
    config.setIpAddress(ip);
    config.setPreferIpAddress(true);
    return config;
}
Другие вопросы по тегам