Два сервера Ubuntu 14.04 (Trusty Tahr) — настройка GlusterFS

Понадобился файловый кластер в Linux, вот и подвернулся случай опробовать нашумевший в свое время GlusterFS. Альтернативой для gluster может быть drbd, о нем я тоже напишу както попозже … на этот раз подымаем Gluster!
Имеем, 2 сервера с установленной Ubuntu 14.04 LTS. IP адреса 100.100.100.100 (www-srv1) первый и 100.100.100.200 (www-srv2) второй.
Действия ниже делаются на обоих серверах, в случае необходимости я буду указывать что делается на одном сервере, также это можно понять из приветствия консоли!
1. Начинаем как всегда сначала, обновляем информацию о пакетах:

apt-get update

2. Теперь добавляем репозиторий с пакетами GlusterFS версии 3.4:

apt-get install python-software-properties
add-apt-repository ppa:semiosis/ubuntu-glusterfs-3.4
apt-get update

И поехали дальше ….

3. Установим необходимые пакеты:

apt-get install glusterfs-server

4. Связывать сервера удобнее по имени, такчто рекомендую назначить серверам имена либо в DNS-ах, либо в /etc/hosts. Я выбрал второй вариант и на обоих серверах в /etc/hosts добавил такое:

# GlusterFS
100.100.100.100  www-srv1.gfs.local
100.100.100.200  www-srv2.gfs.local

5. Теперь на первом сервере пробуем соединиться со вторым (если у вас настроен firewall, может и не сработать! Обратитесь к документации и откройте необходимые порты):

root@www-srv1:~# gluster peer probe www-srv2.gfs.local
peer probe: success
root@www-srv1:~#

Проверить статус peer-ов можно так:

root@www-srv1:~# gluster peer status
Number of Peers: 1

Hostname: www-srv2.gfs.local
Port: 24007
Uuid: 3f3a75ce-bfb7-480b-9fef-c34ed17dce43
State: Peer in Cluster (Connected)
root@www-srv1:~#

Отлично!
6. Создадим директорию для кластера (повторить на обоих серверах):

mkdir -p /htdocs/wwwuser

7. Теперь можно создать наш первый Volume, посути Volume — это директория «розшаренная» в кластер в виде некоего сетевого раздела. Опять на первом серваке делаем:

root@www-srv1:~# gluster volume create www_docs replica 2 transport tcp www-srv1.gfs.local:/htdocs/wwwuser www-srv2.gfs.local:/htdocs/wwwuser force
volume create: www_docs: success: please start the volume to access data
root@www-srv1:~#

Ответ команды «success» обнадеживает.
8. Теперь Volume нужно запустить:

root@www-srv1:~# gluster volume start www_docs
volume start: www_docs: success
root@www-srv1:~#

Тоже все супер!
9. Для ограничения доступа клиентов к Volume нужно использовать такую команду:

root@www-srv1:~# gluster volume set www_docs auth.allow 127.0.0.1,100.100.100.100,100.100.100.200

10. Для проверки состояния Volume-ов воспользуемся командой (я проверил на втором сервере, но результат будет одинаковый и на первом и на втором сервере):

root@www-srv2:~# gluster volume info
 
Volume Name: www_docs
Type: Replicate
Volume ID: 27a8d934-1d90-450f-85d3-d993737b269f
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: www-srv1.gfs.local:/htdocs/wwwuser
Brick2: www-srv2.gfs.local:/htdocs/wwwuser
Options Reconfigured:
auth.allow: localhost,www-srv1.gfs.local,www-srv2.gfs.local
root@www-srv2:~#

11. Для доступа к Volum-ам кластера необходимо установить glusterfs-client, я установил его на обоих серверах:

apt-get install glusterfs-client

12. Теперь можно примонтировать Volume используя такую команду (я делал на обоих серверах, а вообще клиентом может выступать любая машина на которой установлен glusterfs-client и разрешен доступ auth.allow). Команды чуть отличаются для разных серверов, вот так для первого:

root@www-srv1:~# mount -t glusterfs www-srv2.gfs.local:/www_docs /home/someuser/htdocs

и вот так для второго:

root@www-srv2:~# mount -t glusterfs www-srv1.gfs.local:/www_docs /home/someuser/htdocs

13. Для того чтобы монтирование происходило автоматически при старте сервера, добавим запись в /etc/fstab. Для первого сервера:

root@www-srv1:~# cat /etc/fstab |grep -i gluster
# GlusterFS #
www-srv2.gfs.local:/www_docs /home/someuser/htdocs glusterfs defaults,_netdev   0       0
root@www-srv1:~#

и для второго:

root@www-srv2:~# cat /etc/fstab |grep -i gluster
# GlusterFS #
www-srv1.gfs.local:/www_docs /home/someuser/htdocs glusterfs defaults,_netdev   0       0
root@www-srv1:~#

Теперь попробуйте разместить на одном из серверов какиелибо файлы/директории в /home/someuser/htdocs, они автоматически появятся на втором сервере. У меня все сработало … думаю и у вас все получится!

P.S. Данный кластер был настроен уже несколько месяцев назад и вполне успешно справляется с небольшой нагрузкой, система показала себя вполне живучей и надежной, настройте и поиграйтесь — думаю не пожалеете потраченного времени!

Хай щастить!

    • aprogrammer
    • Март 2nd, 2015 5:03пп

    Могу посоветовать почитать эту статью по тестированию распределения контента в GlusteFS — http://sysadm.pp.ua/linux/glusterfs-setup.html .Очень толково написано, может кому-то понадобиться.

    • admin
    • Март 2nd, 2015 5:11пп

    @aprogrammer
    Годная статья … спасибо!
    Вот бы еще disk iops сравнить 🙂 Если стенд еще под рукой … потестите плиз, я в свое время поленился — теперь жалею 🙁

  1. Трэкбэков пока нет.

Why ask?