GlusterFS este un sistem de fișiere atașat la rețea, care vă permite să partajați două unități pe mai multe dispozitive din rețea. Acest sistem de fișiere este o potrivire perfectă pentru oferta de stocare în bloc a lui Vultr, deoarece puteți partaja o unitate în rețea, ceea ce nu este posibil în afara cazului.
În ceea ce privește caracteristicile, extensibilitatea și fiabilitatea, GlusterFS s-a dovedit a fi unul dintre cele mai sofisticate și stabile sisteme de fișiere disponibile.
Când se fac modificări la unitatea de pe un server, acestea vor fi automat reproduse la celălalt server în timp real. Pentru a realiza acest lucru și urmați acest ghid, veți avea nevoie de:
- Două instanțe cloud Vultr, de preferință care rulează același sistem de operare.
- Două unități de stocare bloc de aceeași dimensiune.
După ce au comandat aceste două unități de stocare bloc, ar trebui să le atașați la VM 1 și VM 2. Întrucât vom folosi ambele unități de stocare bloc pentru același sistem de fișiere, împărțirea dimensiunii totale a ambelor unități la două vă va oferi suma utilizabilă din GB. De exemplu, dacă aveți două unități de 100 GB, 100 GB vor fi utilizate (100 * 2/2).
În plus, ambele echipamente virtuale vor trebui să fie în aceeași locație pentru a putea fi pe aceeași rețea privată. Ne vom conecta la servere folosind adresele IP interne ale acestora. Rețineți că vom șterge datele de pe unitatea de stocare bloc. Asigurați-vă că sunt complet noi și neformatate.
În acest ghid, vom folosi storage1și storage2, respectiv, cu adrese IP private 10.0.99.10 și 10.0.99.11. Numele serverului și adresele IP vor diferi cel mai probabil, așa că asigurați-vă că le puteți schimba în procesul de configurare a GlusterFS.
Acest ghid a fost reținut cu CentOS / RHEL 7 în minte. Cu toate acestea, GlusterFS este relativ compatibil în mai multe distribuții Linux.
Configurarea GlusterFS
Pasul 1: Modificați /etc/hostsfișierul
Pentru a ne putea conecta rapid la instanțele respective, ar trebui să adăugăm nume ușor de reținut în hostsfișier. Deschideți /etc/hostsfișierul și adăugați următoarele linii în partea de jos a acestuia:
10.0.99.10 storage1
10.0.99.11 storage2
Pasul 2: Adăugați discul pornit storage1
SSH introduce storage1și execută următoarele comenzi. Implicit, unitățile de stocare bloc atașate sunt montate /dev/vdb. Dacă acest lucru diferă în cazul dvs. din orice motiv, ar trebui să îl schimbați în comenzile de mai jos.
Formatați discul:
fdisk /dev/vdb
Apăsați „introduceți” pentru următoarele trei întrebări (cu privire la dimensiunea partiției și altele asemenea, dorim să folosim tot spațiul disponibil pe unitățile de stocare bloc) și scrieți „w” pentru a scrie aceste modificări pe disc. După ce aceasta a fost finalizată cu succes, scrieți:
/sbin/mkfs.ext4 /dev/vdb1
Am mers înainte și am creat un sistem de fișiere acum, deoarece Vultr nu creează sisteme de fișiere în stocarea blocurilor în mod implicit.
În continuare, vom crea folderul pe care vom fi stocate fișierele noastre. Puteți schimba acest nume, dar nu veți vedea că apare mult, de aceea eliminând complexitatea, vă recomand să lăsați singur.
mkdir /glusterfs1
Pentru a monta automat unitatea pe boot, deschideți /etc/fstabși adăugați următoarea linie în partea de jos a fișierului:
/dev/vdb1 /glusterfs1 ext4 defaults 1 2
În cele din urmă, montați unitatea:
mount -a
Montarea va rămâne persistentă de-a lungul repornirilor, astfel încât la repornirea serverului, unitatea va fi montată automat din nou.
Pasul 3: Adăugați discul pornit storage2
Acum că avem discul adăugat și montat storage1, trebuie să creăm și discul storage2. Comenzile abia diferă. Pentru fdisk, urmați aceiași pași ca mai sus.
fdisk /dev/sdb
/sbin/mkfs.ext4 /dev/sdb1
mkdir /glusterfs2
Editați /etc/fstabși adăugați următoarea linie:
/dev/vdb1 /glusterfs2 ext4 defaults 1 2
La fel ca și pe altul storage1, unitatea va fi automat montată pe repornirile.
Montați unitatea:
mount -a
În cele din urmă, să verificăm dacă putem vedea afișarea partiției:
df -h
Ar trebui să vedeți unitatea afișată aici. Dacă nu, încercați să urmați pașii de mai sus.
Pasul 4: Instalarea GlusterFS pe storage1șistorage2
Trebuie să instalăm GlusterFS în continuare. Adăugați depozitul și instalați GlusterFS:
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.5/CentOS/glusterfs-epel.repo
yum -y install glusterfs glusterfs-fuse glusterfs-server
Există șanse să primiți o eroare din yumcauză că semnătura pentru depozit nu este corectă. În acest caz, este sigur să nu forțați să verificați semnătura GPG:
yum -y install glusterfs glusterfs-fuse glusterfs-server --nogpgcheck
Pe ambele servere, executați următoarele comenzi pentru a porni GlusterFS chiar acum și porniți-l automat după o repornire:
systemctl enable glusterd.service
systemctl start glusterd.service
Dacă utilizați o versiune mai veche de CentOS, puteți utiliza serviceși chkconfigcomenzile:
chkconfig glusterd on
service glusterd start
Pasul 5: Dezactivarea firewallului pornit storage1șistorage2
Deși nu este cea mai bună soluție în sine, este bine să opriți firewallul pentru a elimina posibilele conflicte cu porturile blocate. Dacă nu vă simțiți confortabil făcând acest lucru, atunci nu vă doriți să modificați regulile după bunul plac, dar, datorită naturii GlusterFS, vă recomand foarte mult să dezactivați firewallul. Considerând că o rețea privată este de fapt privată pe Vultr (și nu este necesar să ignorați alți clienți), puteți bloca pur și simplu traficul de intrare de pe internet și să restricționați conexiunile permise la rețeaua privată. Cu toate acestea, oprirea firewallului și a nu modifica alte configurații ale sistemului ar fi suficient:
systemctl stop firewalld.service
systemctl disable firewalld.service
În cazul în care utilizați o versiune mai veche CentOS care nu este compatibilă systemctl, utilizați serviceși chkconfigcomenzile:
service firewalld stop
chkconfig firewalld off
În cazul în care nu utilizați firewalld, încercați să dezactivați iptables:
service iptables stop
chkconfig iptables off
Pasul 6: Adăugați servere la pool-ul de stocare
După oprirea firewall-ului, putem adăuga ambele servere la pool-ul de stocare. Acesta este un bazin format din toată stocarea disponibilă. Executați următoarea comandă pe storage1:
gluster peer probe storage2
Ce face această comandă este storage2să adăugați la propriul său pool de stocare. Executând următoarea comandă activată storage2, ambele unități vor fi sincronizate:
gluster peer probe storage1
După executarea acestui lucru pe ambele servere, ar trebui să verificăm starea pe ambele servere:
gluster peer status
Ambele servere ar trebui să arate o stare de „Peers: 1”. O greșeală obișnuită este că oamenii se așteaptă să vadă Peers: 2, dar, așa cum storage1vor fi peering cu storage2și invers, ei nu se uită cu ei înșiși. Prin urmare, Peers: 1este ceea ce avem nevoie.
Pasul 7: Crearea unei unități partajate pornită storage1
Acum, când ambele servere se pot conecta între ele prin GlusterFS, vom crea o unitate partajată.
Pornit storage1, executați:
gluster volume create mailrep-volume replica 2 storage1:/glusterfs1/files storage2:/glusterfs2/files force
Volumul a fost creat acum. În GlusterFS, trebuie să „porniți” un volum, astfel încât să fie partajat activ pe mai multe dispozitive. Să începem:
gluster volume start mailrep-volume
Apoi, alege un folder care ar trebui să fie pe volum și replicat pe ambele servere. În acest tutorial vom folosi folderul /var/files. Desigur, aceasta poate fi orice îți place. Creați-l storage1 doar pe :
mkdir /var/files
Apoi, montează-l:
mount.glusterfs storage1:/mailrep-volume /var/files/
Actualizați /etc/fstabastfel unitatea va fi automat montată pe boot. Adăugați următoarele:
storage1:/mailrep-volume /var/files glusterfs defaults,_netdev 0 0
Remontați unitatea:
mount -a
Pasul 8: Crearea unei unități partajate pornită storage2
Acum că am creat o unitate de partajare pornită storage1, trebuie să creăm și una storage2. Creați un folder cu aceeași locație / cale și același nume:
mkdir /var/files
mount.glusterfs storage2:/mailrep-volume /var/files/
La fel ca pe storage1, adăugați următoarea linie la /etc/fstab:
storage2:/mailrep-volume /var/files glusterfs defaults,_netdev 0 0
Remontați unitatea:
mount -a
Pasul 9: Testați spațiul de stocare partajat
Navigați la /var/filesfolderul de pe storage1și creați un fișier:
cd /var/files
touch created_on_storage1
Apoi, îndreptați-vă către storage2server. Executați ls -lași ar trebui să vedeți fișierul created_on_storage1apărând.
Pornit storage2, navigați la /var/filesdosar și creați un fișier:
cd /var/files
touch created_on_storage2
Întoarceți-vă storage1și executați ls -la /var/files. Ar trebui să vedeți că fișierul created_on_storage2apare aici.
Pasul 10: reporniți toate serverele (opțional)
Pentru a verifica de două ori dacă configurația dvs. va rămâne persistentă în timpul repornirii, ca o practică bună, ar trebui să reporniți toate serverele. Așa cum am menționat, ar trebui să așteptați ca un server să fie activat, apoi să reporniți celălalt pentru ca unitatea partajată să fie montată automat.
Reporniți mai storage1întâi, așteptați ca acesta să fie activat, apoi reporniți storage2. Acum conectați-vă și executați pe ambele servere:
cd /var/files
ls -la
Ar trebui să vedeți acum apărând ambele fișiere. Asigurați-vă că începeți fără fișiere în volum, astfel încât să eliminați fișierele de test pe care le-am creat. Puteți face acest lucru pe storage1, storage2sau ambele. Modificările vor fi replicate instantaneu:
cd /var/files
rm created_on_storage1
rm created_on_storage2
Ar trebui să aveți un volum partajat identic pe ambele servere, indiferent de acțiunile de pe ambele volume.
Acum ați configurat o configurație completă GlusterFS cu 100 GB (sau mai mult) spațiu utilizabil. În cazul în care veți avea nevoie de mai mult în viitor, configurarea este ușor scalabilă pentru a adăuga mai multă capacitate și / sau mai multe servere, în cazul în care volumul de muncă necesită acest lucru.
Vă mulțumim pentru lectură!
Notă importantă privind remontarea
GlusterFS vă permite să vă păstrați datele la zi pe două unități. Cu toate acestea, trebuie să rețineți că atunci când ambele servere sunt repornite în același timp , va trebui să forțați să montați unitățile pe ambele servere. Trebuie să forțați montajul manual executând următoarea comandă:
gluster volume start mailrep-volume force
Aceasta deoarece unul dintre servere acționează ca un server, iar celălalt acționează ca un client. Deși diferența nu se observă foarte ușor în practică, acest lucru înseamnă că atunci când trebuie să reporniți ambele servere, ar trebui să reporniți unul, să așteptați până când acesta se deschide, apoi să porniți celălalt.
Notă importantă cu privire la copii de rezervă
Chiar dacă datele dvs. vor fi replicate pe două unități, ar trebui să vă reproduceți datele cel puțin de trei ori. Deși datele dvs. sunt mai bine protejate împotriva corupției datelor și altele asemenea, ar trebui să rețineți că modificările sunt instantanee și nu veți fi protejat în niciun fel de eroarea umană. Când eliminați toate fișierele de pe o unitate, aceste modificări vor fi imediat reproduse la cealaltă unitate, ceea ce înseamnă că datele dvs. ar fi șterse în ambele cazuri.
Din fericire, există mai multe abordări pentru a evita acest lucru. În primul rând, vă recomand să activați copiile de rezervă pe instanța dvs. cloud. Deși aceste copii de siguranță nu includ date despre stocarea blocurilor, acestea vor proteja datele despre instanța în sine.
Când vine vorba de copierea de rezervă a datelor din stocarea blocului în sine, vă recomand să rotiți o instanță separată (de exemplu, un plan SATA), astfel încât să puteți rula o copie de rezervă de la unul dintre cele două servere atașate în fiecare seară, de exemplu. În acest fel, datele dvs. vor fi în siguranță pe un alt dispozitiv separat.
FAQ
Sunt capabil să măresc stocarea pe disc?
Puteți crește dimensiunea de stocare a blocului din panoul de control Vultr. Ar trebui să redimensionați discul din sistemul de operare după, dar acest lucru nu se încadrează în obiectul acestui articol.
Pot să atașez stocarea blocului pe mai multe două servere?
Deși acest ghid a fost scris pentru două servere (deci două unități de stocare bloc atașate ambelor servere), dar este posibil să luați acest ghid și să îl utilizați și pentru peste două servere. O configurație cu peste două servere / unități ar putea arăta astfel pentru 6 servere, de exemplu:
VM: storage1
VM: storage2
VM: storage3
VM: storage4
Block Storage: attached to storage1
Block Storage: attached to storage2
Block Storage: attached to storage3
Block Storage: attached to storage4
Având în vedere că toate unitățile de stocare bloc au o capacitate de 200 GB, de exemplu, veți obține 200 * 4 / 4. Cu alte cuvinte, spațiul utilizabil este întotdeauna capacitatea unei unități de stocare bloc unic. Acest lucru se datorează faptului că un server cu stocarea blocului atașat este tratat ca „maestru” de GlusterFS și este reprodus pe celelalte servere. Totuși, configurația este creată pentru a putea supraviețui fără un server master, ceea ce o face o soluție redundantă și fiabilă, stabilă.