Как установить и настроить GlusterFS на Ubuntu 1604 / 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/hosts192.168.12.16gluster1.hackthesec.localgluster1192.168.12.17gluster2.hackthesec.localgluster2192.168.12.20 client.hackthesec.local client

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

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

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

Debian:

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

sudo apt-get install -y lsb-releasesudo 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-commonsudo 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 serverLoaded: loaded (/etc/init.d/glusterfs-server; bad; vendor preset: enabled)Active: active (running) since Sat 2016-09-24 21:47:20 IST; 1min 6s agoDocs: 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.5MCPU: 3.552sCGroup: /system.slice/glusterfs-server.service└─1673 /usr/sbin/glusterd -p /var/run/glusterd.pidSep 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 glusterdSep 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-j ACCEPT

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

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

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

sudo fdisk /dev/sdb
Отформатируйте и смонтируйте созданный раздел с выбранной вами файловой системой.
sudo mkfs.ext4 /dev/sdb1sudo mkdir -p /data/glustersudo mount /dev/sdb1 /data/glusterecho "/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.localpeer probe: success.hackthesec@gluster1:~$ sudo gluster peer statusNumber of Peers: 1Hostname: gluster2.hackthesec.localUuid: 51470928-dfa8-42e1-a221-d7bbcb8c13bdState: Peer in Cluster (Connected)hackthesec@gluster1:~$ sudo gluster pool listUUIDHostnameState51470928-dfa8-42e1-a221-d7bbcb8c13bdgluster2.hackthesec.localConnecteddc7c1639-d21c-4adf-b28f-5150229e6980localhost 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/gvol0volume create: gvol0: success: please start the volume to access data

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

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

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

hackthesec@gluster1:~$ sudo gluster volume info gvol0Volume Name: gvol0Type: ReplicateVolume ID: ca102e4b-6cd1-4d9d-9c5a-03b882c76da0Status: StartedSnapshot Count: 0Number of Bricks: 1 x 2 = 2Transport-type: tcpBricks:Brick1: gluster1.hackthesec.local:/data/gluster/gvol0Brick2: gluster2.hackthesec.local:/data/gluster/gvol0Options Reconfigured:transport.address-family: inetperformance.readdir-ahead: onnfs.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/glusterfsFilesystem SizeUsed Avail Use% Mounted ongluster1.hackthesec.local:/gvol04.8G 11M4.6G 1% /mnt/glusterfs

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

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

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

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

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

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

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

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

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

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

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

touch /mnt/glusterfs/file1touch /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 12drwxr-xr-x4 root root 4096 Sep 26 20:52 ./drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../-rw-r--r--1 root root0 Sep 26 20:52 file1-rw-r--r--1 root root0 Sep 26 20:52 file2hackthesec@gluster2:~$ ls -al /mnt/total 12drwxr-xr-x4 root root 4096 Sep 26 06:30 .drwxr-xr-x 23 root root 4096 Sep 24 08:39 ..-rw-r--r--1 root root0 Sep 262016 file1-rw-r--r--1 root root0 Sep 262016 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/file3touch /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 12drwxr-xr-x4 root root 4096 Sep 26 20:59 ./drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../-rw-r--r--1 root root0 Sep 26 20:52 file1-rw-r--r--1 root root0 Sep 26 20:52 file2-rw-r--r--1 root root0 Sep 26 20:56 file3-rw-r--r--1 root root0 Sep 26 20:56 file4

Отправка комментария

0 Комментарии