Простите меня, если я задаю глупый вопрос, но я создаю сервер, на котором я буду размещать несколько веб-сайтов Flask, Docker Container, используя Nginx Docker. Теперь у меня вопрос: лучше ли иметь один основной док-контейнер nginx, а затем размещать на нем все мои контейнеры Docker для веб-сайтов, или иметь док-контейнер Nginx для каждого приложения с компоновкой докеров?
Я хочу знать с точки зрения обработки ресурсов и эффективности, какой из них лучше выбрать?
Теперь я использую контейнер докеров для каждого веб-сайта, который я размещаю. Я считаю, что это лучший подход для моего случая. Я могу обслуживать каждый отдельно, и единой точки отказа тоже нет :)
Спасибо! Да, я пришел к такому же выводу. Вы также используете другой контейнер nginx в качестве «маршрутизатора», который передает запросы каждому из других контейнеров nginx? Я вижу, что некоторые люди тоже так делают, но я не уверен, что это необходимо.
Многие дороги ведут в Рим. Если вы следуете «микросервисному подходу», то есть вы ближе к серверной части с путями Nginx и т. д., у вас есть преимущество, заключающееся в том, что вы можете изменить или сломать один сервис, не оказывая большого влияния на другие.
Например, у нас есть DNS -> F5 -> Nginx -> Nginx -> бэкэнд на работе. Без проблем.
Nginx (контейнер) не потребляет много ресурсов, отчасти потому, что он запрограммирован на C.
Так что в принципе лучше иметь контейнер Nginx для каждого док-контейнера веб-сайта?
Да. Но у всего есть преимущества и недостатки. Помимо избыточности и принципа «разделяй и властвуй», например, я бы также обратил внимание на затраченное время, KISS и безопасность. Конечно, проще сделать все в одном, но тогда все сервисы падают, когда приходится перезагружать или возникает проблема с этим одним Nginx.
Это было очень поучительно. Я боялся, что наличие большого количества док-контейнеров nginx потребует много ресурсов. Большое спасибо за ваш ответ
Без проблем. Сколько экземпляров Flask вы хотите запустить?
В настоящее время у меня есть 2 API и 2 веб-сайта. Это может увеличиться в будущем...
Nginx может обрабатывать столько запросов, сколько вы не сможете быстро отследить, просматривая файл журнала с помощью tail -f
, и потратить, возможно, 300 МБ ОЗУ.
@qräbnö У вас есть один контейнер nginx для каждого стека приложения — если n контейнеров приложений, то n контейнеров nginx. Вы также используете другой контейнер nginx впереди в качестве «маршрутизатора», который передает запросы другим контейнерам nginx? Это вообще необходимо?
Какой подход вы в итоге выбрали?