GlusterFS

Iš Žinynas.
Jump to navigation Jump to search

Strategija - turėti dviejuose serveriuose tuos pačius sinchronizuojamus duomenis. Tam tikslui šiame straipsnyje naudosime tinklo skalės pridedamąją failų sistemą GlusterFS, RedHat kuriamą ir tobulinamą tinklo failų sistema užtikrins duomenų sinchronizavimą tarp serverių. GlusterFS funkcionalumas yra gana platus, jis palaiko failais paremtus veidrodžius (ang. mirrors), failais paremtą apkrovos balansavimą, automatinį skirstymą įskaitant numatytąjį disko spartinimą (caching), saugyklos kvotas ir snapshotus.


Diegimas[keisti]

Abiejuose serveriuose įdiegiame GlusterFS (žiūrime, kad atitiktų versijos):

sudo apt-get install glusterfs-server
sudo systemctl start glusterd

Paruošimas[keisti]

Surašome statinius hostus (į abu serverius) kuriuos naudosime, į /etc/hosts:

x.x.x.x gluster0.domenas.lt gluster0
y.y.y.y gluster1.domenas.lt gluster1

Adresai gali būti vidiniai (jeigu naudojame vidiniame tinkle) arba išoriniai (jeigu naudojama už firewall, būtina praforwardinti portus)

NAT strategija (portu forwardinimas)[keisti]

  • 24007 – Gluster Daemon
  • 24008 – Management
  • 49152 – Kiekvienas brickas kiekvienam volumui reikalauja individualaus porto. Kiekvienam naujam brickui bus naudojamas naujas portas, pradedant nuo 49152. Jeigu turite voluma su dviem brick'ais, jums reiks atidaryti portus (49152 – 49153).
  • 38465 – 38467 – Reikalingi jeigu naudojamas Gluster NFS servisas.

Šie portai yra TCP ir UDP:

  • 111 – portmapper

Pratestuojame sujungiamumą[keisti]

Norint pradėti kurti volumus, pirmiausia reiktų patikrinti sujungiamumą tarp serverių, paleidžiame (iš pirmojo)

gluster peer probe gluster1.domenas.lt

Jeigu matome:

peer probe: success

Komunikavimas pavyko! (lieka tą patį padaryti iš antrojo serverio). O susijungimų statusus galima peržvelgti šia komanda:

sudo gluster peer status

Jeigu reikia išimti peer

gluster peer detach <hostname>

Viskam pavykus ir susijungus, galima pradėti kurti failų sistemos debesį

Failų sistemos debesies kūrimas[keisti]

Kadangi mes suinteresuoti, kad būtų kuo didesnis duomenų pasiekiamumas, debesį darysim su replikacijos funkcionalumu. Tai leis mums turėti keletą duomenų kopijų, tuo atveju jeigu nubaustų dievas ir atjungtų vieną iš serverių. Taipogi darysime replikacijos nustatymą "2" (nurodymas kiek serverių sujungiame). Tai nurodys, kad norime dviejų identiškų duomenų kopijų kiekviename serveryje, o visas sukūrimo komanda atrodys maždaug taip:

sudo gluster volume create debesis replica 2 gluster0.domenas.lt:/mnt/debesis gluster1.domenas.lt:/mnt/debesis force

Rezultate turime gauti:

volume create: debesis: success: please start the volume to access data

Šie žargonai sukurs voluma pavadinimu debesis. Iš šios direktorijos (/mnt/debesis) failai bus sinchronizuojami palei visus sujungtus serverius, jeigu šį direktorija (/mnt/debesis) neegzistuoja, po pastarosios komandos ji bus sukurta.

Paleidimas[keisti]

Turime sukurtą volumą, bet jis nėra aktyvus. Suaktyvinti volumą "debesis" galima parašę komandą:

sudo gluster volume start debesis

Jeigu gauname rezultatą:

volume start: debesis: success

Viskas ok ir galime naudoti naujai sukurtą failų sistemą tinkle.

