Как установить и настроить GlusterFS на Ubuntu 16.04 / Debian

GlusterFS — это масштабированная сетевая файловая система хранения данных.

Это приложение, включает облачные вычисления, потоковые мультимедийные службы и сети доставки контента.

GlusterFS был первоначально разработан компанией Gluster, Inc., а затем Red Hat, Inc., в результате Red Hat, приобрел Gluster в 2011 году.

Здесь мы собираемся настроить том GlusterFS с двумя репликами.

Убедитесь, что у вас две 64-битные системы (виртуальные или физические) с 1 ГБ памяти и один запасной жесткий диск в каждой системе.

  • gluster1.hackthesec.local|192.168.12.16|Ubuntu 16.04|1GG|/dev/sdb (5GB)—Node 1
  • gluster2.hackthesec.local|192.168.12.17|Debian 8|1GB|/dev/sdb (5GB)—Node 2
  • client.hackthesec.local|192.168.12.8|CentOS 7 / Debian|N/A|N/A|Клиентская машина

Настройка DNS:

Компоненты GlusterFS используют DNS для разрешения имен, поэтому настройте DNS или настройте записи в /etc/hosts.

Если у вас нет DNS в вашей среде, измените файл /etc/hosts и обновите его соответствующим образом.

sudo vi /etc/hosts

192.168.12.16  gluster1.hackthesec.local  gluster1
192.168.12.17  gluster2.hackthesec.local  gluster2
192.168.12.20 client.hackthesec.local client

Добавьте репозиторий GlusterFS:

Прежде чем приступить к установке, нам нужно настроить репозиторий GlusterFS на обоих узлах хранения.

Следуйте инструкциям, чтобы добавить репозиторий в вашу систему

Debian:

Установите пакет поддержки для транзакций https.

sudo apt-get install -y lsb-release
sudo apt-get install -y apt-transport-https

Добавить открытый ключ для репозитория GlusterFS.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/LATEST/rsa.pub | sudo apt-key add -
echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/$(lsb_release -sc)/apt $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/gluster.list

Ubuntu 16.04 / 14.04:

sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-3.8

Установка GlusterFS:

После того, как вы добавили репозиторий в свои системы, мы готовы приступить к установке GlusterFS.

Обновите кеш репозитория.

sudo apt-get update

Установите пакет GlusterFS, используя следующую команду:

sudo apt-get install -y glusterfs-server

Запустите службу glusterfs-сервера на всех узлах.

sudo service glusterfs-server start

Убедитесь, что служба glusterfs работает нормально.

$ sudo service glusterfs-server status

● glusterfs-server.service - LSB: GlusterFS server
   Loaded: loaded (/etc/init.d/glusterfs-server; bad; vendor preset: enabled)
   Active: active (running) since Sat 2016-09-24 21:47:20 IST; 1min 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1570 ExecStop=/etc/init.d/glusterfs-server stop (code=exited, status=0/SUCCESS)
  Process: 1664 ExecStart=/etc/init.d/glusterfs-server start (code=exited, status=0/SUCCESS)
    Tasks: 7 (limit: 512)
   Memory: 25.5M
      CPU: 3.552s
   CGroup: /system.slice/glusterfs-server.service
           └─1673 /usr/sbin/glusterd -p /var/run/glusterd.pid

Sep 24 21:47:16 gluster1.hackthesec.local systemd[1]: Starting LSB: GlusterFS server...
Sep 24 21:47:16 gluster1.hackthesec.local glusterfs-server[1664]:  * Starting glusterd service glusterd
Sep 24 21:47:20 gluster1.hackthesec.local glusterfs-server[1664]:    ...done.
Sep 24 21:47:20 gluster1.hackthesec.local systemd[1]: Started LSB: GlusterFS server.

Настройка фаерволла

Вам нужно либо отключить брандмауэр, либо настроить брандмауэр, чтобы разрешить все подключения внутри кластера.

sudo iptables -I INPUT -p all -s <ip-address> -j ACCEPT

Добавить хранилище:

Предполагая, что у вас есть один запасной жесткий диск на вашем компьютере, /dev/sdb — тот, который я буду использовать

Создайте отдельный раздел на резервном жестком диске, как показано ниже:

sudo fdisk /dev/sdb
Отформатируйте и смонтируйте созданный раздел с выбранной вами файловой системой.
sudo mkfs.ext4 /dev/sdb1
sudo mkdir -p /data/gluster
sudo mount /dev/sdb1 /data/gluster
echo "/dev/sdb1 /data/gluster ext4 defaults 0 0" | sudo tee --append /etc/fstab

Настройте GlusterFS на Ubuntu 16.04:

Перед созданием тома нам нужно создать доверенный пул хранения, добавив gluster2.hackthesec.local.

Вы можете запускать команды конфигурации GlusterFS на любом одном сервере в кластере, выполнив ту же самую команду на всех других серверах.

Здесь я буду запускать все команды GlusterFS в gluster1.hackthesec.local

hackthesec@gluster1:~$ sudo gluster peer probe gluster2.hackthesec.local
peer probe: success.

hackthesec@gluster1:~$ sudo gluster peer status

Number of Peers: 1

Hostname: gluster2.hackthesec.local
Uuid: 51470928-dfa8-42e1-a221-d7bbcb8c13bd
State: Peer in Cluster (Connected)

hackthesec@gluster1:~$ sudo gluster pool list

UUID                                    Hostname                State
51470928-dfa8-42e1-a221-d7bbcb8c13bd    gluster2.hackthesec.local  Connected
dc7c1639-d21c-4adf-b28f-5150229e6980    localhost               Connected

