Покопавшись, чтобы понять, как настроить репликацию с помощью gluster, я столкнулся с этим вопросом: Может ли Apache читать модуль GlusterFS напрямую, но записывать в монтировку GlusterFS?
Я также нашел, как это, кажется, объясняет то же самое, и я думал, что понимаю это, но теперь я думаю, что нет.
Итак, чтобы получить такую репликацию, мне нужно, чтобы обе машины одновременно работали как серверы и клиенты? Теперь я не понимаю, как работают отношения: не является ли B, например, клиентом A?
Участвуют ли отношения клиент-сервер более чем на одном уровне? Является ли A клиентом для A и клиентом B для B, каждый из которых монтируется в папке как том с одного и того же компьютера, и эти 2 тома каким-то образом синхронизированы (от A до B) на третьем уровне отношений?
Почему вопрос выше касается записи в файловую систему или на смонтированный том? Когда я делаю B клиентом для A, причем A экспортирует папку, а B монтирует его как удаленный том в папке, я никогда не спрашивал себя, что я пишу: я писал в исходную папку на A и в смонтированный том на Б. Разве это не так, как должно работать?
Допустим, у вас есть две машины, A и B. На каждой машине вы экспортируете /opt/files
как кирпич Gluster и настроить репликацию на стороне клиента. Затем мы монтируем полученный каталог как /mnt/gluster-files
на обеих машинах. Это важно!
Используя эту точку монтирования, теперь у нас есть файловая система с высокой доступностью на двух машинах.
Когда пишешь файл - допустим /mnt/gluster-files/example
на машине A это вызовет две вещи:
/opt/files
/opt/files
на машине Б.Это хорошо, потому что мы хотим иметь избыточность, а это значит, что у нас должно быть более одной копии данных.
Далее, допустим, мы хотим прочитать тот же файл. Снова на машине A:
/mnt/gluster-files/example
(§ Eсть read-subvolume
client, и разумно установить его на локальный том на любой машине, которая является клиентом и сервером Gluster, как в этом случае. В противном случае шаг 5 может быть таким: «вы отправили файл со случайного узла».)
За кулисами GlusterFS сохраняет /opt/files
на обеих машинах синхронно. Проверка каждого узла, особенно большого количества небольших файлов, добавляет немаловажное снижение производительности.
Поэтому возникает вопрос: если я запускаю процесс на одной из этих двух машин и знаю, что файлы синхронизированы, почему я не могу просто прочитать файлы из локального общего ресурса?
Не рекомендуется, но вы жестяная банка сделай это. Прочтите файлы из /opt/files
. Вручную отслеживайте, выходит ли вы из синхронизации, и если да, сделайте что-нибудь вроде ls -laR
в /mnt/gluster-files
который запустит синхронизацию.
Итак, что будет, если вы напишете на /opt/files
на машине А?
Файл остается незамеченным GlusterFS. Gluster так не работает. Он не попадет на машину B, если только вы не сделаете что-то, что заставит Gluster заметить это на машине A.
Следовательно, вы не можете просто сказать Apache читать и писать в /opt/files
. Хорошим компромиссом кажется совет читать с /opt/files
но напишите /mnt/gluster-files
. Это возможно только в том случае, если ваше приложение позволяет вам указать другой путь для чтения и записи файлов, что не многие делают.