Sette opp GlusterFS
Viktig merknad ved ommontering
Viktig merknad angående sikkerhetskopiering
FAQ
GlusterFS er et nettverkstilkoblet filsystem som effektivt lar deg dele to stasjoner på tvers av flere enheter på nettverket. Dette filsystemet passer perfekt for Vultrs blokklagringstilbud, ettersom du kan dele en stasjon på tvers av nettverket som ikke er mulig rett ut av esken.
Når det gjelder funksjoner, utvidbarhet og pålitelighet, har GlusterFS vist seg å være et av de mest sofistikerte og stabile filsystemene som finnes.
Når endringer gjøres på stasjonen på en server, vil de automatisk bli replikert til den andre serveren i sanntid. For å oppnå dette og følge denne veiledningen, trenger du:
- To Vultr-skyforekomster, fortrinnsvis med samme operativsystem.
- To blokklagringsstasjoner av samme størrelse.
Etter å ha bestilt disse to blokklagringsstasjonene, bør du koble dem til VM 1 og VM 2. Siden vi kommer til å bruke begge blokklagringsstasjonene for samme filsystem, vil du dele den totale størrelsen på begge stasjonene med to for å gi deg bruksmengden av GB-er. For eksempel, hvis du har to 100 GB-stasjoner, vil 100 GB være brukbar (100 * 2 / 2).
Videre må begge VM-ene være på samme plassering for at de skal være på samme private nettverk. Vi vil koble til serverne ved å bruke deres interne IP-adresser. Merk at vi sletter dataene på blokklagringsstasjonen. Sørg for at de er helt nye og uformaterte.
I denne veiledningen vil vi bruke storage1og storage2, henholdsvis med private IP-adresser 10.0.99.10 og 10.0.99.11. Servernavnene og IP-adressene dine vil mest sannsynlig variere, så sørg for å endre dem i prosessen med å sette opp GlusterFS.
Denne veiledningen ble skrevet med CentOS / RHEL 7 i tankene. GlusterFS er imidlertid relativt krysskompatibel på tvers av flere Linux-distribusjoner.
Sette opp GlusterFS
Trinn 1: Endre /etc/hostsfilen
For at vi raskt skal kunne koble til de respektive instansene, bør vi legge til navn som er enkle å huske i hostsfilen. Åpne /etc/hostsfilen og legg til følgende linjer nederst i den:
10.0.99.10 storage1
10.0.99.11 storage2
Trinn 2: Legg til disken storage1
SSH inn i storage1og utfør følgende kommandoer. Som standard er tilkoblede blokklagringsstasjoner montert som /dev/vdb. Hvis dette av en eller annen grunn avviker i ditt tilfelle, bør du endre det i kommandoene nedenfor.
Formater disken:
fdisk /dev/vdb
Trykk "enter" for de følgende tre spørsmålene (angående partisjonsstørrelse og lignende, vi ønsker å bruke all tilgjengelig plass på blokklagringsstasjonene) og skriv "w" for å skrive disse endringene til disken. Etter at dette er fullført, skriv:
/sbin/mkfs.ext4 /dev/vdb1
Vi har gått videre og opprettet et filsystem nå da Vultr ikke oppretter noen filsystemer på blokklagring som standard.
Deretter skal vi lage mappen vi skal lagre filene våre i. Du kan endre dette navnet, men du vil ikke se det vises mye, så for å eliminere kompleksiteten anbefaler jeg å la det være i fred.
mkdir /glusterfs1
For å montere stasjonen automatisk ved oppstart, åpne /etc/fstabog legg til følgende linje nederst i filen:
/dev/vdb1 /glusterfs1 ext4 defaults 1 2
Monter til slutt stasjonen:
mount -a
Monteringen vil forbli vedvarende ved omstart, så når du starter serveren på nytt, vil stasjonen automatisk bli montert igjen.
Trinn 3: Legg til disken storage2
Nå som vi har lagt til og montert disken på storage1, må vi også lage disken på storage2. Kommandoene er knapt forskjellige. For fdisk, følg de samme trinnene som ovenfor.
fdisk /dev/sdb
/sbin/mkfs.ext4 /dev/sdb1
mkdir /glusterfs2
Rediger /etc/fstabog legg til følgende linje:
/dev/vdb1 /glusterfs2 ext4 defaults 1 2
Akkurat som på storage1, vil stasjonen automatisk bli montert ved omstart.
Monter stasjonen:
mount -a
Til slutt, la oss sjekke om vi kan se partisjonen dukke opp:
df -h
Du bør se stasjonen din dukke opp her. Hvis den ikke gjør det, prøv å følge trinnene ovenfra.
Trinn 4: Installere GlusterFS på storage1ogstorage2
Vi må installere GlusterFS neste gang. Legg til depotet og installer 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
Det er en sjanse for at du får en feilmelding yumfordi signaturen for depotet ikke er riktig. I så fall er det trygt å tvinge til å ikke se etter GPG-signaturen:
yum -y install glusterfs glusterfs-fuse glusterfs-server --nogpgcheck
På begge serverne, utfør følgende kommandoer for å starte GlusterFS akkurat nå og start den automatisk etter en omstart:
systemctl enable glusterd.service
systemctl start glusterd.service
Hvis du bruker en eldre versjon av CentOS, kan du bruke serviceog chkconfigkommandoer:
chkconfig glusterd on
service glusterd start
Trinn 5: Deaktivering av brannmuren på storage1ogstorage2
Selv om det ikke er den beste løsningen i seg selv, er det en god idé å slå av brannmuren for å eliminere mulige konflikter med blokkerte porter. Hvis du ikke føler deg komfortabel med å gjøre dette, kan du gjerne endre reglene etter eget ønske, men på grunn av GlusterFS-typen anbefaler jeg på det sterkeste å deaktivere brannmuren. Med tanke på at et privat nettverk faktisk er privat på Vultr (og du trenger ikke å brannmure andre kunder), kan du ganske enkelt blokkere all innkommende trafikk fra internett og begrense tillatte tilkoblinger til det private nettverket. Men å slå av brannmuren og ikke endre noen andre systemkonfigurasjoner vil også være tilstrekkelig:
systemctl stop firewalld.service
systemctl disable firewalld.service
I tilfelle du bruker en eldre CentOS versjon som ikke støtter systemctl, bruk serviceog chkconfigkommandoer:
service firewalld stop
chkconfig firewalld off
Hvis du ikke bruker firewalld, prøv å deaktivere iptables:
service iptables stop
chkconfig iptables off
Trinn 6: Legg til servere i lagringspoolen
Etter å ha slått av brannmuren, kan vi legge til begge serverne i lagringsbassenget. Dette er et basseng som består av all tilgjengelig lagring. Utfør følgende kommando på storage1:
gluster peer probe storage2
Det denne kommandoen gjør, er å legge storage2til sin egen lagringspool. Ved å utføre følgende kommando på storage2, vil begge stasjonene være synkronisert:
gluster peer probe storage1
Etter å ha utført dette på begge serverne, bør vi sjekke statusen på begge serverne:
gluster peer status
Begge serverne skal vise statusen "Peers: 1". En vanlig feil er at folk forventer å se Peers: 2, men som det storage1vil være å kikke med storage2og omvendt, kikker de ikke med seg selv. Derfor Peers: 1er det vi trenger.
Trinn 7: Opprette en delt disk på storage1
Nå som begge serverne er i stand til å koble til hverandre gjennom GlusterFS, skal vi opprette en delt stasjon.
På storage1, utfør:
gluster volume create mailrep-volume replica 2 storage1:/glusterfs1/files storage2:/glusterfs2/files force
Volumet er nå opprettet. I GlusterFS må du "starte" et volum slik at det deles aktivt på tvers av flere enheter. La oss starte det:
gluster volume start mailrep-volume
Deretter velger du en mappe som skal være på volumet og replikeres på tvers av begge serverne. I denne opplæringen skal vi bruke mappen /var/files. Naturligvis kan dette være alt du liker. Opprett det storage1 kun på :
mkdir /var/files
Deretter monterer du den:
mount.glusterfs storage1:/mailrep-volume /var/files/
Oppdater /etc/fstabslik at stasjonen automatisk blir montert ved oppstart. Legg til følgende:
storage1:/mailrep-volume /var/files glusterfs defaults,_netdev 0 0
Monter stasjonen på nytt:
mount -a
Trinn 8: Opprette en delt disk på storage2
Nå som vi har opprettet en delt disk på storage1, må vi også opprette en på storage2. Opprett en mappe med samme plassering/bane og navn:
mkdir /var/files
mount.glusterfs storage2:/mailrep-volume /var/files/
Akkurat som på storage1, legg til følgende linje til /etc/fstab:
storage2:/mailrep-volume /var/files glusterfs defaults,_netdev 0 0
Monter stasjonen på nytt:
mount -a
Trinn 9: Test den delte lagringen
Naviger til /var/filesmappen på storage1og lag en fil:
cd /var/files
touch created_on_storage1
Gå deretter over til storage2serveren. Kjør ls -laog du skal se filen created_on_storage1vises.
På storage2, naviger til /var/filesmappen og lag en fil:
cd /var/files
touch created_on_storage2
Gå tilbake til storage1og utfør ls -la /var/files. Du bør se filen created_on_storage2vises her.
Trinn 10: Start alle servere på nytt (valgfritt)
For å dobbeltsjekke om oppsettet ditt vil forbli vedvarende ved omstart, bør du starte alle servere på nytt. Som nevnt bør du vente til en server er oppe og deretter starte den andre på nytt for at den delte stasjonen automatisk skal monteres.
Start storage1først på nytt , vent til den er oppe, og start deretter på nytt storage2. Logg inn på og kjør på begge serverne:
cd /var/files
ls -la
Du skal nå se at begge filene vises. Sørg for å starte uten filer på volumet, så fjern testfilene vi har laget. Du kan gjøre dette på storage1, storage2eller begge deler. Endringer vil bli replikert umiddelbart:
cd /var/files
rm created_on_storage1
rm created_on_storage2
Du bør ha et identisk delt volum på tvers av begge serverne, uavhengig av handlingene på begge volumene.
Du har nå satt opp et fullverdig GlusterFS-oppsett med 100 GB (eller mer) brukbar plass. I tilfelle du trenger mer i fremtiden, er oppsettet enkelt skalerbart for å legge til mer kapasitet og/eller flere servere dersom arbeidsmengden krever dette.
Takk for at du leser!
Viktig merknad ved ommontering
GlusterFS gjør det mulig å holde dataene dine oppdatert på to stasjoner. Du bør imidlertid merke deg at når begge serverne startes på nytt samtidig , må du tvinge stasjonene på begge serverne. Du må tvinge monteringen manuelt ved å utføre følgende kommando:
gluster volume start mailrep-volume force
Det er fordi en av serverne fungerer som en server og den andre fungerer som en klient. Selv om forskjellen ikke merkes så lett i praksis, betyr dette at når du trenger å starte begge serverne på nytt, bør du starte den ene på nytt, vente til den er oppe, og deretter starte den andre.
Viktig merknad angående sikkerhetskopiering
Selv om dataene dine vil bli replikert over to stasjoner, bør du ha dataene replikert minst tre ganger. Selv om dataene dine er bedre beskyttet mot datakorrupsjon og lignende, bør du være oppmerksom på at endringer er øyeblikkelige og du vil på ingen måte være beskyttet mot menneskelige feil. Når du fjerner alle filene på den ene stasjonen, vil disse endringene umiddelbart bli replikert til den andre stasjonen, noe som betyr at dataene dine vil bli slettet på begge forekomster.
Heldigvis finnes det flere måter å unngå dette på. For det første anbefaler jeg å aktivere sikkerhetskopiering på selve skyforekomsten. Selv om disse sikkerhetskopiene ikke inkluderer data på blokklagringen, vil de beskytte data på selve forekomsten.
Når det gjelder å sikkerhetskopiere dataene på selve blokklagringen, anbefaler jeg å spinne opp en egen instans (for eksempel en SATA-plan) slik at du for eksempel kan kjøre en sikkerhetskopi fra en av de to tilknyttede serverne hver natt. På denne måten vil dataene dine være trygge på en annen separat enhet.
FAQ
Kan jeg øke disklagringen min?
Du kan øke blokklagringsstørrelsen fra Vultr-kontrollpanelet. Du bør endre størrelsen på disken inne i operativsystemet etterpå, men det er utenfor rammen av denne artikkelen.
Kan jeg koble blokklagringen til over to servere?
Selv om denne guiden er skrevet for to servere (dermed to blokklagringsstasjoner koblet til begge serverne), men det er mulig å ta denne guiden og bruke den for over to servere også. Et oppsett med over to servere/stasjoner kan se slik ut for 6 servere, for eksempel:
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
Gitt at alle blokklagringsstasjoner har en kapasitet på f.eks. 200 GB, vil du få 200 * 4 / 4. Med andre ord er den brukbare plassen alltid kapasiteten til en enkelt blokklagringsstasjon. Det er fordi en server med blokklagring tilkoblet blir behandlet som "master" av GlusterFS, og den er replikert på tvers av de andre serverne. Imidlertid er oppsettet bygget for å kunne overleve uten en masterserver, noe som gjør det til en så redundant og pålitelig, stabil løsning.