LINUX.ORG.RU

Как организовать свой маленький распределенный хостинг.

 , , ,


0

2

Доброго времени суток. Возможно термин "распределенный" не совсем походит для моей задачи, но все же:

Ситуация то вообщем-то простейшая, есть 2 vps-сервера, на которых и размещаю своих клиентов. Щас все достаточно просто завязано: 2 сервера

1) nginx+php-fpm

2) MySQL

Со временем растет нагрузка, да провайдер vps изредка огорчает упавшей виртуалкой, задумываюсь как вообще теоретически дальше масштабировать.

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

И так, допустим я переношу php-fpm на другой сервер, как в этом случае nginx'у получать статику? Хотя для этого случая возможно и будет допустимым вариант просто примонтировать удаленную ФС по ssh.

Но что взрослые дяди делают когда бекэндов несколько? Например есть 1 сервер с nginx'oм и множество серверов с FAST-CGI(uWSGI, etc), здесь уже файловые системы необходимо синхронизировать между собой. На сколько верным будет использовать в данном случае "Распределённые файловые системы"? И в правильном ли направлении вообще капаю? Если в правильном - какую ФС предпочтительнее выбирать для web-проектов?Насколько стабильна будет их работа в условиях виртуальных машин?

В общем, если есть у кого опыт в подъеме подобных архитектур, буду благодарен за наводящую информацию. Заранее спасибо, прошу не пинать за нубство.

а при чем тут ФС.

У тебя просто 2 работают сервера, параллельно. Пусть у нас нет полноценного прокси-балансера. Тогда DNS раздает 2 ip, на один из серверов придет запрос. Упадет этот сервер - придет на другой. Если каждый сервер не зависим - то все просто и легко отдаем. А вот если есть что-то, что их связывает, то встает вопрос с хранилищем. Для общности можно считать, что хралища - это отдельные сервера. Для простоты можно рассмотреть схему rw master и ro slave. В этом случае если упадет master, то лишаешься возможности писать в базу, пока не произойдет аварийного востановаления (то есть slave не станет master'ом)

Вот самый простой вариант

namezys ★★★★ ()
Ответ на: комментарий от namezys

а при чем тут ФС.

ответ namezys

а при чем тут ФС.

В целом при том что - если клиенты/пользователи сайтов(которые расположены у меня на серверах) загружают какие-либо данные, в основном изображения то загрузив их на одном сервере(допустим DNS отдал 1-ip) их нужно как-то синхронизировать со вторым/третьим/5/10 сервером. Вероятно я забыл сказать что сайты которые у себя размещаю это просто virtual-host'ы nginx'а, и по сути все сайты на данный момент находятся на 1 сервере.

Я себе на данный момент представляю это как nginx'у указывается в конфиге virtual-host'а множество pool'ов, которые в свою очередь расположены на разных серверах. Соответственно если pool на одном сервере загрузил какие либо данные то эти данные должны появиться и на других серверах, вот тут и встает вопрос как организовывать хранилища. В распределенных ФС вижу смысл, т.к. если на одном сервере пулов есть данные, и их идентичная копия есть и на других, падает один сервер пулов другой живет.

Возможно узко мыслю.

ответ namezys

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

Здесь опять же у меня вопрос - как организовывать такую архитектуру?

gudron ()
Ответ на: а при чем тут ФС. от gudron

если клиенты/пользователи сайтов загружают какие-либо данные

Он что, получил у тебя право выкладки кода? Тогда пусть в своем коде ломает голову. Или ты говоришь о том, что пользователь залил данные? Так это уже опять обращение к хранилищу, а уж оно должно разруливать.

Соответственно если pool на одном сервере загрузил какие либо данные то эти данные должны появиться и на других серверах, вот тут и встает вопрос как организовывать хранилища

Принудительная синхронизация master->slave

Здесь опять же у меня вопрос - как организовывать такую архитектуру?

сделай отдельный http сервер, который будет отвечать за хранилище. Когда в мастер что-то вливается, мастер заставляет slave себе этозабрать

namezys ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.