GlusterFS

Попробуем сделать реплицируемую файловую систему всего из двух нод. Вообще лучшие результаты при использовании glusterfs достигаются при 4 нодах и выше.

ip адрес первой ноды 10.8.18.8, второй 10.8.18.9

Ставим glusterfs

# apt-get install glusterfs

у меня используется такая версия:

glusterfs-2.0.7-alt0.git20091005

И так конфиг первой ноды:

/etc/glusterfs/server.vol

volume posix
  type storage/posix
  option directory /var/data/export
end-volume
volume locks
  type features/locks
  subvolumes posix
end-volume
volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume
volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow *
  subvolumes brick
end-volume

Конфиг второй ноды аналогичен конфигу первой

/etc/glusterfs/server.vol

volume posix
  type storage/posix
  option directory /var/data/export
end-volume
volume locks
  type features/locks
  subvolumes posix
end-volume
volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume
volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow *
  subvolumes brick
end-volume

Конфиг клиентской машины

/etc/glusterfs/client.vol

volume remote1
  type protocol/client
  option transport-type tcp
  option remote-host 10.8.18.8
  option remote-subvolume brick
end-volume
volume remote2
  type protocol/client
  option transport-type tcp
  option remote-host 10.8.18.9
  option remote-subvolume brick
end-volume
volume replicate
  type cluster/replicate
  subvolumes remote1 remote2
end-volume
volume distribute
  type cluster/distribute
  subvolumes replicate
end-volume
volume writebehind
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate
end-volume
volume cache
  type performance/io-cache
  option cache-size 512MB
  subvolumes writebehind
end-volume

На клиенте создаем директорию куда будем монтировать glusterfs

mkdir /mnt/glusterfs

После чего монтируем незамысловатым способом:

mount -t glusterfs /etc/glusterfs/client.vol /mnt/glusterfs

Или добавляем строку в fstab

/etc/glusterfs/client.vol  /mnt/glusterfs  glusterfs  defaults  0  0

В результате экспериментов получилось добиться отказоустойчивости при отказе одной из нод. Т.е. проводил эксперимент, копировал что-то с клиента на сервер или обратно, жал ресет на одной ноде, все работало, после включения упавшей ноды происходит репликация, это резко отражается на производительности, именно поэтому рекомендуется использовать 4 ноды, как их настраивать можно почитать на сайте разработчиков. После завершения репликации можно смело выводить из строя вторую ноду, клиент в это время не замечает проблем с доступом к файлам.