Opbevaring med høj tilgængelighed med GlusterFS på Debian 8 - Spejl over to storage-servere

Opbevaring med høj tilgængelighed med GlusterFS på Debian 8 - Spejl over to storage-servere

Denne vejledning viser, hvordan du opretter et ledigt lager med to lagringsservere (Debian Jessie), der bruger GlusterFS. Hver lagringsserver vil være et spejl fra den anden lagringsserver, og filer vil blive replikeret automatisk på tværs af begge lagerknuder. Klientsystemet (Debian 8 også) vil kunne få adgang til lageret som om det var et lokalt filsystem. GlusterFS er et klynget filsystem, der er i stand til at skalere til flere peta-bytes. Den samler forskellige oplagringssten over Infiniband RDMA eller TCP / IP sammenkobling til et stort parallelt netværk filsystem. Oplagringssten kan fremstilles af enhver hardwarevare som f.eks. X86_64 servere med SATA-II RAID og Infiniband HBA.

1 Preliminary Note

I denne tutorial vil jeg bruge tre systemer, to servere og en klient:

  • server1.example.com: IP-adresse 192.168.1.100 (server)
  • server2.example.com: IP-adresse 192.168.1.101 (server)
  • client1.example.com: IP-adresse 192.168.1.102 (klient)

Alle tre systemer skal kunne løse de andre systemers værtsnavne. Hvis dette ikke kan gøres via DNS, skal du redigere filen / etc / hosts, så den ser ud som følger på alle tre systemer:

nano / etc / værter

127.0.0.1 localhost 192.168.1.100 server1.example.com server1 192.168.1.101 server2.example.com server2 192.168.1.102 client1.example.com client1 # Følgende linjer er ønskelige for IPv6 kompatible værter :: 1 localhost ip6-localhost ip6-loopback ff02 :: 1 ip6-allnodes ff02 :: 2 ip6-allrouters

(Det er også muligt at bruge IP-adresser i stedet for værtsnavne i følgende opsætning. Hvis du foretrækker at bruge IP-adresser, behøver du ikke være opmærksom på om værtsnavnet kan løses eller ej.)

2 Opsætning af GlusterFS-serverne

server1.example.com/server2.example.com:

Den nyeste GlusterFS-version er tilgængelig som Debian-pakke fra gluster.org. Vi kan installere det som følger:

Vi tilføjer offentlig nøgle til gluster.org Debian-depot på begge servere.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/rsa.pub | apt-key add -

Tilføj derefter GlusterFS-depotet (kommandoen er en linje!)

ekko deb http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/Debian/jessie/apt jessie main> /etc/apt/sources.list.d/gluster.list

og opdater opbevaringslisten.

apt-get update

Nu kan vi installere GlusterFS server software med apt.

apt-get -y installer glusterfs-server

Kommandoen

glusterfsd-version

skal nu vise GlusterFS versionen, som du lige har installeret (3.7.9 i dette tilfælde):

[email protected]: / # glusterfsd-version
glusterfs 3.7.9 bygget på Mar 23 2016 05: 24: 49
Repository revision: git: //git.gluster.com/glusterfs.git
Ophavsret (c) 2006-2013 Red Hat, Inc. <http://www.redhat.com/>
GlusterFS leveres med absolut ingen garanti.
Det er licenseret til dig under dit valg af GNU Lesser
Generelle offentlige licenser, version 3 eller en senere version (LGPLv3
eller senere) eller GNU General Public License, version 2 (GPLv2),
i alle tilfælde som offentliggjort af Free Software Foundation.
[email protected]: / #

Hvis du bruger en firewall, skal du sørge for, at TCP-porte 111, 24007, 24008, 24009- (24009 + antal mursten over alle volumener) er åbne på server1.example.com og server2.example.com.

Glusterfs gemmer sine data i mappen / dataene på serverne. Denne placering kan være en normal mappe, hvis du har en mindre installation, eller du bruger en separat harddiskpartition og monterer den som / data.

Kør på begge servere:

mkdir / data

at oprette datakataloget.

Derefter skal vi tilføje server2.example.com til den tillid til lagringspladsen (Bemærk venligst, at jeg kører alle GlusterFS-konfigurationskommandoer fra server1.example.com, men du kan også køre dem fra server2.example.com, fordi konfigurationen er repliceret mellem GlusterFS-noderne - bare sørg for at bruge de rigtige værtsnavne eller IP-adresser):

