Проблема здесь заключается в том, как работают кластеры ECS.Если вы зайдете на свою панель инструментов и проверите определение своей задачи, вы увидите IP-адрес, который AWS назначает ресурсу автоматически.
В случае Eureka вам нужно каким-то образом получить этот IP-адрес при развертывании eureka.клиентские приложения и используйте его для регистрации на вашем eureka-сервере.Но, конечно, ваши определения задач каким-то образом уничтожаются и воссоздаются заново, поэтому вы легко их потеряете.
Я делал это раньше, и есть несколько способов добиться этого.Вот один из способов:
- Для экземпляров EC2, для которых вы собираетесь распространять задачи ECS как eureka-сервер или реестр, вам необходимо назначить эластичные IP-адреса, чтобы вы всегда знали, куда подключиться вусловия ip-адреса хоста.
- Вам также необходимо правильно пометить их, чтобы можно было ссылаться на них на следующем шаге.
- Затем, переключаясь обратно на ECS, при развертывании задач сервера eureka,внутри вашей конфигурации определения задачи есть аргумент
placement_constraint
. Это позволит вам добавить тег к вашим задачам, чтобы вы могли разместить их в экземплярах, которым вы назначали эластичные IP-адреса на предыдущих шагах. - Теперь, еслиэто все хорошо, и вы развернули все, вы должны быть в состоянии отослать свои приложения клиента eureka к этому ip и зарегистрировать их.
Я знаю, что это выглядит грязно и довольно сложно, но дело в том,Проект Netflix OSS для Eureka содержит недостающие части, которые, я считаю, являются их собственной реализацией для внутреннего использования, и они делаютНе хочу делиться.
Другой и, вероятно, более холодный способ сделать это - использовать домен Route53 или запись псевдонима для ваших экземпляров, поэтому вместо использования эластичного ip вы также можете ссылаться на них с помощью DNS.