Настройка GlusterFS раздела:

Создайте каталог под названием «gvol0» в смонтированной файловой системе на обоих узлах.

sudo mkdir -p /data/gluster/gvol0

Поскольку мы собираемся использовать реплицированный том, создайте том с именем «gvol0» с двумя репликами.

hackthesec@gluster1:~$ sudo gluster volume create gvol0 replica 2 gluster1.hackthesec.local:/data/gluster/gvol0 gluster2.hackthesec.local:/data/gluster/gvol0
volume create: gvol0: success: please start the volume to access data

Запустите том:

hackthesec@gluster1:~$ sudo gluster volume start gvol0
volume start: gvol0: success

Проверьте состояние созданного тома.

hackthesec@gluster1:~$ sudo gluster volume info gvol0

Volume Name: gvol0
Type: Replicate
Volume ID: ca102e4b-6cd1-4d9d-9c5a-03b882c76da0
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster1.hackthesec.local:/data/gluster/gvol0
Brick2: gluster2.hackthesec.local:/data/gluster/gvol0
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: on

Настройка клиента GlusterFS:

Установите пакет glusterfs-client для поддержки установки файловых систем GlusterFS.

Запустите все команды как пользователь root.

$ su -

### CentOS / RHEL ###
yum install -y glusterfs-client

### Ubuntu / Debian ###
apt-get install -y glusterfs-client

Создайте каталог для монтирования файловой системы GlusterFS.

mkdir -p /mnt/glusterfs

Теперь подключите файловую систему GlusterFS к /mnt/glusterfs, используя следующую команду.

mount -t glusterfs gluster1.hackthesec.local:/gvol0 /mnt/glusterfs

Вы также можете использовать gluster2.hackthesec.local вместо gluster1.hackthesec.com в приведенной выше команде.

Проверьте смонтированную файловую систему GlusterFS.

[root@client ~]# df -hP /mnt/glusterfs
Filesystem                     Size  Used Avail Use% Mounted on
gluster1.hackthesec.local:/gvol0  4.8G   11M  4.6G   1% /mnt/glusterfs

Вы также можете использовать команду ниже для проверки файловой системы GlusterFS.

[root@client ~]# cat /proc/mounts
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=490448k,nr_inodes=122612,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos-root / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0
/dev/mapper/centos-home /home xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/sda1 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,seclabel,nosuid,nodev,relatime,size=100136k,mode=700 0 0
gluster1.hackthesec.local:/gvol0 /mnt/glusterfs fuse.glusterfs rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0

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

gluster1.hackthesec.local:/gvol0 /mnt/glusterfs glusterfs  defaults,_netdev 0 0

Тестирование репликации GlusterFS и высокой доступности:

Сторона сервера GlusterFS:

Чтобы проверить репликацию, смонтируйте созданный том GlusterFS на том же узле хранения.

hackthesec@gluster1:~$ sudo mount -t glusterfs gluster1.hackthesec.local:/gvol0 /mnt
hackthesec@gluster2:~$ sudo mount -t glusterfs gluster2.hackthesec.local:/gvol0 /mnt

Данные внутри каталога / mnt обоих узлов всегда будут одинаковыми (репликация).

Сторона клиента GlusterFS:

Давайте создадим несколько файлов на смонтированной файловой системе на client.hackthesec.local.

touch /mnt/glusterfs/file1
touch /mnt/glusterfs/file2


[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2

Проверьте оба узла GlusterFS, имеют ли они одни и те же данные внутри / mnt.

hackthesec@gluster1:~$ ll /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 20:52 ./
drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../
-rw-r--r--  1 root root    0 Sep 26 20:52 file1
-rw-r--r--  1 root root    0 Sep 26 20:52 file2


hackthesec@gluster2:~$ ls -al /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 06:30 .
drwxr-xr-x 23 root root 4096 Sep 24 08:39 ..
-rw-r--r--  1 root root    0 Sep 26  2016 file1
-rw-r--r--  1 root root    0 Sep 26  2016 file2

Как вы знаете, мы установили том GlusterFS из gluster1.hackthesec.local на client.hackthesec.local, теперь настало время проверить высокую доступность тома, отключив узел.

hackthesec@gluster1:~$ sudo poweroff

Теперь проверьте наличие файлов, и вы увидите файлы, которые мы создали недавно, даже несмотря на то, что узел не работает.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2

Создайте еще несколько файлов в файловой системе GlusterFS, чтобы проверить репликацию.

touch /mnt/glusterfs/file3
touch /mnt/glusterfs/file4

Проверьте количество файлов.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2
-rw-r--r--. 1 root root 0 Sep 26 11:26 file3
-rw-r--r--. 1 root root 0 Sep 26 11:26 file4

Поскольку gluster1 не работает, все ваши данные теперь прописаны на gluster2.hackthesec.local. Теперь включите узел1 (gluster1.hackthesec.local).

Проверьте / mnt gluster1.hackthesec.local; вы должны увидеть все четыре файла в каталоге, это подтверждает, что репликация работает должным образом.

hackthesec@gluster1:~$ sudo mount -t glusterfs gluster1.hackthesec.local:/gvol0 /mnt
[sudo] password for hackthesec:

hackthesec@gluster1:~$ ll /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 20:59 ./
drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../
-rw-r--r--  1 root root    0 Sep 26 20:52 file1
-rw-r--r--  1 root root    0 Sep 26 20:52 file2
-rw-r--r--  1 root root    0 Sep 26 20:56 file3
-rw-r--r--  1 root root    0 Sep 26 20:56 file4

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40