niedziela, 27 stycznia 2013

Rozproszona replikacja plików Gluster - CentOS

Użyjemy Gluster'a jak systemu do rozproszonego przechowywania plików. W tym celu uruchomimy 4 serwery, następnie podepniemy do tego systemu jednego klienta.


Potrzebujemy:


server1.example.com: IP address 192.168.0.100 (server)server2.example.com: IP address 192.168.0.101 (server)server3.example.com: IP address 192.168.0.102 (server)server4.example.com: IP address 192.168.0.103 (server)client1.example.com: IP address 192.168.0.104 (client)


Dodatkowo musimy skonfigurować wszystkie hosty w taki sposób, aby mogły rozwiązywać na wzajem swoje nazwy (muszą się "widzieć" w sieci).
Na każdym edytujemy:


nano /etc/hosts


do niego na każdym hoście dodajemy:


127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
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
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


1) Włączamy dodatkowe repozytoria:

Server(1-4), Client1

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
rpm --import https://fedoraproject.org/static/0608B895.txt
cd /tmp
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install yum-priorities


Edytujemy:

nano /etc/yum.repos.d/epel.repo


dodajemy w sekcji [epel] pod enabled=1:

priority=10







2) Konfiguracja GlusterFS:


Server(1-4)


yum install glusterfs-server

Utworzymy powiązanie dla uruchomienia GlusterFS'a:


chkconfig --levels 235 glusterd on
/etc/init.d/glusterd start
glusterfsd --version


powinniśmy zobaczyć wersję GlusterFS'a:


glusterfs 3.2.7 built on Jan 27 2013 13:22:28Repository revision: git://git.gluster.com/glusterfs.gitCopyright (c) 2006-2011 Gluster Inc.
GlusterFS comes with ABSOLUTELY NO WARRANTY.You may redistribute copies of GlusterFS under the terms of the GNU General Public License.

Jeżeli posiadamy firewall musimy otworzyć porty:111, 24007, 24008, 24009 na serwerach 1-4.

Na Server1 dodajemy pozostałe Servery do puli zaufanych.

Server1:

gluster peer probe server2.example.comgluster peer probe server3.example.com
gluster peer probe server4.example.com

Powinniśmy po każdym poleceniu otrzymać: Probe successful.

Możemy upewnić się czy wszystko jest tak jak powinnio:

gluster peer status

w odpowiedzi powinniśmy otrzymać:


Number of Peers: 3
Hostname: server2.example.com
Uuid: 600ff607-f7fd-43f6-af8d-419df703376d
State: Peer in Cluster (Connected)
Hostname: server3.example.com
Uuid: 1d6a5f3f-c2dd-4727-a050-0431772cc381
State: Peer in Cluster (Connected)
Hostname: server4.example.com
Uuid: 0bd9d445-0b5b-4a91-be6f-02b13c41d5d6
State: Peer in Cluster (Connected)

Stworzymy teraz jeden wirtualny serwer (można to nazwać klastrem):

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

powinniśmy otrzymać:

Creation of volume testvol has been successful. Please start the volume to access data.

Startujemy nasz klaster:

gluster volume start testvol

Może się okazać że z wystartowaniem Gluster'a będzie problem.

Server(1-4):

Na każdej maszynie prócz Client1 uruchomiamy:


netstat -tap | grep glusterfsd


Jeżeli otrzymamy odpowiedź w mniej więcej takim kształcie wszystko jest ok:


tcp        0      0 *:24009                     *:*                         LISTEN      1365/glusterfsd
tcp        0      0 localhost:1023              localhost:24007             ESTABLISHED 1365/glusterfsd
tcp        0      0 server1.example.com:24009   server1.example.com:1023    ESTABLISHED 1365/glusterfsd

Jeżeli natomiast nic nie otrzymamy musimy zrobić restart na każdej maszynie:

/etc/init.d/glusterfsd restart


Ponownie wykonujemy:


netstat -tap | grep glusterfsd

teraz powinno być wszystko ok, na każdej maszynie.


Server1:

gluster volume info


powinniśmy otrzymać poniższą odpowiedź:



Volume Name: testvol
Type: Stripe
Status: Started
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
Brick3: server3.example.com:/data
Brick4: server4.example.com:/data


Domyślnie wszyscy potencjalni klienci mają dostęp do naszej infrastruktury, ograniczmy ten dostęp do naszego klienta:

gluster volume set testvol auth.allow 192.168.0.104


Dostęp możemy rozszerzyć na kilka adresów lub całych podsieci.



Sprawdzamy czy dodany został client1:

gluster volume info



Volume Name: testvol
Type: Stripe
Status: Started
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
Brick3: server3.example.com:/data
Brick4: server4.example.com:/data
Options Reconfigured:auth.allow: 192.168.0.104








3) Konfiguracja Client1:

Client1:

yum install glusterfs-client
mkdir /mnt/glusterfs


Montujemy glusterfs:


mount.glusterfs server1.example.com:/testvol /mnt/glusterfs



Sprawdzamy czy udało się poprawnie zamontować nowy udział:


mount
/dev/mapper/vg_client1-LogVol00 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
server1.example.com:/testvol on /mnt/glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)



Sprawdzamy zamontowane partycje

df -h


Filesystem            Size  Used Avail Use% Mounted on/dev/mapper/vg_client1-LogVol00                      9.7G  1.7G  7.5G  19% /tmpfs                 499M     0  499M   0% /dev/shm/dev/sda1             504M   39M  440M   9% /bootserver1.example.com:/testvol                      116G  4.2G  106G  4% /mnt/glusterfs



Jeżeli chcemy zrobić auto-mont glusterfs'a po starcie klienta:


nano /etc/fstab



dodajemy do niego wiersz:


server1.example.com:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0









4)Test GlusterFS'a:

Client1

Tworzymy duży plik:

dd if=/dev/zero of=/mnt/glusterfs/test.img bs=1024k count=1000


Sprawdzamy jego rozmiar:


ls -l /mnt/glusterfs




total 1024032



Teraz sprawdźmy czy utworzony plik jest dostępny na Server(1-4):


ls -l /data



za każdym razem powinniśmy otrzymać:

total 256008-rw-r--r-- 1 root root 1046478848 2013-01-27 17:27 test.img


Jeżeli tak jest, wszystko działa, mamy rozproszony system do przechowywania w bezpieczny sposób plików.



Brak komentarzy:

Prześlij komentarz