GNU/Linux >> Znalost Linux >  >> Debian

Úložiště s vysokou dostupností s GlusterFS na Debianu 8 – zrcadlení mezi dvěma úložnými servery

Tento tutoriál ukazuje, jak nastavit úložiště s vysokou dostupností se dvěma servery úložiště (Debian Jessie), které používá GlusterFS. Každý úložný server bude zrcadlem druhého úložného serveru a soubory budou automaticky replikovány přes oba úložné uzly. Klientský systém (také Debian 8) bude mít přístup k úložišti, jako by to byl místní souborový systém. GlusterFS je klastrovaný souborový systém schopný škálování na několik petabajtů. Sdružuje různé úložné bloky přes propojení Infiniband RDMA nebo TCP/IP do jednoho velkého paralelního síťového souborového systému. Úložné kostky mohou být vyrobeny z jakéhokoli běžného hardwaru, jako jsou servery x86_64 s SATA-II RAID a Infiniband HBA.

1 předběžná poznámka

V tomto tutoriálu použiji tři systémy, dva servery a klienta:

  • server1.example.com:IP adresa 192.168.1.100 (server)
  • server2.example.com:IP adresa 192.168.1.101 (server)
  • klient1.example.com:IP adresa 192.168.1.102 (klient)

Všechny tři systémy by měly být schopny rozlišit názvy hostitelů ostatních systémů. Pokud to nelze provést prostřednictvím DNS, měli byste upravit soubor /etc/hosts tak, aby na všech třech systémech vypadal následovně:

nano /etc/hosts
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 klient1.example /com klient1

# Následující řádky jsou vhodné pro hostitele s podporou IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

(V následujícím nastavení je také možné použít IP adresy místo názvů hostitelů. Pokud dáváte přednost použití IP adres, nemusíte se starat o to, zda lze názvy hostitelů přeložit nebo ne.)

2 Nastavení serverů GlusterFS

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

Nejnovější verze GlusterFS je k dispozici jako balíček Debianu z gluster.org. Můžeme jej nainstalovat následovně:

Na oba servery jsme přidali veřejný klíč úložiště gluster.org Debian.

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

Poté přidejte úložiště GlusterFS (příkaz je jeden řádek!)

echo 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 

a aktualizujte seznam úložišť.

aktualizace apt-get

Nyní můžeme nainstalovat serverový software GlusterFS pomocí apt.

apt-get -y install glusterfs-server

Příkaz

glusterfsd --version

by nyní měla zobrazovat verzi GlusterFS, kterou jste právě nainstalovali (v tomto případě 3.7.9):

[chráněno e-mailem]:/# glusterfsd --version
glusterfs 3.7.9 vytvořeno 23. března 2016 05:24:49
Revize úložiště:git://git.gluster.com/glusterfs .git
Copyright (c) 2006-2013 Red Hat, Inc.
GlusterFS se ABSOLUTNĚ ŽÁDNÁ ZÁRUKA.
Je vám licencována podle vašeho výběru GNU Lesser
General Public License, verze 3 nebo jakékoli pozdější verze (LGPLv3
nebo novější), nebo GNU General Public License, verze 2 (GPLv2),
ve všech případy, jak je zveřejnila Free Software Foundation.
[email protected]:/#

Pokud používáte firewall, ujistěte se, že jsou na server1.example.com a server2.example.com otevřené porty TCP 111, 24007, 24008, 24009-(24009 + počet bloků na všech svazcích).

Glusterfs ukládá svá data do adresáře /data na serverech. Toto umístění může být normální adresář, pokud máte menší instalaci nebo používáte samostatný oddíl pevného disku a připojíte jej jako /data.

Spustit na obou serverech:

mkdir /data

k vytvoření datového adresáře.

Dále musíme přidat server2.example.com do důvěryhodného úložiště (upozorňujeme, že všechny konfigurační příkazy GlusterFS spouštím ze serveru server1.example.com, ale můžete je spouštět také ze serveru server2.example.com, protože konfigurace se replikuje mezi uzly GlusterFS – jen se ujistěte, že používáte správné názvy hostitelů nebo IP adresy):

server1.example.com:

Na server1.example.com spusťte

gluster peer probe server2.example.com
[e-mail chráněný]:/# gluster peer probe server2.example.com
peer probe:success.
[email protected]:/#

Stav fondu důvěryhodného úložiště by nyní měl být podobný tomuto:

stav sdruženého partnera
[e-mail chráněn]:/# stav sdruženého partnera
Počet kolegů:1
Název hostitele:server2.example.com
Uuid:0f7ee46c-6a71-4a31-91d9-6076707eff95
Stav:Peer in Cluster (Připojeno)
[e-mail chráněný]:/#

Dále vytvoříme sdílení s názvem testvol se dvěma replikami (upozorňujeme, že počet replik se v tomto případě rovná počtu serverů, protože chceme nastavit zrcadlení) na server1.example.com a server2.example.com v /data/testvol adresář (pokud neexistuje, bude vytvořen):

svazek clusteru vytvořit testvol repliku 2 transport tcp server1.example.com:/data/testvol server2.example.com:/data/testvol force
[e-mail chráněno]:/# svazek clusteru vytvoření repliky testvol 2 transport tcp server1.example.com:/data/testvol server2.example.com:/data/testvol force
vytvoření svazku:testvol:success:prosím spusťte svazek pro přístup k datům
[email protected]:/#

Spusťte hlasitost:

gluster volume start testvol
[email protected]:/# gluster volume start testvol
volume start:testvol:success
[email protected]:/#

Náš testovací objem byl úspěšně zahájen.

Je možné, že výše uvedený příkaz vám říká, že akce nebyla úspěšná:

[email protected]:~# gluster volume start testvol
Spuštění objemu testvol se nezdařilo
[email protected]:~#

V tomto případě byste měli zkontrolovat výstup...

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

netstat -tap | grep glusterfsd

na obou serverech.

Pokud získáte výstup takto...

[e-mail chráněný]:/# netstat -tap | grep glusterfsd
tcp 0 0 *:49152 *:* POSLECHNOUT 8007/glusterfsd
tcp 0 0 server1.example.c:65533 server1.example.c:24007 ESTABLISHED 8007 /gluster 0 server1.example.c:49152 server2.example.c:65531 ESTABLISHED 8007/glusterfsd
tcp 0 0 server1.example.c:49152 server1.example.c:65532 ESTABLISHED /glusterfsd>8007 0 server1.example.c:49152 server1.example.c:65531 ESTABLISHED 8007/glusterfsd
tcp 0 0 server1.example.c:49152 server2.example.c:65526 ​​ESTABLISHED>[glusterfsde7 protected]:/#

... vše je v pořádku, ale pokud nedostanete žádný výstup...

[e-mail chráněn]:~# netstat -tap | grep glusterfsd
[e-mail chráněn]:~#

... restartujte démona GlusterFS na odpovídajícím serveru (v tomto případě server1.example.com):

server2.example.com:

restart služby glusterfs-server

Poté zkontrolujte výstup...

netstat -tap | grep glusterfsd

... znovu na tom serveru - nyní by to mělo vypadat takto:

[e-mail chráněný]:/# netstat -tap | grep glusterfsd
tcp 0 0 *:49152 *:* POSLECHNOUT 7852/glusterfsd
tcp 0 0 server2.example.c:49152 server2.example.c:65532 ESTABLISHED 7852 /gluster0 0 server2.example.c:49152 server1.example.c:65526 ​​ESTABLISHED 7852/glusterfsd
tcp 0 0 server2.example.c:49152 server2.example.c:65525 ESTABLISHED /glusterfsd>852 0 server2.example.c:65533 server2.example.c:24007 ZALOŽENO 7852/glusterfsd
tcp 0 0 server2.example.c:49152 server1.example.c:65524<>ESTABLISHED>[glusterfsde/mail 7852 protected]:/#

Nyní zpět na server1.example.com:

server1.example.com:

Stav svazku můžete zkontrolovat pomocí příkazu

Informace o objemu clusteru
[email protected]:/# info o objemu clusteru
Název svazku:testvol
Typ:Replikovat
ID svazku:3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Stav:Zahájeno
Počet cihel:1 x 2 =2
Typ dopravy:tcp
Bricks:
Brick1:server1.example.com:/data/testvol
Brick2:server2.example.com:/data/testvol
Možnosti překonfigurovány:
performance.readdir-ahead:on
[email protected]:/#

Ve výchozím nastavení se ke svazku mohou připojit všichni klienti. Pokud chcete udělit přístup pouze k client1.example.com (=192.168.1.102), spusťte:

