Назад | Перейти на главную страницу

Конфигурация приложения Laravel со сбалансированной нагрузкой на Forge

Я хочу добавить балансировщик нагрузки в свою кузницу в цифровом океане.

Конфигурация хотелось бы

Балансировщик нагрузки (nginx) Веб-серверы @ 2-4 сервера БД

Мне интересно, в какой конфигурации должны быть эти экземпляры.

У меня есть веб-серверы @ самый маленький экземпляр и остановка / удаление mariadb 512 МБ / 20 ГБ

Сервер БД - 2 ГБ / 40 ГБ

Понятия не имею, какой должна быть конфигурация балансировщика нагрузки.

Я знаю, что это зависит от трафика, который собирается получить сайт, но было бы здорово получить представление об отправной точке. Если у вас 100 000 обращений в день или где точки разрыва балансировщиков нагрузки.

Я думал об использовании Redis для управления состоянием сеанса. Нужно ли мне настраивать отдельный сервер для его запуска или я могу запустить его на своем балансировщике нагрузки?

Я не совсем уверен, о чем просят, но я постараюсь рассмотреть каждый раздел как можно лучше.

Обычно балансировка нагрузки через nginx настраивается так: балансировщик нагрузки> веб-сервер> сервер базы данных. Таким образом, балансировщик нагрузки запрашивает страницу с веб-сервера, а веб-сервер получает данные с сервера базы данных.

Логически это выглядело бы так (правда, его больше, чем нужно)

Но как это устроено физически, это будет выглядеть так

Значит, было бы под тем же вланом. Вы можете настроить его по-разному, но это самая распространенная настройка.


Что касается вопроса о том, как настроить конфигурацию, у digital-ocean уже есть руководство по этому вопросу. https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-load-balancing

Самая важная часть - это апстрим. Он определяет, на какой веб-сервер он собирается, и с помощью весов, какая его часть куда-то направляется.


Вопрос о том, какую нагрузку может выдержать балансировщик нагрузки, зависит от того, сколько вы просите у балансировщика нагрузки. Правила в nginx могут быть довольно сложными и длинными. Могут быть даже сценарии, в которых вам придется писать некрасивые операторы if. У вас может быть множество индивидуальных сценариев для определенных IP-адресов. Все эти вещи, которые необходимо выполнить в конфигурации, увеличивают нагрузку на запрос.

Однако в самой простой конфигурации 100 000 запросов в день - это мизерная сумма, которую может обработать большинство серверов. Сама по себе балансировка нагрузки не делает много работы. Таким образом, вполне возможно, что самый маленький экземпляр может легко обработать 100 тыс. Запросов (при условии отсутствия узкого места в полосе пропускания), но я не знаком с пакетами цифрового океана, чтобы сказать с уверенностью.

Поэтому, если вы чувствуете, что запуск одного только балансировщика нагрузки на сервере является пустой тратой его ресурсов, вы, безусловно, можете поработать над ним, например, с redis. Но это полностью зависит от вас.

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