Nginx с docker load balancing app server (php)

Я пока не нашел решения, поэтому спрашиваю здесь:

Это ситуация, для которой я фиксирую решение:

Мы планируем архитектуру, которая содержит следующие компоненты

  1. Docker Container (автоматическая балансировка нагрузки по мере необходимости) Сервер приложений, который обрабатывает входящие данные (импорт, хранение бэкенда, web api)
  2. Сервер очереди
  3. Docker Container (автоматическая балансировка нагрузки по мере необходимости) Приложение, которое обрабатывает каждый элемент очереди и сохраняет его на сервере эластичного поиска и в базе данных MySQL (ES используется для запросов и вывода клиентам)
  4. Docker Container (автоматическая балансировка нагрузки по мере необходимости) Приложение, которое обрабатывает сбор исходящих данных

У меня почти все полностью настроено. Единственное, для чего у меня нет решения - это балансировка нагрузки на Frontend (Frontend Nginx Server). Мне это нужно только для связи с 1 и с 4. Их количество может меняться, поэтому Nginx должен быть способен знать, сколько контейнеров существует. Обработка сессий работает (Redis Backend) (Проверено с помощью балансировки нагрузки на 8 App-серверах и инструмента для стресс-тестирования). Но я не знаю, как обрабатывать связь между различным количеством серверов приложений и Nginx. Если кто-нибудь может подсказать мне, как это настроить. Любая подсказка по решению этой проблемы будет принята с благодарностью.

Chris

0
задан 8 November 2018 в 23:54
1 ответ

opensvc предоставляет решение для этого https://docs.opensvc.com/latest/agent.configure.gobtw.html

там есть демонстрация экрана такой кластер на домашней странице

Почему я предлагаю это решение: кластер

  • opensvc может быть настроен для использования частного решения для управления DNS в масштабе всего кластера. На основе PowerDNS кластер поддерживает записи DNS всех служб opensvc , развернутых в кластере. Как только создается новый док-контейнер, на карте DNS появляется новая запись SRV .

  • в такой настройке также необходимо развернуть cni + weave , чтобы иметь частный растянутый сетевой IPAM рабочий кластер, чтобы предоставить частный IP-адрес новым контейнерам.

  • opensvc завершают картину развертыванием входного шлюза. С одной стороны, он содержит общедоступный IP-адрес, к которому подключаются конечные пользователи приложения, а с другой стороны, он поддерживает список всех контейнеров докеров, фактически обслуживающих приложение.

  • Все это становится динамическим путем добавления ] opensvc обслуживает контейнер докеров, который прослушивает события кластера (например, «порожден новый контейнер») и автоматически настраивает входной шлюз для добавления еще одного контейнера докеров в бэкэнд.

0
ответ дан 5 December 2019 в 05:05

Теги

Похожие вопросы