Динамическая настройка порта для моего докеризованного микросервиса - PullRequest
1 голос
/ 13 июня 2019

Я хочу развернуть несколько экземпляров моего микросервиса, который использует определенный порт, но делает его масштабируемым и не фиксирует порт в определении задачи / Dockerfile. Мой микросервис может прослушивать порт, указанный в переменной окружения или в командной строке.

В настоящий момент все микросервисы описаны в определениях задач AWS ECS и имеют статическое назначение портов. Каждый микросервис регистрируется на сервере Eureka, и теперь я могу запускать несколько экземпляров службы только на разных экземплярах EC2.

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

Каков стандартный способ реализации этого?

1 Ответ

0 голосов
/ 13 июня 2019

Просто установите порт хоста на 0 в определении задачи:

Если вы используете контейнеры в задаче с типом запуска EC2, вы можете укажите незарезервированный порт хоста для сопоставления портов вашего контейнера (это упоминается как статическое сопоставление портов хоста ), или вы можете опустить hostPort (или установите его на 0), указав порт контейнера и ваш Контейнер автоматически получает порт (это называется динамическое сопоставление портов хоста ) в диапазоне эфемерных портов для вашего Операционная система экземпляра контейнера и версия Docker.

enter image description here

Диапазон временных портов по умолчанию: 49153–65535, и этот диапазон используется для версий Docker до 1.6.0. Для Docker версии 1.6.0 и позже демон Docker пытается прочитать диапазон эфемерного порта из / proc / sys / net / ipv4 / ip_local_port_range (это 32768–61000 на последний AMI, оптимизированный для Amazon ECS)

Таким образом, вам потребуется приложение LB для маршрутизации трафика на динамический порт.

Вы можете получить помощь из этой статьи динамическое сопоставление портов в ecs-with-application-load-балансировщике .

...