server1.example.com:

Kør på server1.example.com

gluster peer probe server2.example.com

[email protected]: / # gluster peer probe server2.example.com
peer probe: succes.
[email protected]: / #

Status for den betroede opbevaringsbassin skal nu ligner dette:

skarpere peer status

[email protected]: / # gluster peer status
Antal peers: 1

Hostname: server2.example.com
Uuid: 0f7ee46c-6a71-4a31-91d9-6076707eff95
Stat: Peer in Cluster (Connected)
[email protected]: / #

Derefter opretter vi den del, der hedder testvol med to replikaer (Bemærk venligst, at antallet af replikaer er lig med antallet af servere i dette tilfælde, fordi vi vil opsætte spejling) på server1.example.com og server2.example.com i / data / testvol mappe (dette vil blive oprettet, hvis det ikke findes):

glansvolumen oprette testvol replika 2 transport tcp server1.example.com:/data/testvol server2.example.com:/data/testvol force

[email protected]: / # gluster volumen oprette testvol replika 2 transport tcp server1.example.com:/data/testvol server2.example.com:/data/testvol force
volumen oprette: testvol: succes: start venligst lydstyrken for at få adgang til data
[email protected]: / #

Start lydstyrken:

glansvolumen start testvol

[email protected]: / # gluster volumen start testvol
volumen start: testvol: succes
[email protected]: / #

Vores testvolumen er startet med succes.

Det er muligt, at ovenstående kommando fortæller dig, at handlingen ikke lykkedes:

[email protected]: ~ # gluster volumen start testvol
Startvolumen testvol har været mislykket
[email protected]: ~ #

I dette tilfælde skal du kontrollere produktionen af ​​...

server1.example.com/server2.example.com:

netstat -tap | grep glusterfsd

på begge servere.

Hvis du får output som dette ...

[email protected]: / # netstat -tap | grep glusterfsd
tcp 0 0 *: 49152 *: * LISTEN 8007 / glusterfsd
tcp 0 0 server1.example.c: 65533 server1.example.c: 24007 ESTABLISHED 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server2.example.c: 65531 ESTABLISHED 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server1.example.c: 65532 ESTABLISHED 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server1.example.c: 65531 ESTABLISHED 8007 / glusterfsd
tcp 0 0 server1.example.c: 49152 server2.example.c: 65526 ESTABLISHED 8007 / glusterfsd
[email protected]: / #

... alt er fint, men hvis du ikke får nogen output ...

[email protected]: ~ # netstat -tap | grep glusterfsd
[email protected]: ~ #

... genstart GlusterFS-dæmonen på den tilsvarende server (server1.example.com i dette tilfælde):

server2.example.com:

service glusterfs-server genstart

Så tjek output af ...

netstat -tap | grep glusterfsd

... igen på den server - det skulle nu se sådan ud:

[email protected]: / # netstat -tap | grep glusterfsd
tcp 0 0 *: 49152 *: * LISTEN 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server2.example.c: 65532 ESTABLISHED 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server1.example.c: 65526 ESTABLISHED 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server2.example.c: 65525 ESTABLISHED 7852 / glusterfsd
tcp 0 0 server2.example.c: 65533 server2.example.c: 24007 ESTABLISHED 7852 / glusterfsd
tcp 0 0 server2.example.c: 49152 server1.example.c: 65524 ESTABLISHED 7852 / glusterfsd
[email protected]: / #

Nu tilbage til server1.example.com:

server1.example.com:

Du kan kontrollere status for lydstyrken med kommandoen

skinnende volumen info

[email protected]: / # gluster volumen info

Volumennavn: testvol
Type: Replicere
Volume ID: 3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Status: Startet
Antal mursten: 1 x 2 = 2
Transporttype: tcp
mursten:
Brick1: server1.example.com:/data/testvol
Brick2: server2.example.com:/data/testvol
Valgkonfigureret:
performance.readdir-ahead: on
[email protected]: / #

Som standard kan alle klienter oprette forbindelse til lydstyrken. Hvis du kun vil give adgang til client1.example.com (= 192.168.1.102), skal du køre:

glansvolumen sæt testvol auth.allow 192.168.1.102

[email protected]: / # gluster volumen sæt testvol auth.allow 192.168.1.102
volumen sæt: succes
[email protected]: / #

Bemærk, at det er muligt at bruge jokertegn til IP-adresserne (som 192.168. *), Og at du kan angive flere IP-adresser adskilt af komma (f.eks. 192.168.1.102,192.168.1.103).

Volumeninfo skal nu vise den opdaterede status:

skinnende volumen info

[email protected]: / # gluster volumen info

Volumennavn: testvol
Type: Replicere
Volume ID: 3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Status: Startet
Antal mursten: 1 x 2 = 2
Transporttype: tcp
mursten:
Brick1: server1.example.com:/data/testvol
Brick2: server2.example.com:/data/testvol
Valgkonfigureret:
auth.allow: 192.168.1.102
performance.readdir-ahead: on
[email protected]: / #

3 Opsætning af GlusterFS-klienten

client1.example.com:

På klientsystemet tilføjer vi offentlig nøgle til gluster.org Debian-depot først.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/rsa.pub | apt-key add -

Tilføj derefter GlusterFS-depotet (kommandoen er en linje!)

ekko deb http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/Debian/jessie/apt jessie main> /etc/apt/sources.list.d/gluster.list

og opdater opbevaringslisten.

apt-get update

Nu kan vi installere GlusterFS klienten som følger.

apt-get -y installer glusterfs-client

Derefter opretter vi følgende mappe:

mkdir / mnt / glusterfs

Det er det! Nu kan vi montere GlusterFS filsystemet til / mnt / glusterfs med følgende kommando:

mount.glusterfs server1.example.com:/testvol / mnt / glusterfs

(I stedet for server1.example.com kan du lige så godt bruge server2.example.com i ovenstående kommando!)

Du skal nu se den nye andel i output fra ...

montere

[email protected]: / # mount
sysfs on / sys type sysfs (rw, nosuid, nodev, noexec, relatime)
proc on / proc type proc (rw, nosuid, nodev, noexec, relatime)
udev on / dev type devtmpfs (rw, relatime, size = 10240k, nr_inodes = 125556, mode = 755)
devpts på / dev / pts type devpts (rw, nosuid, noexec, relatime, gid = 5, mode = 620, ptmxmode = 000)
tmpfs on / run type tmpfs (rw, nosuid, relatime, størrelse = 204220k, mode = 755)
/ dev / sda1 på / type ext4 (rw, relatime, fejl = remount-ro, data = bestilt)
securityfs on / sys / kernel / sikkerhedstype securityfs (rw, nosuid, nodev, noexec, relatime)
tmpfs på / dev / shm type tmpfs (rw, nosuid, nodev)
tmpfs on / run / lås type tmpfs (rw, nosuid, nodev, noexec, relatime, size = 5120k)
tmpfs på / sys / fs / cgroup type tmpfs (ro, nosuid, nodev, noexec, mode = 755)
cgroup på / sys / fs / cgroup / systemd type cgroup (rw, nosuid, nodev, noexec, relatime, xattr, release_agent = / lib / systemd / systemd-cgroups-agent, navn = systemd)
pstore på / sys / fs / pstore type pstore (rw, nosuid, nodev, noexec, relatime)
cgroup på / sys / fs / cgroup / cpuset type cgroup (rw, nosuid, nodev, noexec, relatime, cpuset)
cgroup på / sys / fs / cgroup / cpu, cpuacct type cgroup (rw, nosuid, nodev, noexec, relatime, cpu, cpuacct)
cgroup på / sys / fs / cgroup / enheder type cgroup (rw, nosuid, nodev, noexec, relatime, enheder)
cgroup på / sys / fs / cgroup / fryser type cgroup (rw, nosuid, nodev, noexec, relatime, fryser)
cgroup på / sys / fs / cgroup / net_cls, net_prio type cgroup (rw, nosuid, nodev, noexec, relatime, net_cls, net_prio)
cgroup på / sys / fs / cgroup / blkio type cgroup (rw, nosuid, nodev, noexec, relatime, blkio)
cgroup på / sys / fs / cgroup / perf_event type cgroup (rw, nosuid, nodev, noexec, relatime, perf_event)
systemd-1 på / proc / sys / fs / binfmt_misc type autofs (rw, relatime, fd = 23, pgrp = 1, timeout = 300, minproto = 5, maxproto = 5, direkte)
mqueue på / dev / mqueue type mqueue (rw, relatime)
debugfs on / sys / kernel / debug type debugfs (rw, relatime)
hugetlbfs på / dev / hugepages type hugetlbfs (rw, relatime)
rpc_pipefs on / run / rpc_pipefs type rpc_pipefs (rw, relatime)
fusectl på / sys / fs / fuse / forbindelser type fusectl (rw, relatime)
server1.example.com:/testvol på / mnt / glusterfs type fuse.glusterfs (rw, relatime, user_id = 0, group_id = 0, default_permissions, allow_other, max_read = 131072)
[email protected]: / #

