Зеркалирование средствами GlusterFS

glusterПриведу пример простейшего варианта зеркалирования данных на 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 работает, а в остальных режимах нет. Какая конкретно версия стояла?

  • andrey0001

    Пробовал и то и другое, все работает нормально. конкретно версия — 3.2.7