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