Назад | Перейти на главную страницу

Может кто-нибудь объяснить эту настройку GlusterFS?

Покопавшись, чтобы понять, как настроить репликацию с помощью 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 это вызовет две вещи:

  1. Напишите копию на /opt/files
  2. Отправить копию по сети для записи /opt/files на машине Б.

Это хорошо, потому что мы хотим иметь избыточность, а это значит, что у нас должно быть более одной копии данных.

Далее, допустим, мы хотим прочитать тот же файл. Снова на машине A:

  1. Вы выпускаете чтение для /mnt/gluster-files/example
  2. GlusterFS сообщает: «Мне нужно проверить все узлы реплик, чтобы узнать, у кого установлена ​​самая последняя версия этого файла».
  3. GlusterFS проверяет каждый узел
  4. Получается, что все копии одинаковые, потому что репликация работает нормально.
  5. Вам возвращается файл с вашего локального диска. §

(§ 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. Это возможно только в том случае, если ваше приложение позволяет вам указать другой путь для чтения и записи файлов, что не многие делают.