GNU/Linux >> Znalost Linux >  >> Ubuntu

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

Tento tutoriál ukazuje, jak zkombinovat čtyři jednotlivé servery úložiště (se systémem Ubuntu 12.10) do distribuovaného replikovaného úložiště s GlusterFS. Uzly 1 a 2 (replikace1) a také 3 a 4 (replikace2) se budou vzájemně zrcadlit a replikace1 a replikace2 budou spojeny do jednoho většího úložného serveru (distribuce). V podstatě se jedná o RAID10 přes síť. Pokud ztratíte jeden server z replikace1 a jeden z replikace2, distribuovaný svazek bude nadále fungovat. Klientský systém (také Ubuntu 12.10) 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.

Neposkytuji žádnou záruku, že to pro vás bude fungovat!

1 předběžná poznámka

V tomto tutoriálu používám pět systémů, čtyři servery a klienta:

  • server1.example.com:IP adresa 192.168.0.100 (server)
  • server2.example.com:IP adresa 192.168.0.101 (server)
  • server3.example.com:IP adresa 192.168.0.102 (server)
  • server4.example.com:IP adresa 192.168.0.103 (server)
  • client1.example.com:IP adresa 192.168.0.104 (klient)

Protože všechny kroky z tohoto tutoriálu spustíme s právy root, můžeme buď před všechny příkazy v tomto tutoriálu přidat řetězec sudo, nebo se staneme rootem hned teď zadáním

sudo su 

Všech pět systémů by mělo být schopno 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 pěti systémech vypadal následovně:

vi /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1
192.168.0.101   server2.example.com     server2
192.168.0.102   server3.example.com     server3
192.168.0.103   server4.example.com     server4
192.168.0.104   client1.example.com     client1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

(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/server3.example.com/server4.example.com:

GlusterFS je k dispozici jako balíček pro Ubuntu 12.10, takže jej můžeme nainstalovat následovně:

apt-get install glusterfs-server

Příkaz

glusterfsd --version

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

[e-mail protected]:~# glusterfsd --version
glusterfs 3.2.5 vytvořeno 31. ledna 2012 07:39:58
Revize úložiště:git://git.gluster.com/glusterfs.git
Autorská práva (c) 2006-2011 Gluster Inc.
GlusterFS se nevztahuje ABSOLUTNĚ ŽÁDNÁ ZÁRUKA.
Můžete redistribuovat kopie GlusterFS za podmínek GNU General Public License.
[e-mail chráněn]:~#

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

Dále musíme přidat server2.example.com, server3.example.com a server4.example.com do důvěryhodného fondu úložiště (upozorňujeme, že spouštím všechny konfigurační příkazy GlusterFS ze server1.example.com, ale můžete dobře je spouštějte z server2.example.com nebo server3.example.com nebo server4.example.com, protože konfigurace je replikována 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
gluster peer probe server3.example.com
gluster peer probe server4.example.com

Výstup by měl být následující:

[chráněno e-mailem]:~# gluster peer probe server2.example.com
Probe úspěšná
[e-mail chráněný]:~#

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

gluster peer status

[e-mail chráněn]:~# stav sdruženého partnera
Počet kolegů:3

Název hostitele:server2.example.com
Uuid:600ff607-f7fd-43f6-af8d-419df703376d
Stav:Peer in Cluster (připojeno)

Název hostitele:server3.example.com
Uuid:1d6a5f3f-c2dd-4727-a050-0431772cc381
Stav:Peer in Cluster (připojeno)

Název hostitele:server4.example.com
Uuid:0bd9d445-0b5b-4a91-be6f-02b13c41d5d6
Stav:Peer in Cluster (připojeno)
[e-mail chráněn]:~#

Dále vytvoříme distribuovanou replikovanou sdílenou složku s názvem testvol se dvěma replikami (upozorňujeme, že počet replik je v tomto případě poloviční než počet serverů, protože chceme nastavit distribuovanou replikaci) na server1.example.com, server2.example.com , server3.example.com a server4.example.com v adresáři /data (pokud neexistuje, bude vytvořen):

gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data 

[e-mail chráněno]:~# svazek clusteru vytvořit repliku testvol 2 transport tcp server1.example.com:/datový server2.example.com:/datový server3.example.com:/datový server4.example.com:/data
Vytvoření objemu testvol bylo úspěšné. Pro přístup k datům spusťte svazek.
[e-mail chráněn]:~#

Spusťte hlasitost:

gluster volume start testvol

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/server3.example.com/server4.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*:24009*:*Poslouchejte 1110 /glusterfsd
tcp 0 0 localhost.localdom:1019 localhost.localdo:24007 zavedeno 1110 /glusterfsd
[e -mail 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]:~#

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

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

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

server2.example.com/server3.example.com/server4.example.com:

/etc/init.d/glusterfs-server restart

Poté zkontrolujte výstup...

netstat -tap | grep glusterfsd

... opět na těchto serverech - nyní by to mělo vypadat takto:

[e-mail chráněný]:~# netstat -tap | GREP GLUSTERFSD
TCP 0 0*:24009*:*Poslouchejte 1152 /glusterfsd
tcp 0 0 localhost.localdom:1018 localhost.localdo:24007 zavedeno 1152 /glusterfsd
[e -mail chráněno]:~ ~ ~ ~ ~ ~ ~ ~ #

[e-mail chráněný]:~# netstat -tap | Grep glusterfsd
tcp 0 0*:24009*:*Poslouchejte 1311 /glusterfsd
tcp 0 0 localhost.localdom:1018 localhost.localdo:24007 zavedeno 1311 /glusterfsd
[e -mail Protected]:~ ~ ~ #

[e-mail chráněný]:~# netstat -tap | Grep glusterfsd
tcp 0 0*:24009*:*Poslouchejte 1297 /glusterfsd
tcp 0 0 localhost.localdom:1019 localhost.localdo:24007 zavedeno 1297 /glusterfsd
[e -mail chráněno]:~ ~ ~ ~ ~ ~ ~ ~ #

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

server1.example.com:

Stav svazku můžete zkontrolovat příkazem

gluster volume info
[email protected]:~# gluster volume info

Název svazku:testvol
Typ:Distributed-Replicate
Stav:Spuštěno
Počet cihel:2 x 2 =4
Typ přepravy:tcp
Kombiny:
Brick1:server1.example.com:/data
Brick2:server2.example.com:/data
Brick3:server3.example.com:/data
Brick4:server4.example. com:/data
[e-mail chráněn]:~#

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.0.104), spusťte:

gluster volume set testvol auth.allow 192.168.0.104

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.0.104, 192.168.0.105).

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

