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.



Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.

Link do formularza tutaj: https://beitadmin.pl/pomysly

Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).

2 komentarze do “Rozproszona replikacja plików Gluster – CentOS”

Dodaj komentarz

beitadmin.pl - Droga Administratora IT