Более четкое понимание glusterfs для репликации

На server01 я установил и настроил glusterfs-server и glusterfs-client для репликации каталога / var / appdata на server02.

Кажется, что все работает нормально, но я не уверен, что я понимаю вещь дыры.

  • Директория / var / gfs_appdata - это, скажем, представление, в / var / appdata, что означает, что все файлы, которые генерируются в / var / appdata, реплицируются на server02 или мое приложение должно сохранять все сгенерированные файлы в / var / gfs_appdata.
  • Каталог / var / gfs_appdata не содержит никаких физических данных.
  • В какое время файл 01, который генерируется на сервере 01, появляется на сервере 02, когда происходит репликация?

На server01 glusterfs монтируется через fstab:

/etc/glusterfs/glusterfs.vol              /var/gfs_appdata/  glusterfs  defaults  0  0

На server01 и server02 glusterfs-сервер автоматически запускается во время загрузки с помощью /etc/glusterfs/glusterfsd.vol:

volume posix1
  type storage/posix
  option directory /var/appdata
end-volume

volume locks1
    type features/locks
    subvolumes posix1
end-volume

volume brick1
    type performance/io-threads
    option thread-count 8
    subvolumes locks1
end-volume

volume server-tcp
    type protocol/server
    option transport-type tcp
    option auth.addr.brick1.allow *
    option transport.socket.listen-port 6996
    option transport.socket.nodelay on
    subvolumes brick1
end-volume

/etc/glusterfs/glusterfs.vol:

# RAID 1
# TRANSPORT-TYPE tcp
volume data01
    type protocol/client
    option transport-type tcp
    option remote-host 192.168.0.1
    option transport.socket.nodelay on
    option remote-port 6996
    option remote-subvolume brick1
end-volume

volume data02
    type protocol/client
    option transport-type tcp
    option remote-host 192.168.0.2
    option transport.socket.nodelay on
    option remote-port 6996
    option remote-subvolume brick1
end-volume

volume mirror-0
    type cluster/replicate
    subvolumes data01 data02
end-volume

volume readahead
    type performance/read-ahead
    option page-count 4
    subvolumes mirror-0
end-volume

volume iocache
    type performance/io-cache
    option cache-size `echo $(( $(grep 'MemTotal' /proc/meminfo | sed 's/[^0-9]//g') / 5120 ))`MB
    option cache-timeout 1
    subvolumes readahead
end-volume

volume quickread
    type performance/quick-read
    option cache-timeout 1
    option max-file-size 64kB
    subvolumes iocache
end-volume

volume writebehind
    type performance/write-behind
    option cache-size 4MB
    subvolumes quickread
end-volume

volume statprefetch
    type performance/stat-prefetch
    subvolumes writebehind
end-volume

1 ответ

Решение

ОК, похоже, что это актуальный вопрос:

В какое время файл 01, который генерируется на сервере 01, появляется на сервере 02, когда происходит репликация?

Репликация запускается, как только файл создается / изменяется / удаляется на server01. Точное время репликации зависит от ввода-вывода системы хранения, пропускной способности сети и объема реплицируемых данных.

Как я использовал glusterfs, файлы, которые находятся на томе gluster, обычно маленькие, поэтому репликация нового файла происходит практически мгновенно.

Обновление: Что касается того, следует ли вам писать напрямую в кирпич (/var/appdata) или в монтирование (/var/gfs_appdata), как я понимаю, вы всегда должны использовать монтирование для чтения и записи. Честно говоря, я не знаю подробностей того, почему это так, (сейчас бывший) коллега провел много тестов с glusterfs около года назад, прежде чем мы начали его использовать, и я не ознакомился с более тонким подробности.

Вот ответ на аналогичный вопрос, который дает немного подробностей, объясняющих, почему это должно быть сделано таким образом: может ли Apache считывать блок GlusterFS напрямую, но записывать в монтирование GlusterFS?

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