GNU/Linux >> Znalost Linux >  >> Debian

Úložiště s vysokou dostupností s GlusterFS na Debianu Lenny – Automatická replikace souborů 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 (Debian Lenny), 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é Debian Lenny) bude mít přístup k úložišti, jako by to byl místní souborový systém. GlusterFS je clusterový 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 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   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:

GlusterFS není k dispozici jako balíček Debianu pro Debian Lenny, proto si jej musíme vytvořit sami. Nejprve nainstalujeme předpoklady:

aptitude install sshfs build-essential flex bison byacc libdb4.6 libdb4.6-dev

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.1.tar.gz
tar xvfz glusterfs-2.0.1.tar .gz
cd glusterfs-2.0.1
./configure --prefix=/usr> /dev/null

server1:/tmp/glusterfs-2.0.1# ./configure --prefix=/usr > /dev/null

Přehled konfigurace GlusterFS
===========================
Klient FUSE        : ne
Infiniband slovesa   : ne
epoll IO multiplex : ano
Berkeley-DB        :ano
libglusterfsclient : ano
mod_glusterfs      : ne ()
argp-standalone    : ne

server1:/tmp/glusterfs-2.0.1#

make &&make install
ldconfig

Příkaz

glusterfs --version

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

server1:/tmp/glusterfs-2.0.1# glusterfs --version
glusterfs 2.0.1 postavený 29. května 2009 17:23:10
Revize úložiště:5c1d9108c1529a1155963f874Copy06b874Copy06right -2009 Z RESEARCH Inc.
GlusterFS přichází s ABSOLUTNĚ ŽÁDNOU ZÁRUKOU.
Můžete redistribuovat kopie GlusterFS za podmínek GNU General Public License.
server1:/tmp/glusterfs-2.0.1#

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 spouštěcí odkazy systému pro iniciační skript glusterfsd...

update-rc.d glusterfsd defaults

... a spusťte glusterfsd:

/etc/init.d/glusterfsd start

3 Nastavení klienta GlusterFS

client1.example.com:

Na klientovi musíme nainstalovat fuse a GlusterFS. Místo instalace balíčku libfuse2 z repozitáře Debianu nainstalujeme opravenou verzi s lepší podporou GlusterFS.

Nejprve znovu nainstalujeme předpoklady:

aptitude install sshfs build-essential flex bison byacc libdb4.6 libdb4.6-dev

Poté sestavíme pojistku následovně (nejnovější verzi opravené pojistky najdete na ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/):

cd /tmp
wget ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz
tar -zxvf fuse-2.7.4glfs11.tar. gz
cd fuse-2.7.4glfs11
./configure
make &&make install

Poté sestavíme GlusterFS (stejně jako na serveru)...

cd /tmp
wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.1.tar.gz
tar xvfz glusterfs-2.0.1.tar .gz
cd glusterfs-2.0.1
./configure --prefix=/usr> /dev/null

make &&make install
ldconfig
glusterfs --version

... a vytvořte 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

client1:/tmp/glusterfs-2.0.1# mount
/dev/sda1 na / typ ext3 (rw,errors=remount-ro)
tmpfs na /lib/init/rw typ tmpfs (rw, nosuid,mode=0755)
proc na /proc typu proc (rw,noexec,nosuid,nodev)
sysfs na /sys typu sysfs (rw,noexec,nosuid,nodev)
udev na /dev typ tmpfs (rw,mode=0755)
tmpfs na /dev/shm typ tmpfs (rw,nosuid,nodev)
devpts na /dev/pts typ devpts (rw,noexec,nosuid,gid =5,mode=620)
fusectl na /sys/fs/fuse/connections type fusectl (rw)
/etc/glusterfs/glusterfs.vol na /mnt/glusterfs type fuse.glusterfs (rw, max_read=131072,allow_other,default_permissions)
client1:/tmp/glusterfs-2.0.1#

... a...

df -h

Client1:/tmp/glusterfs-. /lib/init/rw
udev 10m 80k 10m 1%/dev
tmpfs 126m 0 126m 0%/dev/shm
/etc/glusterfs/glusterfs.vol
19G 804M 17G   5 % /mnt/glusterfs
klient1:/tmp/glusterfs-2.0.1#

(server1.example.com a server2.example.com mají každý 19 GB prostoru pro souborový systém GlusterFS, ale protože jsou data zrcadlena, klient nevidí 38 GB (2 x 19 GB), ale pouze 19 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 

server1:~# ls -l /data/export
celkem 0
-rw-r--r-- 1 kořen 0 2009-06-02 15:31 test1
-rw- r--r-- 1 kořen 0 2009-06-02 15:32 test2
server1:~#

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

server2:/tmp/glusterfs-2.0.1# ls -l /data/export
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2009-06-02 15:31 test1
-rw-r--r-- 1 kořenový kořen 0 2009-06-02 15:32 test3
-rw-r--r-- 1 kořenový kořen 0 2009-06-02 15:33 test4
server2:/tmp/glusterfs-2.0.1#

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

server1.example.com:

ls -l /data/export

server1:~# ls -l /data/export
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2009-06-02 15:31 test1
-rw- r--r-- 1 root root 0 2009-06-02 15:32 test2
server1:~#

Jak vidíte, server1.example.com si nevšiml změn, ke kterým došlo, když byl mimo provoz. To lze snadno 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/

client1:~# ls -l /mnt/glusterfs/
celkem 0
-rw-r--r-- 1 kořenový kořen 0 2009-06-02 15:31 test1
-rw -r--r-- 1 kořenový kořen 0 2009-06-02 15:32 test3
-rw-r--r-- 1 kořenový kořen 0 2009-06-02 15:33 test4
klient1:~#

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 

server1:~# ls -l /data/export
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2009-06-02 15:31 test1
-rw- r--r-- 1 kořenový kořen 0 2009-06-02 15:52 test3
-rw-r--r-- 1 kořenový kořen 0 2009-06-02 15:52 test4
server1 :~#

  • GlusterFS:http://www.gluster.org/
  • Debian:http://www.debian.org/

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

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

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

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

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

  3. Vytvoření samostatného úložného serveru podobného NFS s GlusterFS na Debianu Lenny

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

  2. Úložiště s vysokou dostupností s GlusterFS na CentOS 5.4 – Automatická replikace souborů (zrcadlení) mezi dvěma úložnými servery

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