Sunday, June 28, 2015

Konsep dan Implementasi GlusterFS CentOS 6.x

GlusterFS adalah sebuah distributed file system yang dapat digunakan oleh user yang sifatnya fleksibel. Saat ini penggunaan GlusterFS sangat populer karna banyak keuntungan yang diperoleh ketika melakukan implementasi ini dilapangan.

Lalu Apa Keuntungan Menggunakan GlusterFS?
  • Innovasi - Penggunaan GlusterFS mengeliminasi metadata, ini artinya performance GlusterFS akan sangat jauh meningkat dibanding menggunakan teknologi file sharing konvensional.
  • Flexibel - GlusterFS dapat beradaptasi dengan penambahan dan pengurangan ukuran data.
  • Simple - Mudah dimanage dan prosesnya independent.
  • Skala Linier - Availability mencapai petabytes dan seterusnya.

Apa yang Membuat GlusterFS Lebih Populer Ketimbang Distributed File System Lainnya?
  • Performance - Tidak adanya metadata server membuat proses file sytem lebih cepat.
  • Terjangkau - Dapat di implementasikan di semua komoditas hardware.
  • Fleksibel - GlusterFS adalah sebuah software filesystem dan dapat memproses native filesystem, selain itu dapat juga beradaptasi dengan perubahan size data.
  • Opensource - GlusterFS adalah software opensource.

Konsep dan Terminologi GlusterFS
  • Brick - Brick adalah sebuah direktori yang di shared di antara trusted storage pool.
  • Trusted Storage Pool - Kumpulan shared file/direktori yang didasarkan pada desain protocol.
  • Block Storage - Device yang dilewati data yang bergerak melintasi sistem dalam bentuk block.
  • Cluster - Dalam istilah manajemen storage, cluster dan trusted storage pool mempunyai makna yang sama dari kolaborasi storage server bedasarkan protocol yg didefinisikan.
  • Distributed File System - Sebuah file sistem dimana data tersebar di node yang berbeda dimana pengguna dapat mengakses file tanpa perlu mengetahui dimana lokasi file sebenarnya. 
  • FUSE - Sebuah module kernel yang memungkinkan user untuk dapat membuat file system diatas kernel tanpa melibatkan dan mengganggu proses berjalannya kernel code.
  • Glusterd - Adalah sebuah daemon untuk glusterfs management dan merupakan backbone dari gluster file system yang akan berjalan sepanjang waktu selama server dalam keadaan aktif.
  • POSIX - Portable Operating System Interfaces (POSIX) adalah sebuah standard yang didefinisikan oleh IEEE sebagai solusi dari kompatibilitas antara unix-varian dalam bentuk API.
  • RAID - Sebuah teknologi storage yang mampu meningkatkan storage reliability dengan cara redudancy.
  • Subvolume - Sebuah brick yang telah diproses setelah ditranslasikan.
  • Translator - Sekumpulan code yang menjalankan basic action yang ditrigger oleh user dari mount point. Translator dapat menghubungkan satu atau lebih subvolume.
  • Volume - Sebuah kumpulan logical dari brick. Semua proses operasi dalam volume adalah bedasarkan tipe yang didefinisikan oleh user.

Tipe Volume GlusterFS
Ada beberapa macam tipe volume dalam glusterfs, sebelum implementasi ada baiknya kita mengetahui tipe volume ini karna ada hubungannya dengan cara kerjanya nanti dilapangan. Dibawah ini kira-kira ilustrasi gambaran tipe-tipe volume GlusterFS yang umumnya sering digunakan.

Distributed Volume



Replicated Volume



Stripped Volume



Distributed Replicated Volume




Instalasi & Provisioning GlusterFS di CentOS 6.5

Dalam tutorial kali ini kita akan mencoba implementasi GlusterFS dengan tipe volume replicated. Topologinya kira2 adalah sebagai berikut.


Notes :
1) Di lab ini selinux dalam keadaan disabled. 
Untuk mematikan secara permanent edit file /etc/selinux/config lalu ubah parameter SELINUX menjadi disabled.
2) Di lab ini iptables dalam keadaan off.
Untuk mematikan service iptables jalankan command /etc/init.d/iptables off  lalu buat persistent agar service tidak nyala saat booting chkconfig iptables off.
3) Tambahkan parameter di bawah ini di dalam file /etc/hosts
192.168.227.154 server1
192.168.227.155 server2
192.168.227.156 glufscl

- Enable EPEL Repository di Semua Server (Server1, Server2 & GlufsClient)
CentOS, 32 bit:
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
CentOS, 64 bit:
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

- Enable GlusterFS Repository di Semua Server (Server1, Server2 & GlufsClient)
# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo

