GNU/Linux >> Linux Esercitazione >  >> Debian

Installa e configura GlusterFS su Ubuntu 16.04 / Debian 8

Nel mondo della tecnologia, è sempre fondamentale mantenere i dati altamente disponibili per garantire che siano accessibili all'applicazione/utente. L'elevata disponibilità si ottiene qui distribuendo i dati su più volumi/nodi.

Le macchine client/gli utenti possono accedere allo spazio di archiviazione come se fosse un archivio locale. Ogni volta che l'utente crea dati sullo storage Gluster, i dati verranno duplicati/distribuiti ad altri nodi di storage.

Cos'è GlusterFS?

GlusterFS è un filesystem di rete scalabile e open source adatto per carichi di lavoro ad alta intensità di dati come streaming multimediale, archiviazione cloud e CDN (Content Delivery Network). GlusterFS è stato sviluppato inizialmente da Gluster Inc e poi da Redhat, a seguito dell'acquisizione.

Terminologie:

Di seguito sono riportate le terminologie importanti che utilizziamo in questo articolo.

Mattone – è l'archiviazione di base (directory) su un server nel pool di archiviazione attendibile.

Volume – è una logica collezione di mattoni.

Gruppo – è un gruppo di computer collegati, che lavorano insieme come un unico computer.

File system distribuito – Un file system in cui i dati sono distribuiti su più nodi di archiviazione e consente ai client di accedervi tramite una rete.

Cliente – è una macchina che monta il volume.

Server – è una macchina in cui è ospitato il file system effettivo in cui verranno archiviati i dati.

Replica – Esecuzione di più copie di dati per ottenere un'elevata ridondanza.

Fusibile – è un modulo del kernel caricabile che consente agli utenti non privilegiati di creare i propri file system senza modificare il codice del kernel.

gluster – è un demone che viene eseguito su tutti i server nel pool di archiviazione attendibile.

RAID – L'array ridondante di dischi economici (RAID) è una tecnologia che fornisce una maggiore affidabilità di archiviazione attraverso la ridondanza.

Volumi:

Come detto in precedenza, il volume è la raccolta di mattoni e la maggior parte delle operazioni di gluster come la lettura e la scrittura avvengono sul volume. GlusterFS supporta diversi tipi di volumi in base ai requisiti; adatto per ridimensionare le dimensioni dello spazio di archiviazione o migliorare le prestazioni o per entrambi.

In questo articolo, configureremo il volume GlusterFS replicato su Ubuntu 16.04 / Debian 8. Questa guida dovrebbe funzionare anche su versioni precedenti di Ubuntu come Ubuntu 14.04 / Ubuntu 12.04.

Volume Glusterfs replicato è come un RAID 1 e il volume conserva le copie esatte dei dati su tutti i mattoni. Puoi decidere il numero di repliche durante la creazione del volume, quindi avresti bisogno di almeno due mattoni per creare un volume con due repliche o tre mattoni per creare un volume di 3 repliche.

Questo volume offre una migliore affidabilità e ridondanza dei dati.

Perché non leggere i restanti tipi di volumi GlusterFS.

Requisiti:

Qui configureremo il volume GlusterFS con due repliche. Assicurati di avere due sistemi a 64 bit (virtuali o fisici) con 1 GB di memoria e un disco rigido di riserva su ciascun sistema.

Nome host Indirizzo IP OS Memoria Disco Scopo
gluster1.itzgeek.local 192.168.12.16 Ubuntu 16.04 LTS 1 GB /dev/sdb (5 GB) Nodo di archiviazione 1
gluster2.itzgeek.local 192.168.12.17 Debian 8 1 GB /dev/sdb (5 GB) Nodo di archiviazione 2
client.itzgeek.local 192.168.12.8 CentOS 7/Debian NA NA Macchina cliente
Per una dimostrazione, sto usando una distribuzione Linux diversa per ogni nodo di archiviazione qui. Ti consiglio di utilizzare un'unica distribuzione Linux nel cluster che ti consentirà di risolvere più facilmente i problemi che si verificano in produzione.

Configura DNS:

I componenti GlusterFS utilizzano il DNS per la risoluzione dei nomi, quindi configura il DNS o imposta una voce host. Se non hai un DNS nel tuo ambiente, modifica il file /etc/hosts e aggiornalo di conseguenza.

sudo vi /etc/hosts

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

Aggiungi repository GlusterFS:

Prima di procedere all'installazione, è necessario configurare il repository GlusterFS su entrambi i nodi di archiviazione. Segui le istruzioni per aggiungere il repository al tuo sistema.

Debian:

Installa il pacchetto di supporto per le transazioni https.

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

Aggiungi la chiave pubblica per il repository 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

Installa GlusterFS:

Dopo aver aggiunto il repository sui tuoi sistemi, siamo a posto per l'installazione di GlusterFS.

Aggiorna la cache del repository.

sudo apt-get update

Installa il pacchetto GlusterFS usando il comando seguente.

sudo apt-get install -y glusterfs-server

Avvia il servizio glusterfs-server su tutti i nodi gluster.

sudo service glusterfs-server start

Verifica che il servizio glusterfs funzioni correttamente.

raj@gluster1:~$ 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.itzgeek.local systemd[1]: Starting LSB: GlusterFS server...
Sep 24 21:47:16 gluster1.itzgeek.local glusterfs-server[1664]:  * Starting glusterd service glusterd
Sep 24 21:47:20 gluster1.itzgeek.local glusterfs-server[1664]:    ...done.
Sep 24 21:47:20 gluster1.itzgeek.local systemd[1]: Started LSB: GlusterFS server.

