Зеркалирование средствами GlusterFS
Приведу пример простейшего варианта зеркалирования данных на 2-х серверах с помощью GlusterFS на примере CentOS 6.3.
Собственно, на сайте gluster.org имеется прекрасная документация с примерами, если Вы вдруг решитесь расширить свои познания в этой теме. Имеется несколько режимов создания томов, для зеркалирования нам необходимо будет выбрать режим replica.
Будем использовать два сервера со свежеустановленной OS.
192.168.73.202 server1
192.168.73.203 server2
можете прописать эти записи в файл /etc/hosts на обоих серверах.
для начала необходимо установить репозитарий epel, для x64 берем его отсюда — http://dl.fedoraproject.org/pub/epel/6/x86_64/ , актуальная версия на момент написания этой заметки — epel-release-6-8.noarch.rpm. После того как скачали, устанавливаем репозитарий:
# rpm -ivh epel-release-6-8.noarch.rpm
устанавливаем пакет:
# yum install glusterfs-server
включаем в автозагрузку и запускаем:
# chkconfig --levels 235 glusterd on
# /etc/init.d/glusterd start
Вышеуказанные действия производим на обоих серверах.
Если используется файрвол на серверах, то разрешите в нем полный доступ серверов друг к другу, в дальнейшем можно настроить более тонко, оставив необходимые нам порты, как то TCP 111, 24007, 24008, 24009 и т.д. На данный момент не будем останавливаться на настройке файрвола.
Далее, на первом сервере:
# gluster peer probe server2
получаем:
Probe successful
ну и смотрим статус peer-ов:
# gluster peer status
получаем приблизительно следующее:
Number of Peers: 1
Hostname: server2
Uuid: 32567324-edb8-485c-b062-3ec79078da32
State: Peer in Cluster (Connected)
Теперь пришло время создать том, для этого:
# gluster volume create datavol replica 2 transport tcp server1:/data server2:/data
папки /data создадутся автоматически если они отсутствуют, на обоих серверах.
из команды понятно, что мы создаем том в режиме replica, то есть зеркалирование, соединение про протоколу tcp из 2-х серверов с именем datavol.
запускаем том:
# gluster volume start datavol
смотрим на сетевые соединения:
# netstat -tap | grep glusterfsd
tcp 0 0 *:24009 *:* LISTEN 1305/glusterfsd
tcp 0 0 server1.localdomain:24009 server2.localdomain:1019 ESTABLISHED 1305/glusterfsd
tcp 0 0 localhost:exp2 localhost:24007 ESTABLISHED 1305/glusterfsd
tcp 0 0 server1.localdomain:24009 server1.localdomain:exp2 ESTABLISHED 1305/glusterfsd
смотрим информацию о томе:
# gluster volume info
Volume Name: datavol
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: server1:/data
Brick2: server2:/data
Options Reconfigured:
Осталось примонтировать том:
# mkdir /mnt/glusterfs
# mount.glusterfs server1:/datavol /mnt/glusterfs
после этого мы можем смело класть данные в /mnt/glusterfs , после чего, на втором сервера, зайдя в папку /data, мы увидем что данные зеркалируются.
Напрямую в папку /data писать ненадо, зеркалирования не будет происходит в таком случае, работать надо именно с /mnt/glusterfs после монтирования.
ну и, если мы хотим монтировать созданный том, с другого клиентского компьютера, то надо поставить на него:
# yum install glusterfs-client
создать точку монтирования на нем:
# mkdir /mnt/glusterfs
и подключить том:
# mount.glusterfs server1:/datavol /mnt/glusterfs
После того как мы подключились клиентом, для теста, мы можем выключить один из серверов, записать данные на том с клиента, и включить обратно сервер, при первом обращении, данные синхронизируются.
Если необходимо монтировать том при загрузке, добавляем в /etc/fstab:
server1:/datavol /mnt/glusterfs glusterfs defaults,_netdev 0 0
Вот и все.
Удачи в настройках.
© shadow_alone
Здравствуйте, пробовали другие режимы? Делать stripe тома? Или stripe replicated? А то в режиме replicated работает, а в остальных режимах нет. Какая конкретно версия стояла?
Пробовал и то и другое, все работает нормально. конкретно версия — 3.2.7