GNU/Linux >> Znalost Linux >  >> Fedora

Distribuované replikované úložiště mezi čtyři uzly úložiště s GlusterFS na Fedoře 12

Tento tutoriál ukazuje, jak zkombinovat čtyři samostatné úložné servery (se systémem Fedora 12) 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é Fedora 12) 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)

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 obsahoval následující řádky:

vi /etc/hosts
[...]
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
[...]

(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:

Server GlusterFS je dostupný jako balíček pro Fedoru 12, takže jej můžeme nainstalovat následovně:

yum install glusterfs-server

Příkaz

glusterfs --version

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

[[email protected] ~]# glusterfs --version
glusterfs 2.0.9 postaveno 3. ledna   2010 00:12:49
Revize úložiště: v2.0.9
Autorská práva (c) 2006- 2009 Gluster Inc. 
GlusterFS s ABSOLUTNĚ ŽÁDNÁ ZÁRUKA.
Můžete redistribuovat kopie GlusterFS za podmínek GNU General Public Lense.
[[e-mail chráněn] ~]#

Dále vytvoříme několik adresářů:

mkdir /data/
mkdir /data/export
mkdir /data/export-ns

Nyní vytvoříme konfigurační soubor serveru GlusterFS /etc/glusterfs/glusterfsd.vol (nejprve vytvoříme zálohu původního souboru /etc/glusterfs/glusterfsd.vol), který definuje, který adresář se bude exportovat (/data/export) a jaký klient se může připojit (192.168.0.101 =klient1.example.com):

cp /etc/glusterfs/glusterfsd.vol /etc/glusterfs/glusterfsd.vol_orig
cat /dev/null> /etc/glusterfs/glusterfsd.vol
vi /etc/glusterfs/glusterfsd.vol

volume posix
  type storage/posix
  option directory /data/export
end-volume

volume locks
  type features/locks
  subvolumes posix
end-volume

volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume

volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow 192.168.0.104
  subvolumes brick
end-volume

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).

Poté vytvoříme odkazy pro spuštění systému pro server GlusterFS a spustíme jej:

chkconfig --levels 35 glusterfsd na
/etc/init.d/glusterfsd start

3 Nastavení klienta GlusterFS

client1.example.com:

Existuje rpm balíček klienta GlusterFS pro Fedoru 12, ale problém s ním je, že se zobrazí chyby jako df:`/mnt/glusterfs':Software způsobil přerušení připojení nebo df:`/mnt/glusterfs':Transportní koncový bod není připojen při pokusu o přístup ke sdílené složce GlusterFS. To je důvod, proč stavíme klienta GlusterFS ze zdrojů, abychom se vyhnuli těmto problémům.

Než sestavíme klienta GlusterFS, nainstalujeme jeho předpoklady:

yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'
yum install libibverbs-devel fuse-devel

Poté si stáhneme zdrojové kódy GlusterFS 2.0.9 (upozorňujeme, že se jedná o stejnou verzi, která je nainstalována na serveru!) a sestavíme GlusterFS následovně:

cd /tmp
wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.9.tar.gz
tar xvfz glusterfs-2.0.9.tar .gz
cd glusterfs-2.0.9
./configure

Na konci příkazu ./configure byste měli vidět něco takového:

[...]
Přehled konfigurace GlusterFS
============================
Klient FUSE         :yes
Infiniband slovesa   : ano
epoll IO multiplex : yes
Berkeley-DB        : ano
libglusterfsclient : ano
argp-samostatný      : ne
[[email protected] glusterfs-2.0.9]#

make &&make install
ldconfig

Poté zkontrolujte verzi GlusterFS (měla by být 2.0.9):

glusterfs --version

[[email protected] glusterfs-2.0.9]# glusterfs --version
glusterfs 2.0.9 postaveno 19. února 2010 19:20:46
Revize úložiště: v2.0.9
Autorská práva ( c) 2006–2009 Gluster Inc. 
GlusterFS s ABSOLUTNĚ ŽÁDNÁ ZÁRUKA.
Můžete redistribuovat kopie GlusterFS za podmínek Pubense.lic GNU Lic General
[[email protected] glusterfs-2.0.9]#

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

mkdir /mnt/glusterfs
mkdir /etc/glusterfs

Dále vytvoříme soubor /etc/glusterfs/glusterfs.vol:

vi /etc/glusterfs/glusterfs.vol
volume remote1
  type protocol/client
  option transport-type tcp
  option remote-host server1.example.com
  option remote-subvolume brick
end-volume

