Tento kurz ukazuje, jak nastavit úložiště s vysokou dostupností se dvěma servery úložiště (CentOS 5.4), 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é CentOS 5.4) 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:
GlusterFS není k dispozici jako balíček pro CentOS 5.4, proto si jej musíme vytvořit sami. Nejprve nainstalujeme předpoklady:
yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'
yum install libibverbs-devel fuse-devel
Poté si stáhneme nejnovější verzi GlusterFS z http://www.gluster.org/download.php a sestavíme ji 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 vytvořeno 1. března 2010 15:34:50
Revize úložiště:v2.0.9
Autorská práva ( c) 2006-2009 Gluster Inc.
GlusterFS je poskytován NAPROSTO ŽÁDNÁ ZÁRUKA.
Můžete redistribuovat kopie GlusterFS za podmínek GNU General Public License.
[[email protected] glusterfs-2.0.9]#
Dále vytvoříme několik adresářů:
mkdir /data/
mkdir /data/export
mkdir /data/export-ns
mkdir /etc/glusterfs
Nyní vytvoříme konfigurační soubor serveru GlusterFS /etc/glusterfs/glusterfsd.vol, který definuje, který adresář bude exportován (/data/export) a jaký klient se smí připojit (192.168.0.102 =client1.example.com):
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 následující symbolický odkaz...
ln -s /usr/local/sbin/glusterfsd /sbin/glusterfsd
... a poté odkazy pro spuštění systému pro server GlusterFS a spusťte jej:
chkconfig --levels 35 glusterfsd na
/etc/init.d/glusterfsd start
3 Nastavení klienta GlusterFS
client1.example.com:
GlusterFS není k dispozici jako balíček pro CentOS 5.4, proto si jej musíme vytvořit sami. Nejprve nainstalujeme předpoklady:
yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'
yum install libibverbs-devel fuse-devel
Poté načteme modul fuse kernel...
modprobe fuse
... a vytvořte soubor /etc/rc.modules s následujícím obsahem, aby se modul fuse kernel automaticky načetl při každém spuštění systému:
vi /etc/rc.modules
modprobe fuse |
Nastavte soubor jako spustitelný:
chmod +x /etc/rc.modules
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 : yes
epoll IO multiplex : yes
Berkeley-DB : ano
libglusterfsclient : ano
argp-standalone : ne
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 vytvořeno 1. března 2010 15:58:06
Revize úložiště:v2.0.9
Autorská práva ( c) 2006-2009 Gluster Inc.
GlusterFS je poskytován NAPROSTO ŽÁDNÁ ZÁRUKA.
Můžete redistribuovat kopie GlusterFS za podmínek GNU General Public License.
[[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
[[e-mail chráněno] ~]# připojení
/dev/mapper/VolGroup00-LogVol00 na / typ ext3 (rw)
proc na /proc typ proc (rw)
sysfs na /sys typ sysfs (rw)
devpts na /dev/pts typu devpts (rw,gid=5,mode=620)
/dev/sda1 na /boot typu ext3 (rw)
tmpfs na / dev/shm typ tmpfs (rw)
žádný na /proc/sys/fs/binfmt_misc typ binfmt_misc (rw)
sunrpc na /var/lib/nfs/rpc_pipefs typ rpc_pipefs (rw)
glusterfs#/etc/glusterfs/glusterfs.vol na pojistce typu /mnt/glusterfs (rw,allow_other,default_permissions,max_read=131072)
[[email protected] ~]#
... a...
df -h
[[email protected] ~]# df -h
Systém souborů Velikost Použitá Využití % Připevněno na
/dev/mapper/VolGroup00-LogVol00
G9 9 G 9 9 2 % /dev/sda1 99m 13m 82m 14%/boot
tmpfs 187m 0 187m 0%/dev/shm
glusterfs#/etc/glusterfs/glusterfs.vol
28g 2,3g 25g 9%/ mnt/glusterfs
[[email protected] ~]#
(server1.example.com a server2.example.com mají každý 28 GB prostoru pro souborový systém GlusterFS, ale protože jsou data zrcadlena, klient nevidí 56 GB (2 x 28 GB), ale pouze 28 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ý] ~]#
5 odkazů
- GlusterFS:http://www.gluster.org/
- CentOS:http://www.centos.org/
-
Úložiště s vysokou dostupností s GlusterFS na Debianu 8 – zrcadlení mezi dvěma úložnými servery
-
Automatická replikace souborů (zrcadlení) přes dva úložné servery s GlusterFS 3.2.x na Ubuntu 12.10
-
Úložiště s vysokou dostupností s GlusterFS na Debianu Lenny – Automatická replikace souborů přes dva úložné servery