gluster volume info
[email protected]:~# gluster volume info

Název svazku:testvol
Typ:Distributed-Replicate
Stav:Spuštěno
Počet cihel:2 x 2 =4
Typ přepravy:tcp
Kombiny:
Brick1:server1.example.com:/data
Brick2:server2.example.com:/data
Brick3:server3.example.com:/data
Brick4:server4.example. com:/data
Možnosti překonfigurovány:
auth.allow:192.168.0.104
[e-mail chráněn]:~#

3 Nastavení klienta GlusterFS

client1.example.com:

Na klienta můžeme nainstalovat klienta GlusterFS následovně:

apt-get 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

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

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

mount

[e-mail chráněný]:~# mount
/dev/mapper/server5-root na / zadejte ext4 (rw,errors=remount-ro)
proc na /proc typu proc (rw,noexec,nosuid, nodev)
sysfs na /sys typu sysfs (rw,noexec,nosuid,nodev)
fusectl na /sys/fs/fuse/connections typu fusectl (rw)
žádné na /sys/kernel /debug typ debugfs (rw)
žádný na /sys/kernel/security typ securityfs (rw)
udev na /dev typ devtmpfs (rw,mode=0755)
devpts na /dev/ pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs zapnuto /spustit typ tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
žádné zapnuto /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
žádný na /run/shm typu tmpfs (rw,nosuid,nodev)
/dev/sda1 na /boot type ext2 (rw)
server1.example.com:/testvol na /mnt/glusterfs typu fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[e-mail chráněný]:~#

... a...

df -h

[chráněno e-mailem]:~# df -h
Systém souborů            Velikost  Použitá Využití % Připojeno na
/dev/mapper/server5-root
                                                                                        % 238 m 4,0K 238M 1%/dev
Tmpfs 99m 212K 99M 1%/Run
Žádné 5,0 m 0 5,0 m 0%/Run/Lock
Žádné 247M 0 247M 0%/SHM/SHM
/dev/sda1              228 M   24 M  193 M  11 % /boot
server1.example.com:/testvol
                                                                        158 G                        1 ~#

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:

vi /etc/fstab 
[...]
server1.example.com:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0

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

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

reboot 

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

df -h 

... a...

mount

4 testování

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

client1.example.com:

dotkněte se /mnt/glusterfs/test1
dotkněte se /mnt/glusterfs/test2
dotkněte se /mnt/glusterfs/test3
dotkněte se /mnt/glusterfs/test4
dotkněte se /mnt/glusterfs/ test5
dotkněte se /mnt/glusterfs/test6