Configura Firewall:

Dovresti disabilitare il firewall o configurare il firewall per consentire tutte le connessioni all'interno di un cluster.

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

Aggiungi spazio di archiviazione:

Supponendo che tu abbia un disco rigido di riserva sulla tua macchina, /dev/sdb è quello che userò qui per un mattone. Crea una singola partizione sul disco rigido di riserva come mostrato di seguito.

Dovresti eseguire i passaggi seguenti su entrambi i nodi.

sudo fdisk /dev/sdb

Formatta la partizione creata con il filesystem di tua scelta.

sudo mkfs.ext4 /dev/sdb1

Monta il disco su una directory chiamata /data/gluster .

sudo mkdir -p /data/gluster
sudo mount /dev/sdb1 /data/gluster

Aggiungi una voce a /etc/fstab per mantenere il montaggio persistente durante il riavvio.

echo "/dev/sdb1 /data/gluster ext4 defaults 0 0" | sudo tee --append /etc/fstab

Configura GlusterFS su Ubuntu 16.04:

Prima di creare un volume, è necessario creare un pool di archiviazione attendibile aggiungendo gluster2.itzgeek.local . Puoi eseguire i comandi di configurazione GlusterFS su qualsiasi server nel cluster eseguirà lo stesso comando su tutti gli altri server.

Qui eseguirò tutti i comandi GlusterFS in gluster1.itzgeek.local nodo.

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

Verifica lo stato del pool di archiviazione attendibile.

raj@gluster1:~$ sudo gluster peer status

Number of Peers: 1

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

Elenca il pool di archiviazione.

raj@gluster1:~$ sudo gluster pool list

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

Imposta volume GlusterFS:

Crea un mattone (directory) chiamato "gvol0 ” nel file system montato su entrambi i nodi.

sudo mkdir -p /data/gluster/gvol0

Poiché utilizzeremo il volume replicato, crea il volume denominato "gvol0 ” con due repliche.

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

Avvia il volume.

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

Controlla lo stato del volume creato.

raj@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.itzgeek.local:/data/gluster/gvol0
Brick2: gluster2.itzgeek.local:/data/gluster/gvol0
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: on

Impostazione del client GlusterFS:

Installa glusterfs-client pacchetto per supportare il montaggio dei filesystem GlusterFS. Esegui tutti i comandi come root utente.

$ su -

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

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

Crea una directory per montare il filesystem GlusterFS.

mkdir -p /mnt/glusterfs

Ora monta il filesystem GlusterFS su /mnt/glusterfs usando il comando seguente.

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

Puoi anche utilizzare gluster2.itzgeek.local invece di gluster1.itzgeek.com nel comando precedente.

Verifica il filesystem GlusterFS montato.

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

Puoi anche utilizzare il comando seguente per verificare il filesystem 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.itzgeek.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

Aggiungi la voce di seguito a /etc/fstab per il montaggio automatico durante l'avvio del sistema.

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

Test di replica GlusterFS e alta disponibilità:

Lato server di GlusterFS:

Per verificare la replica, monta il volume GlusterFS creato sullo stesso nodo di archiviazione.

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

Dati all'interno di /mnt la directory di entrambi i nodi sarà sempre la stessa (replica).

Lato client GlusterFS:

Creiamo alcuni file sul filesystem montato su client.itzgeek.local.

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

Verifica i file creati.

[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

Testa entrambi i nodi GlusterFS se hanno gli stessi dati all'interno di /mnt .

raj@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


raj@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

Come sapete, abbiamo montato il volume GlusterFS da gluster1.itzgeek.local su client.itzgeek.local , ora è il momento di testare l'elevata disponibilità del volume spegnendo il nodo.

raj@gluster1:~$ sudo poweroff

Ora verifica la disponibilità dei file, vedrai i file che abbiamo creato di recente anche se il nodo è inattivo.

[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
Potresti riscontrare lentezza nell'esecuzione dei comandi sul filesystem GlusterFS montato a causa del passaggio da GlusterFS a gluster2.itzgeek.local quando il client.itzgeek.local impossibile raggiungere gluster1.itzgeek.local .

Crea altri file sul filesystem GlusterFS per verificare la replica.

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

Verifica il conteggio dei file.

[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

Dal gluster1 è inattivo, tutti i tuoi dati sono ora scritti su gluster2.itzgeek.local grazie all'alta disponibilità. Ora accendi il nodo1 (gluster1.itzgeek.local ).

Controlla il /mnt del gluster1.itzgeekk.local; dovresti vedere tutti e quattro i file nella directory, questo conferma che la replica funziona come previsto.

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

raj@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

Questo è tutto.


Debian
  1. Come installare e configurare la finestra mobile su Debian 11

  2. Come installare e configurare Mariadb 10 in Debian 11

  3. Come installare e configurare MongoDB 5 su Debian 11

  4. Come installare e configurare Redis 6 su Debian 11

  5. Installa e configura Apache e PHP con cgi su Ubuntu o Debian

Come installare e configurare lo stack ELK su Ubuntu e Debian

Come installare e configurare Git in Debian 11

Installa e configura OwnCloud su Ubuntu 21 / Debian 11

Installa e configura Virtualmin su Ubuntu 20.04 / Debian 10 Server

Come installare e configurare Apache su Debian 11?

Installa e configura Fail2ban su Debian 11