Микросервисы не регистрируются в 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;
}