§ Введение
В данном руководстве я покажу как можно использовать GlusterFS для построения высокодоступного отказоустойчивого кластерного хранилища на базе двух серверов под управлением Ubuntu 8.04 LTS Server Edition. Хранимая информация будет реплицироваться и распространяться по всем серверам, которые выступят неким подобием RAID 10. Например, имея 4 сервера с емкостью диска 100 Гбайт, эффективное дисковое пространство в кластере составит 200 Гбайт. В случая выхода из строя одного из узлов, данные тем не менее остаются доступны и будут реплицироваться на другой работающий узел.
GlusterFS — кластерная файловая система, которая может достигать объемов в несколько петтабайт. Доступ возможен посредством Infiniband RDMA или TCP/IP. Единицы хранения могут быть построены на любой даже дешевой и ненадежной аппаратной платформе.
§ Установка
В первую очередь необходимо установить нужный комплект ПО:
$ sudo apt-get install sshfs build-essential flex bison byacc vim wget
После этого из исходных кодов понадобится собрать и установить FUSE:
$ wget http://europe.gluster.org/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz
$ tar -zxvf fuse-2.7.4glfs11.tar.gz
$ cd fuse-2.7.4glfs11
$ ./configure && make && sudo make install
Теперь установим GlusterFS (также из исходных кодов):
$ wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.0rc2.tar.gz
$ tar -zxvf glusterfs-2.0.0rc2.tar.gz
$ cd glusterfs-2.0.0rc2
$ ./configure && make && sudo make install
Поправим расположение библиотек:
ln -sf /usr/local/lib/* /usr/lib/
Создадим директории:
$ mkdir /mnt/glusterfs
$ mkdir /data/
$ mkdir /data/export
$ mkdir /data/export-ns
$ mkdir /etc/glusterfs/
§ Настройка сервера
Следует знать, что GlusterFS работает по принципу "клиент/сервер". Сделаем наши узлы и сервером и клиентом одновременно.
Начнем с конфигурирования серверной части. Настройку необходимо провести для всех узлов. Необходимо текстовым редактором открыть файл /etc/glusterfs/glusterfs-server.vol
и занести в него следующее содержимое:
volume posix
type storage/posix
option directory /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 posix-ns
type storage/posix
option directory /data/export-ns
end-volume
volume locks-ns
type features/locks
subvolumes posix-ns
end-volume
volume brick-ns
type performance/io-threads
option thread-count 8
subvolumes locks-ns
end-volume
volume server
type protocol/server
option transport-type tcp
option auth.addr.brick.allow *
option auth.addr.brick-ns.allow *
subvolumes brick brick-ns
end-volume
После выполнить команду
glusterfsd -f /etc/glusterfs/glusterfs-server.vol
для запуска серверной части.§ Настройка клиента
В нашем примере используются следующие соглашения узлы:
server1 : 192.168.0.1
server2 : 192.168.0.2
server3 : 192.168.0.3
server4 : 192.168.0.4
и т.д..Необходимо создать конфигурацию также на всех узлах (по аналогии с настройкой серверов), отредактировав файл
/etc/glusterfs/glusterfs-client.vol
следующим образом:volume brick1
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.1
option remote-subvolume brick
end-volume
volume brick2
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.2
option remote-subvolume brick
end-volume
volume brick1-ns
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.1
option remote-subvolume brick-ns
end-volume
volume brick2-ns
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.2
option remote-subvolume brick-ns
end-volume
volume afr1
type cluster/afr
subvolumes brick1 brick2
end-volume
volume afr-ns
type cluster/afr
subvolumes brick1-ns brick2-ns
end-volume
volume unify
type cluster/unify
option scheduler rr # round robin
option namespace afr-ns
subvolumes afr1
end-volume
Представленная конфигурация может быть использована для случая двух узлов (RAID 1). Для создания RAID 10 из четырех узлов следует использовать другую настройку:
volume brick1
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.1
option remote-subvolume brick
end-volume
volume brick2
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.2
option remote-subvolume brick
end-volume
volume brick3
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.3
option remote-subvolume brick
end-volume
volume brick4
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.4
option remote-subvolume brick
end-volume
volume brick1-ns
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.1
option remote-subvolume brick-ns
end-volume
volume brick2-ns
type protocol/client
option transport-type tcp/client
option remote-host 192.168.0.2
option remote-subvolume brick-ns
end-volume
volume afr1
type cluster/afr
subvolumes brick1 brick4
end-volume
volume afr2
type cluster/afr
subvolumes brick2 brick3
end-volume
volume afr-ns
type cluster/afr
subvolumes brick1-ns brick2-ns
end-volume
volume unify
type cluster/unify
option scheduler rr # Round-robin
option namespace afr-ns
subvolumes afr1 afr2
end-volume
Остается лишь смонтировать файловые системы и пользоваться!
$ glusterfs -f /etc/glusterfs/glusterfs-client.vol /mnt/glusterfs
§ Тестирование
После того, как хранилище подключено в папку /mnt/glusterfs было проведено несколько тестов, включая имитацию сбоя (путем временного отключения одного из узлов). Оказалось, система после замены узла восстанавливается быстро и эффективно (новые данные реплицируются при первом запросе информации).
Источник: Здесь
Комментариев нет:
Отправить комментарий