nastavení hlasitosti clusteru testvol auth.allow 192.168.1.102
[chráněno e-mailem]:/# sada svazků gluster testvol auth.allow 192.168.1.102
sada svazků:​​úspěch
[chráněno e-mailem]:/#

Upozorňujeme, že pro adresy IP je možné použít zástupné znaky (např. 192.168.*) a že můžete zadat více adres IP oddělených čárkou (např. 192.168.1.102, 192.168.1.103).

Informace o svazku by nyní měly zobrazovat aktualizovaný stav:

Informace o objemu clusteru

[email protected]:/# info o objemu clusteru

Název svazku:testvol
Typ:Replikovat
ID svazku:3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Stav:Zahájeno
Počet cihel:1 x 2 =2
Typ dopravy:tcp
Bricks:
Brick1:server1.example.com:/data/testvol
Brick2:server2.example.com:/data/testvol
Options Reconfigured:
auth.allow:192.168.1.102
performance.readdir-ahead:on
[e-mail protected]:/#

3 Nastavení klienta GlusterFS

client1.example.com:

Na klientský systém nejprve přidáme veřejný klíč repozitáře Debianu gluster.org.

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

Poté přidejte úložiště GlusterFS (příkaz je jeden řádek!)

echo 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 

a aktualizujte seznam úložišť.

aktualizace apt-get

Nyní můžeme nainstalovat klienta GlusterFS následovně.

apt-get -y install glusterfs-client

Poté vytvoříme následující adresář:

mkdir /mnt/glusterfs

A je to! Nyní můžeme připojit souborový systém GlusterFS do /mnt/glusterfs pomocí následujícího příkazu:

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

(Místo server1.example.com můžete také použít server2.example.com ve výše uvedeném příkazu!)

Nyní byste měli vidět nový podíl ve výstupech...

