Я поддерживаю веб-приложение, которое перерастает один VPS. Архитектура состоит из большого числа мелких пользователей, каждый из которых имеет свой собственный поддомен. Пользователи не взаимодействуют. Загрузка означает, что мне нужно переместить некоторых пользователей и всех новых пользователей на другую установку веб-приложения на отдельный сервер.Горизонтальное масштабирование: маршрутизация пользовательских поддоменов между серверами
В настоящее время каждый поддомен каждого пользователя попадает в тот же виртуальный хост, где один фронт-контроллер PHP отображает соответствующий контент на основе имени хоста. Единственная подстановочная DNS-запись для * .mydomain.com указывает на текущий сервер.
Каков наилучший вариант для маршрутизации различных поддоменов пользователей на разные серверы?
Мои мысли:
- новый домен верхнего уровня для каждого сервера. user.s1.mydomain.com, user.s2.mydomain.com и т. д. (информация о неэлементах и утечках)
- Запуск моего собственного DNS-сервера для маршрутизации пользователей между серверами (дополнительная точка отказа, незнакомая технология)
- A центральный фронт-контроллер/балансировщик, который обратный-проксирует каждый запрос на соответствующий сервер (дополнительная точка отказа, потенциально ограниченные соединения)
Является ли пользовательский контент для каждого субдомена все в базе данных или они загружают свои собственные данные в файловую систему на сервере? – drew010
@ drew010 Пользовательский контент сохраняется как в базе данных, так и в файловой системе. Поскольку пользователи не взаимодействуют, я могу свободно настраивать несколько экземпляров базы данных ... проблема - это просто запросы к странице маршрутизации. Я полагаю, что разделение db + веб-серверов станет еще одним возможным способом масштабирования, но в итоге мне придется разделить веб-сервер и потребуется решение. – mappu
Вот что я понял. Я склоняюсь больше всего к DNS, но это означает, что вам понадобится запись A для каждого субдомена или настраиваемое DNS-решение, которое может запросить ваше приложение, чтобы определить, какой IP-адрес использовать для данного субдомена.Теперь у вас могут быть лучшие результаты, задающие это на ServerFault, когда я думаю об этом. – drew010