
У меня есть несколько разных приложений Docker, каждое из которых имеет собственный сервис Nginx, который отправляет трафик в свои контейнеры на основе некоторых правил.
Мне нужно разместить эти приложения на одном сервере, поэтому я добавил на хост новый Nginx, который будет обрабатывать SSL и перенаправлять трафик на правильный Docker-ориентированный Nginx.
Вопрос: Можно ли использовать Nginx на хосте, который будет пересылать трафик на несколько разных докеризованных Nginx? Есть ли у него какие-либо известные проблемы? Повлияет ли это на производительность?
решение1
Можно ли использовать Nginx на хосте, который будет перенаправлять трафик на несколько различных Docker-совместимых Nginx?
Да, на самом деле это обычная практика.
Известны ли какие-либо проблемы?
Вызвано самой этой установкой — нет.
Повлияет ли это на производительность?
В каком-то смысле — конечно: как и любой другой балансировщик нагрузки (которым он и является), он добавит некоторую задержку в буферизацию и TCP-сокеты.
решение2
Можно ли использовать Nginx на хосте, который будет перенаправлять трафик на несколько различных Docker-совместимых Nginx?
Да. Это один из способов сделать это.
Известны ли какие-либо проблемы?
Хост-экземпляр NGINX не контейнеризирован, что может усложнить его настройку. Другой распространенный способ сделать это — привязать контейнер docker к порту
80
,443
который обрабатывает весь входящий трафик и перенаправляет его в соответствующий контейнер.Наконец, другие системы оркестровки контейнеров, такие как Kubernetes, имеют концепцию
Ingress
встроенного и позволяют настраивать ее так же, как вы настраиваете контейнер в Docker Compose. Преимущество Kubernetes Ingress в том, что он может масштабироваться вверх/вниз на несколько серверов, тогда как Docker Compose более ограничен.Повлияет ли это на производительность?
Наличие дополнительного маршрута для доставки к контейнеру назначения отрицательно сказывается на производительности, но это обычная практика.