Glusterfs kasutamine Gentooga
probleem
1. On olemas veebiserver mis peaks olema töökorras 99% ajast. Et välistada erinevaid softi-raua vigu peaks hoidma üleval kahte ja nende sisu peab olema pidevalt sünkroonis.
2. Ühest veebiserverist jääb väheks klientide teenindamisel. Oleks vaja koormust jaotada. Samas veebiserveri sisu muutub pidevalt ja vaja on erinevate serverite infot hoida sünkroonis.
3. Kui üks server läheb maha siis peab teine töötama ilma mingite muutusteta edasi. Kui maasolnud server tuleb tagasi käiku peab ta suutma ise tuvastada ,et tema info on aegunud. Võtma kasutusele teise serveri failid ning oskama samas ise sünkroniseerida enda faile automaatselt.
Lahenduseks mis kõiki neid probleeme lahendab tundus peale pikemat netis kaevamist olevat glusterfs.
GlusterFS is a clustered file-system capable of scaling to several peta-bytes. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system. Storage bricks can be made of any commodity hardware such as x86-64 server with SATA-II RAID and Infiniband HBA).
Install
On olemas kaks veebiserverit.
- Esimese ip 192.168.1.10
- Teise ip 192.168.1.11
Installime mõlemale serverile glusterfs'i. Nii Redhatile kui debianile on olemas installifailid. Ülejäänud linuxitele on olemas tar fail. Kuna kasutame näites gentood siis kompileerime ja installime glusterfs'i sourcest.
saab seda aadressilt http://ftp.zresearch.com/pub/gluster/glusterfs/
tar -xf glusterfs-1.3.0.tar.gz ./configure --prefix=/usr --disable-ibverbs make make install
Seejärel tuleb paigaldada serveritele fuse-libs ja fuse kerneli mooodul
Gentoos toimib see käsuga
emerge fuse
Seadistamine
Kummagile serverile paigutame näites nii glusterf serveri kui kliendi välja näeb pilt selline.
Glusterfs'is tegeleb server vaid etteantud kausta jagamisega. Peamise töö teeb ära klient. Antud näites kumbki klient haagib külge mõlema serveri jaotised korraga ning kirjutab neile paralleelselt.
Mõlemale serverile loome kaks faili /etc kausta. glusterfs.vol mis sisaldab serveri konfiguratsiooni
ja glusterfs_client.vol glusterfs kliendi seadistustega
Mõlemad failid on kummagil serveril täpselt sama sisuga.
Serveritele tuleb luua ka kaust /home/export kus hoitakse reaalselt faile ja /mnt/gluster kuhu fuse abil ühendatakse glusterfs
/etc/glusterfs.vol
### Export volume "brick" with the contents of "/home/export" directory. volume brick type storage/posix # POSIX FS translator option directory /home/export # Export this directory end-volume ### Add network serving capability to above brick. volume server type protocol/server subvolumes brick brick-afr option transport-type tcp/server # For TCP/IP transport option auth.ip.brick.allow * # access to "brick" volume option auth.ip.brick-afr.allow * # access to "brick" volume end-volume
/etc/glusterfs_client.vol
### Add client feature and attach to remote subvolume of server1 volume brick1 type protocol/client option transport-type tcp/client # for TCP/IP transport option remote-host 192.168.1.10 # IP address of the remote brick option remote-subvolume brick # name of the remote volume end-volume ### Add client feature and attach to remote subvolume of brick2 volume brick2 type protocol/client option transport-type tcp/client # for TCP/IP transport option remote-host 192.168.1.11 # IP address of the remote brick option remote-subvolume brick # name of the remote volume end-volume ### Add AFR feature to brick1 volume afr type cluster/afr subvolumes brick1 brick2 end-volume
Kiirendamine
Et kirjutamine toimuks kiiremini võime kliendi faili lisada veel järgneva
Kirjutamine toimub tagaplaanil
volume writebehind type performance/write-behind option aggregate-size 1MB subvolumes afr end-volume
IO'ga tegelemine on threaditud
volume iothreads type performance/io-threads option thread-count 4 # deault is 1 option cache-size 32MB #64MB subvolumes writebehind end-volume
Kasutamine
Peale tarkvara installi, konfigureerimist anda käsud kummagis masinas
glusterfsd -f /etc/glusterfs.vol glusterfs -f /etc/glusterfs_client.vol -l /var/log/glusterfs.log -L ERROR /mnt/gluster
Kontrollime kas klient ühendas failisüsteemi korrektselt
#df .. glusterfs 10080488 1999892 7568528 21% /mnt/gluster
-L võtmega saab nii deemonile kui kliendile lisada logimise tüübi ja log faili. Näiteks kui glusterfs mingil põhjusel ei tööta on hea lisada -L DEBUG ,et saada rohkem infot
Peale seda peaks mõlemale serverile tekkima /mnt/gluster harusse glusterfs failisüsteem. Failide loomised, kustutamised, muutmised seal kaustas mõjuvad mõlemasse masinasse hetkeliselt.
Reaalselt kõik failid asuvad mõlemas masinas /home/export kaustas.
Selleks ,et teenuste startimine ja failisüsteemi mountimine toimuks automaatselt tuleb lisada ülal toodud read faili
/etc/conf.d/local.start
Kiirus
Kiirusetest 100mb võrgus
dd if=/dev/zero of=zero-file bs=1024 count=1048576 1048576+0 records in 1048576+0 records out 1073741824 bytes (1.1 GB) copied, 552.576 s, 1.9 MB/s
dd if=zero-file of=/dev/zero bs=1024 count=1048576 1048576+0 records in 1048576+0 records out 1073741824 bytes (1.1 GB) copied, 2.73642 s, 392 MB/s
kirjutamine writebehind'i kasutades
dd if=/dev/zero of=zero-file bs=1024 count=1048576 1048576+0 records in 1048576+0 records out 1073741824 bytes (1.1 GB) copied, 156.606 s, 6.9 MB/s
Võimalusi kiirendamiseks on veel. Neist pikemalt ametlikus wikis juttu.
Viited
Siin toodud näide on väga primitiivne olemuselt. Pikemalt glusterfs võimalustest ja kasutamisest lingil http://www.gluster.org/docs/index.php/GlusterFS