Архитектура отказоустойчивого сервера

12 3
E
На сайте с 22.04.2013
Offline
82
778

Доброго времени суток!

Помогите с разработкой архитектуры хранения большого количества сайтов. В наличии есть мощный сервер с панелью управления сайтами. Количество сайтов насчитывает около 10000 привязанных к CloudFlare. Все сайты содержат лэндинги написанные на PHP, и файловая структура каждого сайта почти не меняется. С недавних пор началась проблемы с сервером с потерей доступности, и мы пришли к выводу, что панель не выдерживает такое количество сайтов. После неудачных попыток решить проблему, мы решили уйти с панели и перейти на чистый LEMP стек (Nginx, PHP без Mysql), либо что-то лучше. В нашем будущем архитектурном решении необходима высокодоступность всех сайтов, отказоустойчивость. В свою очередь я нашел решение на основе Glusterfs, где можно реализовать распределенную файловую систему, путем объединения 2-3 серверов в кластер с репликацией всех сайтов, а в качестве балансировщика можно использовать CloudFlare Load Balancer. Хотелось бы услышать иные подходы для решения данной проблемы.

Большое спасибо за ответы.


Artisan
На сайте с 04.03.2005
Offline
358
#1
Ecdrosil :
Помогите с разработкой архитектуры хранения большого количества сайтов.

Вам достаточно VPS за USD 2 (два) в месяц в хорошем месте.

www.leak.info / ДАРОМ линки конкурентов и забытых доменов
WS
На сайте с 01.11.2008
Offline
140
#2
а в чём заключалась "потеря доступности"?
E
На сайте с 22.04.2013
Offline
82
#3
Владимир #:
а в чём заключалась "потеря доступности"?

Нам очень критично, что бы сайты, который находились на сервере были всегда доступны.

Столкнулись с проблемами  отключение/перезагрузка сервера, аномальное зависание PHP сокета. Также было дело, когда добавляли домены через API, и nginx повис пока не перезапустили. Все  эти проблемы привели к потере времени а это в свою очередь потеря $.

Поэтому стоит задача, что бы когда с одним сервером что то произошло и он перестал быть доступный, весь трафик переключился на другой (репликация/зеркало). С помощью CloudFlare можно организовать балансировщик, но вот по внутренней архитектуре хз, либо синхронизация файлов + nginx конфигов или объединение 2-3 серверов в один том с репликацией файлов.

Aisamiery
На сайте с 12.04.2015
Offline
297
#4

В целом, вам надо 2 виртуальных сервера в разных ДЦ у одного провайдера и один плавающий IP и чтоб у хостера было api для работы и скрипт который будет мониторить сервера и в случае падения того на ком сейчас назначен IP переназначать на живой. Если сложнее то вам нужно затолкать ваши сайты в контейнеры и есть решения типа кубернетес которые умеют разворачивать контейнеры на живых серверах автоматом. Ну либо самое простое отказаться от PHP, сделать лендинги статикой и развернуть на CDN и подобных штуках. Если есть заявки там формы и прочее можно развернуть их в облачных функциях (лямбдах). Это самые тривиальные наверное решения

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
Владимир Коток
На сайте с 04.12.2011
Offline
107
#5

Я бы, на месте ТС, купил дедик, порезал его на ВПСки, из расчета по 100 сайтов на ВПС. А с панелью управления сайтами не заморачивался, а всё реализовал бы через BrainyCP. Через неё же реализовал квотирование процессорной нагрузки на каждый виртуальный сервер.

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

Всё для лидогенерации - Лучшие и бесплатные решения: https://reg-hosting.ru
WS
На сайте с 01.11.2008
Offline
140
#6

Ecdrosil #:

Столкнулись с проблемами  отключение/перезагрузка сервера, аномальное зависание PHP сокета. Также было дело, когда добавляли домены через API, и nginx повис пока не перезапустили.

somaxconn значение стоит по умолчанию?

Aisamiery
На сайте с 12.04.2015
Offline
297
#7
Владимир Коток #:
Я бы, на месте ТС, купил дедик, порезал его на ВПСки, из расчета по 100 сайтов на ВПС

ТС вроде хочет как проще, а не как сложнее =)) а когда (ни если) винты сдохнут простоя типа не будет? =)) 

Владимир Коток #:
Через неё же реализовал квотирование процессорной нагрузки на каждый виртуальный сервер.

Зачем вам квотировать свои же сайты? Запускаете каждый сайт в своем контейнере например докером и в целом виртуалки не нужны совсем, у докера в отличии от KVM например нет оверхэда на гипервизор

E
На сайте с 22.04.2013
Offline
82
#8
Владимир #:

somaxconn значение стоит по умолчанию?

Вот это надо уточнить у админов севера

E
На сайте с 22.04.2013
Offline
82
#9
Aisamiery #:

В целом, вам надо 2 виртуальных сервера в разных ДЦ у одного провайдера и один плавающий IP и чтоб у хостера было api для работы и скрипт который будет мониторить сервера и в случае падения того на ком сейчас назначен IP переназначать на живой. Если сложнее то вам нужно затолкать ваши сайты в контейнеры и есть решения типа кубернетес которые умеют разворачивать контейнеры на живых серверах автоматом. Ну либо самое простое отказаться от PHP, сделать лендинги статикой и развернуть на CDN и подобных штуках. Если есть заявки там формы и прочее можно развернуть их в облачных функциях (лямбдах). Это самые тривиальные наверное решения

Я думал о докере и кубе, но вот задача еще есть как кластеризировать nginx для передачи конфигов между серверами. При добавлении домена на первом должна происходить синхронизация. В Pro версии есть что то подобное, но стоит больших денег за одну функцию. пришел к выводу только костылями через скрипты. От PHP к сожалению отказаться не можем. 

Aisamiery
На сайте с 12.04.2015
Offline
297
#10
Ecdrosil #:
Я думал о докере и кубе, но вот задача еще есть как кластеризировать nginx для передачи конфигов между серверами.

Я не понял про что вы, если вы про кубер то не понял при чем тут конфиги nginx, если про 2 сервера то объединяете их в локальную сеть и самое банальное рсинкаете. Если у вас в целом докер используется, то вам надо почитать про traefik он умеет дискаверить без перезагрузок и синхронизаций

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий