Как вы обращаетесь к серверу Eureka в AWS ECS?
Мои требования / текущая настройка
- Сервер Eureka развернут как служба ECS с типом запуска EC2
- Включено обнаружение служб (из ECS), которое создает DNS-запись Route53 для сервера Eureka (например, eureka.local)
- Eureka Сервер только
для сервисов среднего уровня, следовательно, нет внешнего адреса Eureka Server
нужен / хотел
- Eureka Server развернут на нескольких АЗ в одном регионе
- Клиент Eureka должен обратиться к серверу Eureka
- Я хотел бы использовать встроенные в Eureka функции, такие как привязка к AWS-Zone, что означает, что я хочу, чтобы клиент Eureka сначала общался с сервером Eureka в своем собственном АЗ, и прибегал к серверу Eureka другого АЗ, только когда в своем собственном AZ не доступен.
Адресация через DNS от Route53
Когда я устанавливаю свойство eurekaServerDNSName, я получаю следующее исключение, потому что не удается найти запись txt для записи DNS. Есть ли способ также создать запись TXT, и если да, как мне установить ее для ECS Service Discovery?
eurekaServerDNSName: service-registry.local
Исключение:
Caused by: java.lang.RuntimeException: Failed to initialize DiscoveryClient!
ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'eurekaAutoServiceRegistration'; nested exception is java.lang.NullPointerException
c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via DNS: txt.eu-west-1.service-registry.local
Кроме того, когда я хочу создать запись txt в Route53 для своих служб, я получаю сообщение об ошибке, что я не могу изменить эту запись, например: «Хост-зона ресурса / yyy может управляться только через servicediscovery.amazonaws. ком». Поэтому мне интересно, как я могу использовать конфигурацию DNS с AWS ECS для конфигурации Eureka.
Эластичные IP-адреса как альтернатива
Поскольку Elastic IP (EIP) предоставляют общедоступный IP, для нас это невозможное решение.