Использование GlusterFS для простой репликации

Вопрос новичка. Мне нужно построить это:

  • /shared папка ~500 ГБ файлов, ~1 МБ каждый.
  • Два блока (server1 и server2), соединенные локальной сетью 1 Гбит / с
  • Каждый ящик должен получить доступ к файлам, чтобы они оба были клиентами
  • Я хочу, чтобы файлы копировались на оба поля, каждый раз, когда файл записывается на одном сервере, один и тот же файл должен присутствовать на другом.

Мои вопросы относительно GlusterFS:

  • Будет ли дублировать файлы на одной коробке? Например, файлы включены /shared и гора в /mnt/shared, Это займет 1 ГБ места на каждом сервере?
  • Вместо этого я должен использовать файловую систему напрямую, локально писать на /shared? Работает ли репликация таким образом без подключения клиента?

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

3 ответа

Решение

На самом деле Gluster идеально подходит для этого сценария. Вы получаете двунаправленную репликацию и возможность монтировать файловую систему с любой машины, что дает (теоретически) вдвое большую эффективную емкость ввода-вывода NFS и активное аварийное переключение в случае сбоя одного из блоков.

Проблема с активным rsync таким способом заключается в блокировке ввода-вывода из-за блокировки файлов. В зависимости от вашего приложения и изменения данных это может быть неуместным или катастрофическим! Распределенные файловые системы имеют очень специфическую семантику блокировки, которая предотвращает это. Даже если inotify имеет лучшую блокировку (когда я в последний раз пытался это сделать), в эти дни доступ к вашим файлам может блокироваться, в зависимости от того, сможет ли ваша сеть справиться с изменениями. Это все теоретические предостережения, но их стоит рассмотреть в зависимости от того, что делает ваше приложение.

Наконец-то мне удалось решить эту проблему с помощью GlusterFS в обеих коробках. Некоторые вещи узнали в процессе:

  • Сначала я попробовал стандартную настройку RAID 1. Основная проблема заключается в том, что клиент всегда использует tcp для связи с обоими серверами, даже если один из них находится на одной машине. Поэтому я должен изменить конфигурацию клиента, чтобы заменить локальный том tpc на том с прямым доступом (хранилище /posix)
  • Чтобы избежать нагрузки на сетевое соединение, каждый клиент читает локальное хранилище с директивой option read-subvolume, Конечно, для сохранения целостности RAID1 GlusterFS всегда проверяет и другие тома, но сам файл извлекается непосредственно с диска
  • Производительность хорошая, но процесс клиента выглядит как объятие памяти. Я думаю, что это связано с быстрым чтением, мне нужно исследовать дальше

Модифицированная конфигурация клиента:

# Server1 configuration (RAID 1)
volume server2-tcp
    type protocol/client
    option transport-type tcp
    option remote-host server2
    option transport.socket.nodelay on
    option transport.remote-port 6996
    option remote-subvolume brick1
end-volume

volume posix-local
    type storage/posix
    option directory /shared
end-volume

volume locks-local
    type features/posix-locks
    subvolumes posix-local
end-volume

volume brick-local
    type performance/io-threads
    option thread-count 8
    subvolumes locks-local
end-volume

volume mirror-0
    type cluster/replicate
    option read-subvolume brick-local
    subvolumes brick-local server2-tcp
end-volume

.....

Отвечая на мои оба вопроса:

Это будет дублировать файлы на той же коробке?

Нет, фс монтируется с помощью FUSE. Текущая строка /etc/fstab:

/etc/glusterfs/client.vol / mnt / shared glusterfs по умолчанию 0 0

Вместо этого я должен использовать файловую систему напрямую, локально записывая в /shared? Работает ли репликация таким образом без подключения клиента?

Нет, всегда используйте подключенные тома для чтения / записи, использование файловой системы напрямую может привести к несоответствиям.

Было бы намного проще настроить rsync для выполнения активного зеркалирования или просто настроить общий ресурс nfs и получить их оба с одного и того же фактического диска.

Другие вопросы по тегам