Priėjimo ribojimas (saugumas)[keisti]

Dabar, kai turime paruoštą ir sutvarkytą GlusterFS būtina pasirūpinti jo saugumu ir užrakinti nuo pašalinių akių. Po defaultu bet koks kompiuteris gali patekti į mūsų debesį, norint duoti priėjimus tik tam tikriems ip (klientams, nodams) reikia rašyti šią komandą (viename iš serverių):

sudo gluster volume set debesis auth.allow gluster0_client_ip,gluster1_client2_ip

Norint vėl grąžinti visą priėjimą rašome:

sudo gluster volume set volume1 auth.allow *

Kitos reikalingos GlusterFS komandos[keisti]

Kai pradėsite žaisti ir konfigūruoti GlusterFS saugyklą, galite pasimesti tarp galybė komandų bei nuostatų, nors jums reikia paprastų, pvz.: kaip pažiūrėti saugyklos ir volumų info, čia aprašysisu keleta pagalbinių komandų, padedančių geriau pažinti jūsų saugyklą.

  • Jeigu norite sužinoti informaciją apie visas saugyklos volumus
sudo gluster volume info
  • Norint sužinoti kokie peer'ai (klientai) prisijungę prie saugyklos:
sudo gluster peer status
  • Jeigu norite pamatyti detalesnes volumo statistikas iš pažiūrėti kaip jis veikia, pirmiausia įjunkite profiliavimą:
sudo gluster volume profile debesis start

Kai komanda bus baigta galime peržiūrėti surinktus rezultatus, šia komanda:

sudo gluster volume profile debesis info
  • Norint pamatyti bendrinę informaciją ir susijusius dalykus, rašome:
sudo gluster volume status
  • Taip pat galime patekti i GlusterFS valdymo konsolę (iš ten tiesiogiai galėsime vykdyti šias komandas nesikreipiant į pačią konsolę):
sudo gluster

Toliau galite rašyti help ir t.t.

Klientų pajungimas prie saugyklos[keisti]

Saugyklą galima naudoti ir klientų kompiuteriuose per fusefs paremtą (vartotojo lygio) failų sistemą, ji bus montuojama kaip papildomas diskas (nereiks pilnos sinchronizacijos kliento kompiuteryje), įdiegiame kliento :

sudo apt-get install glusterfs-client

Susikuriame kur nors direktoriją kur montuosime nutolusią saugyklą:

sudo mkdir /media/debesis

Montuojame nutolusią saugyklą:

sudo mount -t glusterfs gluster0.domenas.lt:/debesis /media/debesis

Galime patikrinti ar matome failus

ls /mnt/debesis

Performance tuning[keisti]

gluster volume set <VOLUMAS> performance.cache-size 2GB
gluster volume set <VOLUMAS> performance.io-thread-count 16
gluster volume set <VOLUMAS> server.event-threads 4

Perziureti pakeitimus galima komanda:

gluster volume info <VOLUMAS>

Problemų sprendimas[keisti]

 Nesimountina sistemos startavimo metu[keisti]

kišam šią eilutę į /etc/rc.local

sleep 5;mount -a&

Redaguojam /etc/init/mounting-glusterfs.conf, kad atrodytų taip:

author "Louis Zuckerman <me@louiszuckerman.com>"
description "Block the mounting event for glusterfs filesystems until the network interfaces are running"
instance $MOUNTPOINT
start on mounting TYPE=glusterfs
task
script
 if status glusterfs-server; then
   start wait-for-state WAIT_FOR=glusterfs-server WAIT_STATE=running \
       WAITER=mounting-glusterfs-$MOUNTPOINT
 fi
end script


Nestartuoja nginx arba apache po montavimo[keisti]

Kišam šią eilutę į /etc/rc.local

sleep 3;systemctl restart nginx&

Sinchonizacija is vieno peer'o[keisti]

gluster volume sync <HOSTNAME> [all|<VOLNAME>] - sync the volume information from a peer

Kita[keisti]

BeeGFS Vs. GlusterFS