5

Я запускаю Docker Compose (v2) и имею службу узла (веб-сайт) и api на основе python, развернутую с nginx, сидящим перед ними.Автоматически добавлять контейнер докера в восходящую конфигурацию балансира нагрузки nginx

Одна вещь, которую я хотел бы сделать, - это масштабировать службы, добавляя больше контейнеров. Если я заранее знаю, сколько контейнеров у меня будет, я могу жестко настроить nginx upstream config со ссылками на IP-адреса контейнеров, которые предоставляет докер. Однако проблема заключается в том, что я хочу, чтобы восходящая конфигурация nginx была динамической, например. если я добавлю еще один контейнер Docker, он просто добавит добавление местоположения контейнера в верхний список IP-адресов в верхнем блоке.

Моя идея состояла в том, чтобы создать скрипт, который автоматически добавит восходящие серверы, используя переменные env, когда контейнеры меняются, но я не уверен, с чего начать, и не могу найти хороший пример.

ответ

2

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

Первый и самый простой (который отлично работает для одиночных серверов или локально обнаруживает контейнеры на одном сервере) является локальным прокси-сервером, который использует сокет Docker или API. https://github.com/jwilder/nginx-proxy является одним из популярных и должен хорошо работать для создания прототипов масштабируемых сервисов в Compose.

Другой способ (более дружелюбный, но более сложный) - это регистрировать службы в реестре (например, etcd или Consul), а затем динамически записывать конфигурацию. Для этого вы можете использовать систему регистрации (например, https://github.com/gliderlabs/registrator) для регистрации контейнеров и их портов. Затем ваш прокси или приложение может использовать файл конфигурации, который выписывается с использованием системы шаблонов, например https://github.com/kelseyhightower/confd.

+0

это выглядит как раз то, что я искал, спасибо! – ExoticChimp