Postavljanje GlusterFS-a
Važna napomena o ponovnoj montaži
Važna napomena u vezi sigurnosnog kopiranja
Pitanja
GlusterFS je mrežni datotečni sustav koji vam učinkovito omogućuje dijeljenje dva diska na više uređaja na mreži. Ovaj datotečni sustav savršeno je prikladan za Vultrovu ponudu blokova za pohranu, budući da možete dijeliti disk preko mreže što nije moguće izvan kutije.
U pogledu značajki, proširivosti i pouzdanosti, GlusterFS se pokazao kao jedan od najsofisticiranijih i najstabilnijih dostupnih datotečnih sustava.
Kada se naprave promjene na pogonu na jednom poslužitelju, one će se automatski replicirati na drugi poslužitelj u stvarnom vremenu. Da biste to postigli i slijedili ovaj vodič, trebat će vam:
- Dvije instance oblaka Vultr, po mogućnosti s istim operativnim sustavom.
- Dva blok pogona za pohranu iste veličine.
Nakon što naručite ova dva pogona za pohranu blokova, trebali biste ih priključiti na VM 1 i VM 2. Budući da ćemo koristiti oba blok pogona za pohranu za isti datotečni sustav, dijeljenjem ukupne veličine oba diska s dva dobit ćete upotrebljivu količinu od GB-a. Na primjer, ako imate dva pogona od 100 GB, 100 GB će biti upotrebljivo (100 * 2 / 2).
Nadalje, oba VM-a morat će biti na istoj lokaciji kako bi bili na istoj privatnoj mreži. Povezivat ćemo se s poslužiteljima koristeći njihove interne IP adrese. Imajte na umu da ćemo izbrisati podatke na blok pogonu za pohranu. Provjerite jesu li potpuno novi i neformatirani.
U ovom vodiču koristit ćemo storage1i storage2, odnosno s privatnim IP adresama 10.0.99.10 i 10.0.99.11. Nazivi vaših poslužitelja i IP adrese najvjerojatnije će se razlikovati, stoga ih svakako promijenite u procesu postavljanja GlusterFS-a.
Ovaj vodič je napisan imajući na umu CentOS / RHEL 7. Međutim, GlusterFS je relativno kompatibilan s više Linux distribucija.
Postavljanje GlusterFS-a
Korak 1: Promijenite /etc/hostsdatoteku
Da bismo se mogli brzo povezati s odgovarajućim instancama, u hostsdatoteku bismo trebali dodati imena koja se lako pamte . Otvorite /etc/hostsdatoteku i dodajte sljedeće retke na dno:
10.0.99.10 storage1
10.0.99.11 storage2
Korak 2: Dodajte disk storage1
SSH u storage1i izvršite sljedeće naredbe. Prema zadanim postavkama, priključeni blok pogoni za pohranu se montiraju kao /dev/vdb. Ako se ovo razlikuje u vašem slučaju iz bilo kojeg razloga, trebali biste to promijeniti u naredbama u nastavku.
Formatirajte disk:
fdisk /dev/vdb
Pritisnite "enter" za sljedeća tri pitanja (u vezi s veličinom particije i slično, želimo iskoristiti sav raspoloživi prostor na blok pogonima za pohranu) i napišite "w" da zapišete ove promjene na disk. Nakon što je ovo uspješno završeno, napišite:
/sbin/mkfs.ext4 /dev/vdb1
Krenuli smo naprijed i sada smo stvorili datotečni sustav jer Vultr prema zadanim postavkama ne stvara nikakve datotečne sustave na blok memoriji.
Zatim ćemo stvoriti mapu u koju ćemo pohraniti naše datoteke. Možete promijeniti ovo ime, ali ga nećete vidjeti puno pa zbog eliminacije složenosti preporučam da ga ostavite na miru.
mkdir /glusterfs1
Da biste automatski montirali pogon pri pokretanju, otvorite /etc/fstabi dodajte sljedeći redak na dno datoteke:
/dev/vdb1 /glusterfs1 ext4 defaults 1 2
Na kraju, montirajte pogon:
mount -a
Montaža će ostati trajna tijekom ponovnog pokretanja, tako da kada ponovno pokrenete svoj poslužitelj, pogon će se automatski ponovno montirati.
Korak 3: Dodajte disk storage2
Sada kada smo disk dodali i montirali na storage1, moramo također kreirati disk storage2. Naredbe se jedva razlikuju. Za fdisk, slijedite iste korake kao gore.
fdisk /dev/sdb
/sbin/mkfs.ext4 /dev/sdb1
mkdir /glusterfs2
Uredite /etc/fstabi dodajte sljedeći redak:
/dev/vdb1 /glusterfs2 ext4 defaults 1 2
Baš kao i na storage1, pogon će se automatski montirati nakon ponovnog pokretanja.
Montirajte pogon:
mount -a
Na kraju, provjerimo možemo li vidjeti da se particija pojavljuje:
df -h
Ovdje biste trebali vidjeti svoj pogon. Ako se ne dogodi, pokušajte slijediti gore navedene korake.
Korak 4: Instaliranje GlusterFS na storage1istorage2
Sljedeće moramo instalirati GlusterFS. Dodajte spremište i instalirajte 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
Postoji mogućnost da ćete dobiti pogrešku yumjer potpis za spremište nije ispravan. U tom slučaju, sigurno je prisilno ne provjeravati GPG potpis:
yum -y install glusterfs glusterfs-fuse glusterfs-server --nogpgcheck
Na oba poslužitelja izvršite sljedeće naredbe da biste odmah pokrenuli GlusterFS i automatski ga nakon ponovnog pokretanja:
systemctl enable glusterd.service
systemctl start glusterd.service
Ako koristite stariju verziju CentOS, možete koristiti servicei chkconfignaredbe:
chkconfig glusterd on
service glusterd start
Korak 5: Onemogućavanje vatrozida na storage1istorage2
Iako to nije najbolje rješenje samo po sebi, dobro je isključiti vatrozid kako biste eliminirali moguće sukobe s blokiranim portovima. Ako se ne osjećate ugodno raditi ovo, onda slobodno promijenite pravila po svom ukusu, ali zbog prirode GlusterFS-a, toplo preporučam da onemogućite vatrozid. Uzimajući u obzir da je privatna mreža zapravo privatna na Vultru (i ne morate štititi druge korisnike od vatrozida), možete jednostavno blokirati sav dolazni promet s interneta i ograničiti dopuštene veze na privatnu mrežu. Međutim, isključivanje vatrozida i ne mijenjanje bilo koje druge konfiguracije sustava također bi bilo dovoljno:
systemctl stop firewalld.service
systemctl disable firewalld.service
U slučaju da koristite stariju verziju CentOS koji ne podržava systemctl, koristite servicei chkconfignaredbe:
service firewalld stop
chkconfig firewalld off
U slučaju da ne koristite firewalld, pokušajte onemogućiti iptables:
service iptables stop
chkconfig iptables off
Korak 6: Dodajte poslužitelje u spremište za pohranu
Nakon što isključimo vatrozid, možemo dodati oba poslužitelja u spremište za pohranu. Ovo je bazen koji se sastoji od svih dostupnih skladišta. Izvršite sljedeću naredbu na storage1:
gluster peer probe storage2
Ono što ova naredba radi je dodavanje storage2vlastitom spremištu za pohranu. Izvođenjem sljedeće naredbe na storage2, oba pogona će biti sinkronizirana:
gluster peer probe storage1
Nakon što ovo izvršimo na oba poslužitelja, trebali bismo provjeriti status na oba poslužitelja:
gluster peer status
Oba poslužitelja trebaju pokazati stanje "Peers: 1". Česta pogreška je da ljudi očekuju da će vidjeti Peers: 2, ali kao što storage1će viriti storage2sa sobom i obrnuto, oni ne vire sami sa sobom. Dakle, to Peers: 1je ono što nam treba.
Korak 7: Stvaranje zajedničkog diska na storage1
Sada kada se oba poslužitelja mogu povezati jedan s drugim putem GlusterFS-a, napravit ćemo zajednički disk.
Na storage1, izvrši:
gluster volume create mailrep-volume replica 2 storage1:/glusterfs1/files storage2:/glusterfs2/files force
Svezak je sada stvoren. U GlusterFS-u morate "pokrenuti" volumen kako bi se aktivno dijelio na više uređaja. Započnimo:
gluster volume start mailrep-volume
Zatim odaberite mapu koja bi trebala biti na volumenu i replicirana na oba poslužitelja. U ovom vodiču koristit ćemo mapu /var/files. Naravno, ovo može biti sve što želite. Napravite ga storage1 samo na :
mkdir /var/files
Zatim ga montirajte:
mount.glusterfs storage1:/mailrep-volume /var/files/
Ažurirajte /etc/fstabtako da će se pogon automatski montirati pri pokretanju. Dodajte sljedeće:
storage1:/mailrep-volume /var/files glusterfs defaults,_netdev 0 0
Ponovno montirajte pogon:
mount -a
Korak 8: Stvaranje zajedničkog diska na storage2
Sada kada smo stvorili zajednički disk na storage1, moramo ga stvoriti storage2i na. Napravite mapu s istom lokacijom/putom i imenom:
mkdir /var/files
mount.glusterfs storage2:/mailrep-volume /var/files/
Baš kao na storage1, dodajte sljedeći redak u /etc/fstab:
storage2:/mailrep-volume /var/files glusterfs defaults,_netdev 0 0
Ponovno montirajte pogon:
mount -a
Korak 9: Testirajte zajedničku pohranu
Idite do /var/filesmape storage1i stvorite datoteku:
cd /var/files
touch created_on_storage1
Zatim idite na storage2poslužitelj. Izvršite ls -lai trebali biste vidjeti da se datoteka created_on_storage1pojavljuje.
Na storage2, idite do /var/filesmape i stvorite datoteku:
cd /var/files
touch created_on_storage2
Vratite se na storage1i izvršite ls -la /var/files. Trebali biste vidjeti da se datoteka created_on_storage2pojavljuje ovdje.
Korak 10: Ponovno pokrenite sve poslužitelje (izborno)
Kako biste još jednom provjerili hoće li vaša postavka ostati trajna tijekom ponovnih pokretanja, najbolje je da ponovno pokrenete sve poslužitelje. Kao što je spomenuto, trebali biste pričekati da se jedan poslužitelj pokrene, a zatim ponovno pokrenuti drugi kako bi se zajednički disk automatski montirao.
storage1Prvo ponovno pokrenite , pričekajte da se pokrene, a zatim ponovno pokrenite storage2. Sada se prijavite i izvršite na oba poslužitelja:
cd /var/files
ls -la
Sada biste trebali vidjeti kako se pojavljuju obje datoteke. Obavezno započnite bez datoteka na volumenu, stoga uklonite testne datoteke koje smo stvorili. To možete učiniti na storage1, storage2ili oboje. Promjene će se odmah replicirati:
cd /var/files
rm created_on_storage1
rm created_on_storage2
Trebali biste imati identičan zajednički volumen na oba poslužitelja, bez obzira na radnje na oba volumena.
Sada ste postavili potpunu postavku GlusterFS-a sa 100 GB (ili više) korisnog prostora. U slučaju da vam u budućnosti zatreba više, postavka je lako skalabilna za dodavanje više kapaciteta i/ili više poslužitelja ako vaše radno opterećenje to zahtijeva.
Hvala na čitanju!
Važna napomena o ponovnoj montaži
GlusterFS omogućuje ažuriranje vaših podataka na dva diska. Međutim, trebate imati na umu da kada se oba poslužitelja ponovno pokrenu u isto vrijeme , morat ćete prisilno montirati pogone na oba poslužitelja. Morate prisilno montirati ručno izvođenjem sljedeće naredbe:
gluster volume start mailrep-volume force
To je zato što jedan od poslužitelja djeluje kao poslužitelj, a drugi kao klijent. Iako se razlika u praksi ne primjećuje lako, to znači da kada trebate ponovno pokrenuti oba poslužitelja, trebate ponovno pokrenuti jedan, pričekati dok se ne pokrene, a zatim pokrenuti drugi.
Važna napomena u vezi sigurnosnog kopiranja
Iako će se vaši podaci replicirati na dva diska, trebali biste replicirati svoje podatke najmanje tri puta. Iako su vaši podaci bolje zaštićeni od oštećenja podataka i slično, imajte na umu da su promjene trenutne i da ni na koji način nećete biti zaštićeni od ljudske pogreške. Kada uklonite sve datoteke na jednom disku, ove promjene će se odmah replicirati na drugi pogon, što znači da će vaši podaci biti izbrisani na obje instance.
Srećom, postoji više načina da se to izbjegne. Prije svega, preporučujem da omogućite sigurnosne kopije na samoj instanci u oblaku. Iako ove sigurnosne kopije ne uključuju podatke o blok memoriji, one će zaštititi podatke na samoj instanci.
Kada je riječ o sigurnosnom kopiranju podataka na samom bloku za pohranu, preporučam da pokrenete zasebnu instancu (na primjer SATA plan) kako biste, na primjer, svake večeri mogli pokrenuti sigurnosnu kopiju s jednog od dva priključena poslužitelja. Na taj će način vaši podaci biti sigurni na drugom zasebnom uređaju.
Pitanja
Mogu li povećati pohranu na disku?
Možete povećati veličinu blokova memorije s Vultr upravljačke ploče. Nakon toga trebate promijeniti veličinu diska unutar operativnog sustava, ali to je izvan dosega ovog članka.
Mogu li priključiti blok pohranu na više od dva poslužitelja?
Iako je ovaj vodič napisan za dva poslužitelja (dakle dva blok pogona za pohranu spojena na oba poslužitelja), ali moguće je uzeti ovaj vodič i koristiti ga i za više od dva poslužitelja. Postavka s više od dva poslužitelja / pogona mogla bi izgledati ovako za 6 poslužitelja, na primjer:
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
S obzirom na to da svi pogoni za pohranu blokova imaju kapacitet npr. 200 GB, dobili biste 200 * 4 / 4. Drugim riječima, korisni prostor je uvijek kapacitet jednog bloka za pohranu. To je zato što se jedan poslužitelj s priloženom blok pohranom tretira kao "master" od strane GlusterFS i replicira se na druge poslužitelje. Međutim, postava je napravljena tako da može preživjeti bez glavnog poslužitelja, što ga čini tako redundantnim i pouzdanim, stabilnim rješenjem.