... og ...

df -h

[email protected]: / # df -h
Filsystemstørrelse Anvendt Tilgængelig Brug% Monteret på
/ dev / sda1 57G 1.1G 53G 2% /
udev 10M 0 10M 0% / dev
tmpfs 200M 4.6M 195M 3% / runde
tmpfs 499M 0 499M 0% / dev / shm
tmpfs 5.0M 0 5.0M 0% / run / lås
tmpfs 499M 0 499M 0% / sys / fs / cgroup
server1.example.com:/testvol 57G 21G 34G 39% / mnt / glusterfs
[email protected]: / #

I stedet for at montere GlusterFS delvist manuelt på klienten, kan du ændre / etc / fstab, så delingen bliver monteret automatisk, når klienten starter.

Åbn / etc / fstab og tilføj følgende linje:

nano / etc / fstab

[...] server1.example.com:/testvol / mnt / glusterfs glusterfs standardindstillinger _netdev 0 0

(I stedet for server1.example.com kan du lige så godt bruge server2.example.com!)

For at teste om din modificerede / etc / fstab fungerer, skal du genstarte klienten:

genstarte

Efter genstart skal du finde andelen i output af ...

df -h

... og ...

montere

4 Testing GlusterFS Replication

Lad os nu lave nogle testfiler på GlusterFS-delen:

client1.example.com:

touch / mnt / glusterfs / test1
touch / mnt / glusterfs / test2

Lad os nu kontrollere / data-mappen på server1.example.com og server2.example.com. Test1- og test2-filerne skal være til stede på hver knudepunkt:

server1.example.com/server2.example.com:

ls -l / data / testvol

[email protected]: / # ls -l / data / testvol /
Total 0
-rw-r-r- 2 rod rod 0 Mar 23 2016 test1
-rw-r-r- 2 rod rod 0 Mar 23 2016 test2

Nu lukker vi server1.example.com ud og tilføjer / sletter nogle filer på GlusterFS-delen på client1.example.com.

server1.example.com:

shutdown-h now

client1.example.com:

touch / mnt / glusterfs / test3
touch / mnt / glusterfs / test4
rm -f / mnt / glusterfs / test2

Ændringerne skal være synlige i mappen / data / testvol på server2.example.com:

server2.example.com:

ls -l / data / testvol

[email protected]: / # ls -l / data / testvol
Total 8
-rw-r-r- 2 rod rod 0 Mar 23 08: 06 test1
-rw-r-r- 2 rod rod 0 Mar 23 08: 09 test3
-rw-r-r- 2 rod rod 0 Mar 23 08: 09 test4
[email protected]: / #

Lad os starte server1.example.com igen og kigge på / data biblioteket:

server1.example.com:

ls -l / data / testvol

[email protected]: / # ls -l / data / testvol
Total 0
-rw-r-r- 2 rod rod 0 Mar 23 08: 06 test1
-rw-r-r- 2 rod rod 0 Mar 23 08: 09 test3
-rw-r-r- 2 rod rod 0 Mar 23 08: 09 test4
[email protected]: / #

Som du ser, synkroniserede server1.example.com automatisk den ændrede. Hvis ændringen ikke er blevet synkroniseret endnu, så er det let at rette, alt hvad vi skal gøre er at påberåbe en læsningskommando på GlusterFS-delen på client1.example.com, fx:

client1.example.com:

ls -l / mnt / glusterfs /

[email protected]: / # ls -l / mnt / glusterfs /
Total 0
-rw-r-r- 1 rod rod 0 Mar 23 08: 06 test1
-rw-r-r- 1 rod rod 0 Mar 23 08: 09 test3
-rw-r-r- 1 rod rod 0 Mar 23 08: 09 test4
[email protected]: / #

5 Links

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.