Добрый день!
На данный момент я занимаюсь разработкой облачного CMS, очень похож на modxcloud.com. Суть такова, что есть дашборд откуда наш клиент создает сайты, далее в админке эти сайты уже конфигурируются клиентом.
Сейчас система работает так:
1) система копирует CMS в директорию /sites/, получается допустим sites/client_url
2) при обращении к client_url.base_url.com загружается сайт из директории sites/client_url
Я думаю modxcloud тоже примерно так же устроен, но как при такой схеме масштабировать сервис? Если сервер будет забит сайтами, каким образом подключить второй сервер?
Сейчас у меня на руках такое решение, но я не знаю насколько оно правильное:
1) Использовать Load Balancer - HaProxy
2) Установить критерий для LB -> если домены имеют заглавные буквы [A-G] (Условно) то идем на первый сервер, если нет, то на второй.
Прошу посвятить меня как правильно организовать инфраструктуру облачного сервиса.
UPD
Табличка с загруженностью серверов я считаю хорошей идеей, после недолгих размышлений пришел к такому алгоритму:
1) Дашборд получает команду от клиента о создании сайта
2) По табличке выбирается наименее загруженный сервер, туда сервер отправляет команду о генерации сайта с необходимыми данными
3) В зависимости от сервера сайт будет иметь адрес вроде такого: site_url.server_alias.base_url.ru
на base_url.ru будет хоститься сам Load Balancer
Но у меня такой вопрос, как в зависимости от тарифного плана ограничивать размер сайта? чтобы клиенты не загружали что попало, допустим максимальный размер на их сайте должен быть 100мб. Как отследить что клиент превысил допустимый объем?