Nyní se podívejme na adresář /data na server1.example.com, server2.example.com, server3.example.com a server4.example.com. Všimnete si, že replikace1 i replikace2 obsahují pouze část souborů/adresářů, které tvoří sdílenou složku GlusterFS na klientovi, ale uzly tvořící replikaci1 (server1 a server2) nebo replikaci2 (server3 a server4) obsahují stejné soubory (zrcadlení):

server1.example.com:

ls -l /data

[e-mail protected]:~# ls -l /data
celkem 0
-rw-r--r-- 1 kořenový kořen 0 17. 12. 2012 15:49 test1
-rw -r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test2
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test4
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test5
[e-mail chráněný]:~#

server2.example.com:

ls -l /data

[e-mail protected]:~# ls -l /data
celkem 0
-rw-r--r-- 1 kořenový kořen 0 17. 12. 2012 15:49 test1
-rw -r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test2
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test4
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test5
[e-mail chráněný]:~#

server3.example.com:

ls -l /data

[e-mail chráněný]:~# ls -l /data
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2012-12-17 15:49 test3
-rw -r--r-- 1 root root 0 2012-12-17 15:49 test6
[e-mail chráněný]:~#

server4.example.com:

ls -l /data

[e-mail chráněný]:~# ls -l /data
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2012-12-17 15:49 test3
-rw -r--r-- 1 root root 0 2012-12-17 15:49 test6
[e-mail chráněný]:~#

Nyní vypneme server1.example.com a server4.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/server4.example.com:

shutdown -h now

client1.example.com:

rm -f /mnt/glusterfs/test5
rm -f /mnt/glusterfs/test6

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

server2.example.com:

ls -l /data

[e-mail protected]:~# ls -l /data
celkem 0
-rw-r--r-- 1 kořenový kořen 0 17. 12. 2012 15:49 test1
-rw -r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test2
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test4
[e-mail chráněn]:~#

server3.example.com:

ls -l /data

[email protected]:~# ls -l /data
celkem 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test3
[e-mail chráněno]:~#

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

server1.example.com:

ls -l /data

[e-mail protected]:~# ls -l /data
celkem 0
-rw-r--r-- 1 kořenový kořen 0 17. 12. 2012 15:49 test1
-rw -r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test2
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test4
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test5
[e-mail chráněný]:~#

server4.example.com:

ls -l /data

[e-mail chráněný]:~# ls -l /data
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2012-12-17 15:49 test3
-rw -r--r-- 1 root root 0 2012-12-17 15:49 test6
[e-mail chráněný]:~#

Jak vidíte, server1.example.com a server4.example.com si nevšimly změn, ke kterým došlo, když byly mimo provoz. To je snadné opravit, vše, co musíme udělat, je vyvolat příkaz čtení na sdílené složce GlusterFS na klient1.example.com, např.:

client1.example.com:

ls -l /mnt/glusterfs/

[e-mail protected]:~# ls -l /mnt/glusterfs/
celkem 0
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test1
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test2
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test3
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test4
[e-mail chráněný]:~#

Nyní se znovu podívejte na adresář /data na server1.example.com a server4.example.com a měli byste vidět, že změny byly replikovány do těchto uzlů:

server1.example.com:

ls -l /data

[e-mail protected]:~# ls -l /data
celkem 0
-rw-r--r-- 1 kořenový kořen 0 17. 12. 2012 15:49 test1
-rw -r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test2
-rw-r--r-- 1 kořenový kořen 0 2012-12-17 15:49 test4
[e-mail chráněn]:~#

server4.example.com:

ls -l /data

[email protected]:~# ls -l /data
celkem 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test3
[e-mail chráněno]:~#

  • GlusterFS:http://www.gluster.org/
  • Dokumentace GlusterFS 3.2:http://download.gluster.com/pub/gluster/glusterfs/3.2/Documentation/AG/html/index.html
  • Ubuntu:http://www.ubuntu.com/

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

  2. Distribuované úložiště mezi čtyřmi 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

  1. Automatická replikace souborů (zrcadlení) přes dva úložné servery s GlusterFS 3.2.x na Ubuntu 12.10

  2. Distribuované úložiště napříč čtyřmi uzly úložiště s GlusterFS na Debianu Lenny

  3. Distribuované replikované úložiště mezi čtyři uzly úložiště s GlusterFS na Debianu Lenny

  1. Pruhování přes čtyři úložné uzly s GlusterFS na Debianu Lenny

  2. Distribuované replikované úložiště napříč čtyřmi uzly úložiště s GlusterFS na CentOS 5.4

  3. Distribuované úložiště mezi čtyřmi uzly úložiště s GlusterFS na CentOS 5.4