volume remote2
  type protocol/client
  option transport-type tcp
  option remote-host server2.example.com
  option remote-subvolume brick
end-volume

volume remote3
  type protocol/client
  option transport-type tcp
  option remote-host server3.example.com
  option remote-subvolume brick
end-volume

volume remote4
  type protocol/client
  option transport-type tcp
  option remote-host server4.example.com
  option remote-subvolume brick
end-volume

volume replicate1
  type cluster/replicate
  subvolumes remote1 remote2
end-volume

volume replicate2
  type cluster/replicate
  subvolumes remote3 remote4
end-volume

volume distribute
  type cluster/distribute
  subvolumes replicate1 replicate2
end-volume

volume writebehind
  type performance/write-behind
  option window-size 1MB
  subvolumes distribute
end-volume

volume cache
  type performance/io-cache
  option cache-size 512MB
  subvolumes writebehind
end-volume

Ujistěte se, že používáte správné názvy serverů nebo IP adresy ve volbě vzdálené hostitelské řádky!

A je to! Nyní můžeme připojit souborový systém GlusterFS do /mnt/glusterfs jedním z následujících dvou příkazů:

glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs

nebo

mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs

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

mount

[[e-mail chráněno] ~]# připojení
/dev/mapper/vg_server5-lv_root na / typ ext4 (rw)
proc na /proc typ proc (rw)
sysfs na /sys typ sysfs (rw)
devpts na /dev/pts typ devpts (rw,gid=5,mode=620)
tmpfs na /dev/shm typ tmpfs (rw)
/dev/sda1 na /boot typ ext4 (rw)
žádný na /proc/sys/fs/binfmt_misc typ binfmt_misc (rw)
sunrpc na /var/lib/nfs/rpc_pipefs typ rpc_pipefs (rw)
/etc/glusterfs/glusterfs.vol na /mnt/glusterfs typu fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[[email protected] ~]#

... a...

df -h

[[email protected] ~]# df -h
Souborový systém             Velikost  Použitá Dostupnost Využití % Připojeno na
/dev/mapper/vg_server5-lv_root
<          2 2 G            2 G            2              2              2 TMPFS 185M 0 185M 0%/DEV/SHM
/Dev/SDA1 194M 23M 161M 13%/Boot
/etc/glusterfs/glusterfs.vol
57G 9,8G 47G 17%/MNT/ glusterfs
[[e-mail chráněn] ~]#

(Velikost distribuovaného úložiště se vypočítá jako replikace1 + replikace2, kde oba objemy replikace jsou velké jako nejmenší kostka.)

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  
[...]
/etc/glusterfs/glusterfs.vol  /mnt/glusterfs  glusterfs  defaults  0  0

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/export 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/export 

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test2
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test4
-rw-r--r-- 1 kořenový kořen 0 23.02.2010 15:41 test5
[[email protected] ~]#

server2.example.com:

ls -l /data/export 

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test2
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test4
-rw-r--r-- 1 kořenový kořen 0 23.02.2010 15:41 test5
[[email protected] ~]#

server3.example.com:

ls -l /data/export 

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test3
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test6
[[email protected] ~]#

server4.example.com:

ls -l /data/export 

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test3
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test6
[[email protected] ~]#

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/export na server2.example.com a server3.example.com:

server2.example.com:

ls -l /data/export

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test2
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test4
[[e-mail chráněný] ~]#

server3.example.com:

ls -l /data/export

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test3
[[e-mail chráněný] ~]#

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

server1.example.com:

ls -l /data/export

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test2
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test4
-rw-r--r-- 1 kořenový kořen 0 23.02.2010 15:41 test5
[[email protected] ~]#

server4.example.com:

ls -l /data/export

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test3
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test6
[[email protected] ~]#

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/

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test2
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test3
-rw-r--r-- 1 kořenový kořen 0 23.02.2010 15:41 test4
[[email protected] ~]#

Nyní se znovu podívejte na adresář /data/export 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/export 

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test2
-rw-r--r-- 1 kořenový kořen 0 2010-02-23 15:41 test4
[[e-mail chráněný] ~]#

server4.example.com:

ls -l /data/export 

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-23 15:41 test3
[[e-mail chráněný] ~]#

  • GlusterFS:http://www.gluster.org/
  • Fedora:http://fedoraproject.org/

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

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

  3. Pruhování přes čtyři uzly úložiště s GlusterFS na Fedoře 12

  1. Vytvoření samostatného úložného serveru podobného NFS pomocí GlusterFS na Fedoře 12

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

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

  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. Vytvoření samostatného úložného serveru podobného NFS pomocí GlusterFS na Fedoře 13