GNU/Linux >> Znalost Linux >  >> Fedora

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

Tento tutoriál ukazuje, jak nastavit úložiště s vysokou dostupností se dvěma úložnými servery (Fedora 12), které používají 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é servery. 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 tři systémy, dva servery a klienta:

  • server1.example.com:IP adresa 192.168.0.100 (server)
  • server2.example.com:IP adresa 192.168.0.101 (server)
  • client1.example.com:IP adresa 192.168.0.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 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           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:

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.102 =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.102
  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.102, 192.168.0.103).

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 : ano
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 replicate
  type cluster/replicate
  subvolumes remote1 remote2
end-volume

volume writebehind
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate
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

[[email chráněno] ~]# připojení
/dev/mapper/vg_server3-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á Využití % Připojeno na
/dev/mapper/vg_server3-lv_root
<          2 2 G            2 G            2              2              2 TMPFS 248M 0 248M 0%/DEV/SHM
/Dev/SDA1 194M 23M 161M/Boot
/etc/glusterfs/glusterfs.vol
29G 2,5G 25G 10%/MNT/ glusterfs
[[e-mail chráněn] ~]#

(server1.example.com a server2.example.com mají každý 29 GB prostoru pro souborový systém GlusterFS, ale protože jsou data zrcadlena, klient nevidí 58 GB (2 x 29 GB), ale pouze 29 GB.)

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:

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

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

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-22 16:50 test1
-rw-r--r-- 1 root root 0 2010-02-22 16:50 test2
[[email protected] ~]#

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:

shutdown -h now

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/export na server2.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-22 16:50 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-22 16:53 test3
-rw-r--r-- 1 kořenový kořen 0 2010-02-22 16:53 test4
[[e-mail chráněný] ~]#

Spusťte znovu server1.example.com a podívejte se do adresáře /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-22 16:50 test1
-rw-r--r-- 1 root root 0 2010-02-22 16:50 test2
[[email protected] ~]#

Jak vidíte, server1.example.com si nevšiml změn, ke kterým došlo, když byl 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 /mnt/glusterfs/
celkem 0
-rw-r--r-- 1 kořenový kořen 0 2010-02-22 16:50 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-22 16:53 test3
-rw-r--r-- 1 kořenový kořen 0 2010-02-22 16:53 test4
[[e-mail chráněný] ~]#

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

server1.example.com:

ls -l /data/export 

[[email protected] ~]# ls -l /data/export
celkem 0
-rw-r--r-- 1 root root 0 2010-02-22 16:50 test1
-rw-r--r-- 1 kořenový kořen 0 2010-02-22 16:53 test3
-rw-r--r-- 1 kořenový kořen 0 2010-02-22 16:53 test4
[[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. Ú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. Distribuované replikované úložiště mezi čtyři uzly úložiště s GlusterFS na Fedoře 12

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

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

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