Добрый день!
Используете ли вы внутренние балансеры nginx для балансировки запросов между микросервисами?
Что я имею ввиду:
внутренние балансеры - сервера с nginx, на которые нет доступа из интернета. Могут использоваться для обработки запросов других сервисов
внешние балансеры - сервера с nginx, на которые есть доступ из интернета. Могут использоваться для обработки запросов других сервисов и внешних клиентов.
Или возможно вы используете другой способ?
Если вам нужно распределять запросы по разным микросервисам - то как вы это делаете?
Правильно понимаю что можно использовать Consul (либо Consul DNS, либо встраивание в приложение информации о Consul)?
По поводу Kubernetes: кроме того что надо приложение переводить в docker как приложение узнает адреса других микросервисов? Приложение должно быть переписано с поддержкой Service Discovery (будем рассматривать вариант что приложение не поддерживает Service Discovery)?
Плюсы и минусы различных вариантов
Как я вижу плюсы и минусы для варианта с внутренними балансировщиками nginx:
Плюсы
- проще начать тем кто не знает о Consul DNS или Service Discovery
- проще обслуживать тем кто не знает о Consul DNS или Service Discovery
Минусы
- Избыток (OverHead) сетевых взаимодействий, т.к. трафик идет через внутренний балансер nginx
- Большая задержка от падения микросервиса до вывода его из конфига nginx
- Либо не вывод упавшего микросервиса
Как я вижу плюсы и минусы для варианта с Consul DNS или Kubernetes:
Минусы
- Если приложение не поддерживает Service Discovery, то нужно добавлять на каждый сервер Consul DNS
- тяжелее начать тем кто не знает о Consul DNS или Service Discovery
- тяжелее обслуживать тем кто не знает о Consul DNS или Service Discovery
Плюсы
- меньше сетевых взаимодействий, т.к. трафик НЕ идет через внутренний балансер nginx
- Минимальная задержка от падения микросервиса до сообщения другим микросервисам что ему не нужно отправлять запросы
Спасибо.