Здравствуйте. Надеюсь получить комментарии профессионалов.
На данный момент имеется мощный сервер на debian с системой виртуализации kvm. Имеется на нем же проксирующий nginx
Стоит несколько виртуальных машин, для разных сайтов, так как каждому нужен свой набор ПО и их версий, которые на одном сервере не смогут работать. На одном из таких серверов работает единый сервер mysql для всех сайтов. Все вирт. машины работают во внутренней сети, доступ к ним извне только через проброс из основного сервера.
Идея переделать так:
Сделать единое место хранения всех сайтов на основном сервере (единый каталог), а к виртуалкам этот каталог подключить как сетевой диск (File System Pass-Through). Не будет ли конфликтов доступа, если две виртуальные машины будут читать/писать данные в этот диск в одно время? И вообще, как быстрее будет и надежнее, если у каждой виртуалка свое пространство для файлов или как я описал? Также хочу сделать сервер mysql и сделать его отдельной вирт. машиной, папка хранения баз также в единой папке.
Вообще почему я хочу единое место хранения...
- Удобно делать бэкап, делаю одну папку и все, а сейчас я с каждой виртуалки выгружаю
- Сайты я правлю, доделываю, модифицирую, тем самым для каждого сайта свое подключение к файлам с рабочего компа, что не совсем удобно
- Периодически моим клиентам нужен доступ по ФТП к сайту. В этом случае я сделаю отдельный вирт. сервер, на котором будет только ftp подключаю к нему туда эту общую папку и там уже раздаю права...
- Легче переносить все в случае поломки сервера, общая папка через rsync копируется каждый день, а вирт машины которые весят 8 ГБ их один раз достаточно перенести, после того как я их сконфигурировал, и тем самым данную структуру легко будет восстановить на другом таком сервере.
Насколько жизнеспособная данная схема и лучше ли того, что сейчас есть? Спасибо...
Армянское Радио: /var/files - общая папка на физическом сервере
/var/files/serv1 - подключается к первой вирт. машине. В этой папке размещены сайты для первой вирт. машины.
/var/files/serv2 - подключается ко второй вирт. машине. В этой папке размещены сайты для второй вирт. машины.
/var/files/mysql - подключается к третьей вирт. машине (сервер Mysql). В этой папке размещены файлы БД
Я же открываю доступ себе с физ. сервера на /var/files и мне все доступно сразу
kiloper: У mysql может и крыша поехать от такой радости. А может не поехать, как повезет. Базы данных не рекомендуется держать на удаленных файловых системах.
Армянское Радио: Насчет БД если честно тоже сомнения в таком варианте, ну в общую папку хотя бы будет дамп баз своих делать каждый день. Поэтому и прошу совета, насколько надежна такая файловая структура, не будет ли ошибок чтения-записи и еще чего-либо.
kiloper: Данная структура является ненадежной (подвис сетевой демон и куку), тормозной (что проще - кидаться блоками с виртуальным диском, или раскручивать кучу слоев абстракции?), плохо изолированной (админ в помрачении взял и применил патч Бармина... И все, туши свет.)
Есть такие милые вещи, как OCFS2 + iSCSI или OCFS2+ DRBD - решения, специально предназначенные для:
-живой миграции виртуалок с хоста на хост
-расшаривания одной СХД на несколько бездисковых серверов
-мгновенного бекапа имеющихся образов виртуалок
-мгновенного клонирования образов без копирования файлов
А эти костыли с пропихиванием хостовой ФС в виртуалку... Рискованны как минимум.
Армянское Радио: Однако живая миграция не срабатает, когда серв. сломается, виртуалки там по 200Гб, как мне миграцию делать, когда серв. выключен? А так если я rsync делаю каждый день, то на резервном сервере будет хоть все работает, хоть и данные откатяться на раннее утро.
kiloper: Дорого. Покупаете СХД, напихиваете в нее дисков, FibreChannel подключаете к вашим серверам. Разворачиваете вышеописанное. В серверах, которые выполняют виртуалки дисков нет, все на СХД. Живая миграция состоит в перебрасывании ОЗУ с сервера на сервер.
Дешево - все то же самое, только вместо СХД - обычный сервер с кучей дисков, диски отдаются по iSCSI или ataoe (тормозит по сравнению с ISCSI на случайном доступе), FCoE и т.п.
И посмотрите, как DRBD работает. Он держит два блочных устройства на двух серверах синхронными. Сдыхание сервера приведет, фактически, только к жесткому ребуту виртуалок, которые на нем были.