Showing posts with label Storage. Show all posts
Showing posts with label Storage. Show all posts

Friday, September 15, 2017

Glusterfs - File System Terdistribusi

Halo Sobat Nostra,
Kali ini saya akan mengulas teori dan skenario implementasi glusterfs. GlusterFS adalah software yang berfungsi sebagai file system yang terdistribusi atau dapat juga dikatakan sebagai cloud storage. Mengapa kita membutuhkan software ini? Mudahnya kita ingin menjamin ketersediaan data file tetap utuh. Untuk lebih memahaminya, ambil segelas kopi dan mari perhatikan skenario dibawah ini.


Pada gambar tersebut dapat dilihat ada 2 mesin (server1 & server2) yang berperan sebagai glusterfs dengan membuat 1 volume yang di mount oleh mesin klien (server3) pada folder /data/picture Berikut saya akan memandu cara install & konfigurasi dengan skenario menggunakan 3 mesin sebagai berikut:

- server1: OS=Ubuntu16, IP=172.16.30.1
- server2: OS=Ubuntu16, IP=172.16.30.2
- server3: OS=Ubuntu16, IP=172.16.30.3

Langkah 1: Install glusterfs pada mesin1 & mesin2
sudo apt-get install python-software-properties –y
sudo add-apt-repository ppa:gluster/glusterfs-3.10
sudo apt-get update
sudo apt-get install gluster-server  
- package "python-software-properties" berupa depedencies yang dibutuhkan untuk menjalankan software glusterfs
- Perintah "add-apt-repository ppa:gluster/glusterfs-3.10" untuk mendaftarkan repository gluster versi 3.10 (latest stable version saat ini)
- :) Glusterfs telah terinstall pada mesin anda

Langkah 2: Set peer pada glusterfs
Login pada mesin1 lalu jalankan perintah dibawah
sudo gluster peer probe 172.16.30.2
Note: Disarankan IP dapat diganti dengan hostname

Cek status peer pada mesin dengan perintah
sudo gluster peer status
Hasil yang diharapkan adalah "State: Peer in Cluster (Connected)"

Langkah 3: Buat volume & Jalankan volume yang dibuat
sudo gluster volume create volume1 replica 2
transport tcp 172.16.30.1:/exp1 172.16.30.2:/exp2 force
Cek status volume dengan perintah "sudo gluster volume status"

Untuk menjalankan volume dengan perintah berikut
sudo gluster volume start volume1
Lalu cek kembali status volume dengan perintah "sudo gluster volume status"

Langkah 4: Mount volume yang dibuat tadi pada client (mesin3)
Buat folder mount poin
sudo mkdir -p /data/picture
Mount volume tersebut dengan perintah berikut
sudo mount -t glusterfs 172.16.30.1:/volume1 /data/picture

Cek volume sudah terdaftar dengan benar dengan perintah "df -h"

Sekian dari saya, semoga bermanfaat. :)

Minio Distributed Mode

Hello, pada kesempatan kali ini, saya ingin sharing tentang Minio. Minio adalah object storage opensource berbasis bahasa pemrograman GO yang dapat digunakan untuk menyimpan “unstructured data” seperti foto, video, document, log files dll. Minio menggunakan istilah “Bucket” yang akan menampung object yang akan disimpan. Tidak hanya dapat diakses dan di manage melalui “command line” Minio juga memiliki Web UI yang memudahkan user untuk memanage object dan bucket. Komponen utama dari minio adalah minio server dan minio client. Selain menggunakan "mc" utility, Minio juga support client menggunakan : Java, Javascript, GO, .Net dan Python dengan menggunakan SDK yang tersedia di official website.

Disini kita akan membahas Minio Distributed Mode “Pool Multiple drive (different machine) into single Object Storage Server” yang berarti terdapat beberapa minio server pada node berbeda yang akan menyediakan service dan akan meningkatkan data reliability dan avaibility. Minio menerapkan teknologi erasure code dan checksum untuk mengatasi data corruption, jadi jika kita kehilangan N/2 dari jumlah drive, data masih dapat di recover. Minio memiliki limit minimum 4 drives dan maksimum 16 drives.

Misal : Terdapat 3 server minio yang akan digunakan untuk distributed mode dan masing-masing memiliki 2 drive untuk penyimpanan.

3 x 2 = 6 drives, jika salah satu server mati, berarti hanya tersisa 4 drive dan masih > dari N/2.
Kita masih dapat menggunakan Minio untuk mode Read and Write, yang berarti data Minio safe dan dapat digunakan dengan full mode jika jumlah drive  = N/2 + 1

Jika 2 server mati, yang artinya kita hanya memiliki 2 drive yang tersisa, maka kita hanya dapat Read data dari Minio.

Oke, kita langsung saja ke How to Setup Distributed Minio, kali ini saya akan menggunakan CentOS 7 64 bit. Sebelum nya ikuti instruksi untuk setup single minio server https://docs.minio.io/docs/minio-quickstart-guide.
  1. Download package dan change permission to executable mode. (lakukan langkah berikut ini disetiap server)
  2. Untuk initial setup jalankan minio single server pada salah satu server untuk mendapatkan ACCESS KEY dan SECRET KEY yang akan di export ke server lainnya.
  3. Create drive yang akan dijadikan penyimpanan dan start minio single server
    maka akan tampil output :
  4. Nah, kita mendapatkan ACCESS KEY dan SECRET KEY yang akan diexport ke server node. Kill proses Minio tersebut denga command : kill -9 “Program PID”. 
  5. Export ACCESS KEY dan SECRET KEY key tersebut ke server node lain dengan command:
  6. Eksekusi command berikut di setiap server untuk menjalankan minio distributed mode
  7. Setelah menjalankan command tersebut disetiap server, maka minio server akan tersinkronisasi secara otomatis.
  8. Buka web browser di <IPSERVER>:9000, masukkan ACCESS KEY dan SECRET KEY yang telah didapatkan
  9. Minio sudah dapat digunakan sebagai object storage.