Правильное использование AWS CloudMap DNS SRV-Record Service Discovery в Amazon ECS - PullRequest
0 голосов
/ 26 марта 2019

В настоящее время мы используем Amazon ECS для развертывания нашего специализированного приложения, которое использует потоковую передачу NATS и трассировку Jaeger. У нас есть несколько экземпляров контейнеров, которые не предоставляют сами сервисы и поэтому могут без проблем работать в варианте с отображением портов хоста.

Моя проблема в том, что я хочу настроить несколько сервисов, таких какasticsearch или NATS, как кластерное приложение. Чтобы управлять этими службами в кластере, они должны иметь возможность обнаруживать другие экземпляры. Первый вариант для контейнеров, которым требуется поддержка кластера, - это использовать сетевой режим awsvpc, чтобы обеспечить постоянный метод поиска через записи DNS A, когда службы запускаются и присоединяются к соответствующим кластерам. Это решение негибкое, потому что я могу запустить только один экземпляр контейнера для каждого экземпляра ec2 из-за статического сопоставления портов хоста и контейнера, а количество экземпляров awsvpc, использующих поиск записей A DNS, ограничено ENI. Это становится проблемой, когда у нас несколько кластеризованных сервисов, работающих в довольно небольшом кластере. Использование большего количества экземпляров EC2 только для того, чтобы иметь больше ENI для работы, невозможно, так как экземпляры кластера ec2 большую часть времени не находятся под большой нагрузкой.

Мой лучший сценарий - использование уже доступных DNS-записей SRV для ускорения кластеризованной службы в контейнерах и использования указанных SRV-записей для динамического обнаружения. Большинство приложений не поддерживают это из коробки, хотя.

Как люди, которые используют ECS в масштабе, решают эту проблему? Они просто загружают больше экземпляров EC2, хотя это не является необходимым с точки зрения загрузки?

Это общая проблема, связанная с тем, как спроектирован ECS?

Можете ли вы использовать контейнер с коляской, который обнаруживает другие сервисы и действует как своего рода прокси для основного контейнерного сервиса?

Я потратил немало времени на чтение документации в AWS, и они также не обеспечивают наилучшую практику для развертывания кластерных контейнерных приложений. Мне кажется, что я вынужден использовать awsvpc, чтобы это произошло.

...