приложение для масштабирования колб в AWS ECS с nginx и uwsgi - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь масштабировать микросервис в колбе в AWS ECS для обработки производственных нагрузок. Мое приложение использует колбу-apschedueler для обработки долгосрочных задач. Я использую веб-сервер uwsgi для развертывания в ECS, поэтому я упаковываю приложение в контейнер вместе с сервером uwsgi. Контейнер nginx работает отдельно в кластере ECS.

Мой конфиг uwsgi сейчас использует один процесс, один поток.

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

1) Я могу раскрутить несколько контейнеров, и nginx будет округлять robin для всех них, распределяя запросы одинаково через службу маршрута 53 dns

2) Я могу увеличить числопроцессов в конфиге uwsgi, но это портит мой флеш-апшедулер, так как мне нужен только один его экземпляр. Обходные пути, которые я обнаружил, не такие аккуратные

1 Ответ

1 голос
/ 29 октября 2019

Менталитет докеров больше похож на «один процесс на задачу». Каждый раз, когда в контейнере выполняется более одной задачи, вы должны переосмыслить.

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

Если вам нужен только планировщик, работающий на одной из задачВы должны настроить отдельный сервис, используя тот же образ, но с переменной окружения, чтобы сообщить вашему контейнеру о запуске планировщика. Сделайте это истинным для службы / задачи планировщика и ложным для рабочей службы / задач. Эти переменные ENV могут быть установлены в определении контейнера внутри определения вашей задачи ECS.

Это будет "путь докера".

...