mount
[e-mail chráněný]:/# mount
sysfs na /sys typu sysfs (rw,nosuid,nodev,noexec,relatime)
proc na /proc typu proc (rw,nosuid,nodev,noexec ,relatime)
udev na /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=125556,mode=755)
devpts na /dev/pts typu devpts (rw,nosuid,noexec,relatime ,gid=5,mode=620,ptmxmode=000)
tmpfs na /spustit typ tmpfs (rw,nosuid,relatime,size=204220k,mode=755)
/dev/sda1 zapnuto / typ ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs na /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs na /dev/shm zadejte tmpfs (rw,nosuid,nodev)
tmpfs na /run/lock typ tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs na /sys/fs/cgroup typ tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup na /sys/fs/cgroup/systemd typu cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd -cgroups-agent,name=systemd)
pstore na /sys/fs/pstore typu pstore (rw,nosuid,nodev,noexec,rel atime)
cgroup na /sys/fs/cgroup/cpuset typu cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup na /sys/fs/cgroup/cpu,cpuacct typu cgroup ( rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup na /sys/fs/cgroup/devices typu cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup na / cgroup typu sys/fs/cgroup/freezer (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup na /sys/fs/cgroup/net_cls,net_prio typ cgroup (rw,nosuid,nodev,noexec,relatime ,net_cls,net_prio)
cgroup na /sys/fs/cgroup/blkio typu cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup na /sys/fs/cgroup/perf_event typ cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 na /proc/sys/fs/binfmt_misc typu autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue na /dev/mqueue typu mqueue (rw,relatime)
debugfs na /sys/kernel/debug typu debugfs (rw,relatime)
hugetlbfs na /dev/hugepages typ hugetlbfs (rw,relatime)
rpc_pipefs na /run/ typ rpc_pipefs rpc_pipefs (rw,relatime)
fusectl na /sys/fs/pojistka/typ připojení fusectl (rw,relatime)
server1.example.com:/testvol na /mnt/glusterfs typ fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
[e-mail chráněný]:/#

... a...

df -h
[chráněno e-mailem]:/# df -h
Velikost souborového systému Využitá Využití % Nasazeno na
/dev/sda1 57G 1.1G 53G 2% /
udev 10M 0 10M 0% /dev
tmpfs 200M 4,6M 195M 3% /run
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 499 mil. 0 499 mil. 0 % /sys/fs/cgroup
server1.example.com:/testvol 57G 21G 34G 39 % /mnt/glusterfs
[e-mail chráněný]:/#

Místo ručního připojování sdílené složky GlusterFS na klienta můžete upravit /etc/fstab tak, aby se sdílená složka připojila automaticky, když se klient zavede.

Otevřete /etc/fstab a připojte následující řádek:

nano /etc/fstab
[...]server1.example.com:/testvol /mnt/glusterfs výchozí nastavení glusterfs,_netdev 0 0

(Opět, místo server1.example.com můžete také použít server2.example.com!)

Chcete-li otestovat, zda váš upravený /etc/fstab funguje, restartujte klienta:

restartovat

Po restartu byste měli najít podíl ve výstupech...

df -h

... a...

mount

4 Testování replikace GlusterFS

Nyní vytvoříme nějaké testovací soubory na sdílené složce GlusterFS:

client1.example.com:

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

Nyní se podívejme na adresář /data na server1.example.com a server2.example.com. Soubory test1 a test2 by měly být přítomny na každém uzlu:

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

ls -l /data/testvol
[e-mail chráněný]:/# ls -l /data/testvol/
celkem 0
-rw-r--r-- 2 kořenový adresář 0 23. března 2016 test1
- rw-r--r-- 2 kořenový kořen 0 23. března 2016 test2

Nyní vypneme server1.example.com a přidáme/smažeme některé soubory ve sdílené složce GlusterFS na webu client1.example.com.

server1.example.com:

vypnout -h nyní

client1.example.com:

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

Změny by měly být viditelné v adresáři /data/testvol na server2.example.com:

server2.example.com:

ls -l /data/testvol
[e-mail chráněný]:/# ls -l /data/testvol
celkem 8
-rw-r--r-- 2 root root 0 23. března 08:06 test1
-rw-r--r-- 2 kořenový adresář 0 23. března 08:09 test3
-rw-r--r-- 2 kořenový adresář 0 23. března 08:09 test4
[e-mail chráněn] :/#

Spusťte znovu server1.example.com a podívejte se na adresář /data:

server1.example.com:

ls -l /data/testvol
[e-mail chráněný]:/# ls -l /data/testvol
celkem 0
-rw-r--r-- 2 kořenový adresář 0 23. března 08:06 test1
-rw-r--r-- 2 kořenový adresář 0 23. března 08:09 test3
-rw-r--r-- 2 kořenový adresář 0 23. března 08:09 test4
[e-mail chráněn] :/#

Jak vidíte, server1.example.com automaticky synchronizoval změněné. V případě, že změna ještě nebyla synchronizována, lze to snadno opravit, vše, co musíme udělat, je vyvolat příkaz read na sdílené složce GlusterFS na klient1.example.com, např.:

client1.example.com:

ls -l /mnt/glusterfs/
[e-mail chráněný]:/# ls -l /mnt/glusterfs/
celkem 0
-rw-r--r-- 1 kořenový adresář 0 23. března 08:06 test1
-rw-r--r-- 1 kořenový adresář 0 23. března 08:09 test3
-rw-r--r-- 1 kořenový adresář 0 23. března 08:09 test4
[e-mail chráněn ]:/#

  • GlusterFS:http://www.gluster.org/
  • Dokumentace GlusterFS: http://gluster.readthedocs.org/en/latest/
  • Debian:http://www.debian.org/

Debian
  1. Úložiště s vysokou dostupností s GlusterFS na CentOS 7 – zrcadlení mezi dvěma úložnými servery

  2. Úložiště s vysokou dostupností s GlusterFS 3.0.x na Debian Squeeze – Automatická replikace souborů přes dva úložné servery

  3. Vysoce dostupné úložiště s GlusterFS 3.2.x na Debian Wheezy – automatická replikace souborů (zrcadlení) na dvou serverech úložiště

  1. Vytvoření samostatného úložného serveru podobného NFS pomocí GlusterFS 3.2.x na Debian Wheezy

  2. Distribuované replikované úložiště mezi čtyři uzly úložiště s GlusterFS 3.2.x na CentOS 6.3

  3. Úložiště s vysokou dostupností s GlusterFS na Fedoře 12 – Automatická replikace souborů (zrcadlení) přes dva úložné servery

  1. Distribuované úložiště mezi čtyřmi uzly úložiště s GlusterFS 3.2.x na Ubuntu 12.10

  2. Distribuované replikované úložiště mezi čtyři uzly úložiště s GlusterFS 3.2.x na Ubuntu 12.10

  3. Pruhování přes čtyři uzly úložiště s GlusterFS 3.2.x na Ubuntu 12.10