- Install Dependency di Semua Server (Server1, Server2 & GlufsClient)
# yum -y install pyxattr python-webob1.0 python-paste-deploy1.5 python-sphinx10 git autoconf automake bison dos2unix flex fuse-devel libaio-devel libibverbs-devel libtool libxml2-devel lvm2-devel make openssl-devel pkgconfig python-devel python-eventlet python-netifaces python-paste-deploy python-simplejson python-sphinx python-webob readline-devel rpm-build systemtap-sdt-devel tar

- Install Software GlusterFS di Semua Server, Nyalakan Service & Buat Persistent On Boot
# yum install glusterfs{-fuse,-server}
# yum install xfsdump xfsprogs
# /etc/init.d/glusterd start ; chkconfig glusterd on

- Tambahkan Fuse Module Hanya di Server GlusterFS Client (192.168.227.156)
# /sbin/modprobe fuse

Lalu, buat persistent on boot.
# echo "modprobe fuse" > /etc/sysconfig/modules/fuse.modules
# chmod +x /etc/sysconfig/modules/fuse.modules


Konfigurasi GlusterFS
1) Create Trusted Pool
Jalankan command dibawah ini di  'Server1'.
# gluster peer probe server2

Jalankan command dibawah ini di  'Server2'.
#gluster peer probe server1

2) Set Up GlusterFS Volume
Buat direktori yang akan berfungsi sebagai brick di kedua server (Server1 & Server2).
# mkdir /data/brick/gv0

Setelah itu, definisikan volume di salah satu server. Ingat hanya di salah satu server saja, kita akan coba di Server1.
# gluster volume create gv0 replica 2 server1:/data/brick/gv0 server2:/data/brick/gv0 force
# gluster volume start gv0

Jika sudah, lakukan pengecekan bahwa volume sudah selesai dibuat.
# gluster volume info

Jika output di kedua server (server1&server2) seperti dibawah ini harusnya sudah OK, maka kita hanya tinggal mounting saja dari Server GlusterFS Client.

Volume Name: gv0
Type: Replicate
Volume ID: cade1291-b1bc-4398-8862-afb4a27a4601
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: server1:/data/brick/gv0
Brick2: server2:/data/brick/gv0
Options Reconfigured:
performance.readdir-ahead: on

3) Mount GlusterFS Client
Langkah terakhir lakukan mounting dari server mount point, kalo di lab kali ini dari server 192.168.227.156 mount ke server1(192.168.227.154). 

Buat Direktori
[root@glufscl ~]# mkdir /glusterfs

Mounting Client Node ke Server Node
[root@glufscl ~]# mount -t glusterfs server1:/gv0 /glusterfs/

Check & Re-Check
[root@glufscl ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  2.6G   15G  16% /
tmpfs           242M   72K  242M   1% /dev/shm
/dev/sda1       291M   34M  242M  13% /boot
server1:/gv0     18G  2.6G   15G  16% /glusterfs

Buat Persistent On Boot
Kalo mau buat persistent on boot jangan lupa edit file /etc/fstab lalu tambahkan parameter ini.
server1:/gv0 /glusterfs glusterfs defaults,_netdev 0 0
Lalu apabila sudah selesai save file & close. Untuk testingnya, coba reboot server kamu lalu cek lagi dengan command df -h. Apabila terdapat output seperti dibawah ini maka berarti sudah persistent.

[root@glufscl ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  2.6G   15G  16% /
tmpfs           242M   72K  242M   1% /dev/shm
/dev/sda1       291M   34M  242M  13% /boot
server1:/gv0     18G  2.6G   15G  16% /glusterfs

Cek Create File, Pastikan Sudah Replicated di Seluruh Node
Dari node glusterfs client (192.168.227.156) coba create file di dalam direktori /glusterfs, lalu cek di server1 & server2 di dalam direktori /data/brick/gv0/ apakah terdapat file yang sama atau tidak.
  • Buat File di Server GlusterFS Client (192.168.227.156)
    [root@glufscl glusterfs]# echo "Arif & Desy" >> ArifDSFile.txt[root@glufscl glusterfs]# cat ArifDSFile.txt
    Arif & Desy
  • Cek di Node Server1 & Server2 (192.168.227.154 & 192.168.227.155)
    Server1
    [root@server1 ~]# ll /data/brick/gv0/
    total 8
    -rw-r--r-- 2 root root 12 Jun 28 23:29 ArifDSFile.txt

    [root@server1 ~]# cat /data/brick/gv0/ArifDSFile.txt
    Arif & Desy


    Server2
    [root@server2 ~]# ll /data/brick/gv0/
    total 8
    -rw-r--r-- 2 root root 12 Jun 28 23:29 ArifDSFile.txt

    [root@server2 ~]# cat /data/brick/gv0/ArifDSFile.txt
    Arif & Desy

Done! Semoga bermanfaat.

No comments:

Post a Comment