Kamis, 31 Januari 2013

Cluster Shared Storage dengan NBD (ubuntu)

Oke sebelum di mulai saya akan jelaskan dulu apa itu cluster shared storage. Cluster sendiri adalah sebuah sistem jaringan yang terdiri dari beberapa komputer yang bekerjasama sehingga terlihat sebagai satu komputer tunggal yang powerfull oleh client. Nah kali ini yang akan di cluster adalah storage (disk space) yang nantinya akan di share. Jadi skema nya kita akan menggabungkan hardisk beberapa komputer menjadi satu dan di share ke client sebagai media penyimpanan di jaringan.


Sebenarnya ada banyak cara untuk membuat cluster shared storage, misalnya moosefs, glusterfs dll. Kali ini saya menggunakan NBD (Network Block Device) yang bisa melakukan share block device lewat jaringan, sehingga bisa di mount oleh client dan digabungkan menggunakan raid. Oke kali ini saya akan menggunakan ubuntu server sebagai os nya (12.04) di install di 3 komputer, 2 chunk server (yang akan di share storage nya) dan 1 master server untuk mount dan menggabungkan storage nya. Saya punya beberapa asumsi sebelum memulai nya :




  1. Installasi ubuntu server dianggap sudah bisa (tidak dijelaskan)

  2. Terkoneksi dengan repository ubuntu dan sudah dikonfigurasi

  3. Pengalamatan jaringan dan setting koneksi antar 3 server sudah bisa

  4. Cara shared menggunakan Samba/NFS/CIFS dianggap sudah bisa


Skema jaringan yang saya buat adalah: Chunk1:192.168.56.101 , Chunk2:192.168.56.102, Master:192.168.56.100 , silahkan sesuaikan dengan desain masing2. Oke skarang kita mulai, pertama-tama setting chunk1 dan chunk2. Keduanya berfungsi sebagai nbd-server yang akan melakukan shared device (hdd) nya. Setup dan konfigurasi keduanya sama, hanya sesuaikan saja IP dan partisi yang akan di share nya.


[spoiler intro="Chunk" title="Installasi Paket"]

[plain]
sudo apt-get update
sudo apt-get install nbd-server nmap
[/plain]

[/spoiler]

Tunggu sampai selesai, kemudian siapkan block device yang akan di share. Disini saya akan jelaskan dua kondisi, jika pada saat installasi ubuntu server sudah di siapkan sebuah partisi untuk di share, maka kita bisa share langsung partisi tersebut. Misalkan struktur partisi saat installasi /dev/sda1 = / , /dev/sda2 = /home , /dev/sda5 = (partisi yang akan di share) maka :

[spoiler  intro="Chunk" title="Share Block Partisi"]

[plain]
sudo mkfs.ext3 /dev/sda5
[/plain]

[/spoiler]

tetapi jika tidak ada persiapan partisi, kita bisa membuat sebuah empty file dengan ukuran yang bisa kita tentukan, caranya:

[spoiler intro="Chunk" title="Share Block File"]

[plain]
sudo mkdir /export
cd /export
sudo dd if=/dev/zero of=export count=10240 bs=10240
[/plain]

[/spoiler]

perintah diatas akan membuat sebuah file bernama export di folder /export dengan ukuran 100MB. tinggal sesuaikan byte 10240 nya dengan ukuran yang di inginkan. Oke skarang sudah punya file yang akan di share nya, /dev/sda5 atau /export/export. Selanjutnya buat konfigurasi nbd-server nya


[spoiler intro="Chunk" title="Konfigurasi NBD"]



[plain]
sudo nano /etc/nbd-server/config
[/plain]

[/spoiler]

Tambahkan baris berikut, isinya path block device  yang akan di share dan port nya


[spoiler intro="Chunk" title="Isi File Konfigurasi"]



[plain]
oldstyle = 1
[export]
exportname = /export/export
port = 9000
[/plain]

[/spoiler]

Sesuaikan port dengan keinginan dan path nya sesuaikan apakah /dev/sda5 atau /export/export. Untuk melakukan share nbd-server nya gunakan perintah berikut:


[spoiler intro="Chunk" title="Start NBD"]



[plain]
sudo killall nbd-server
sudo nbd-server -c /etc/nbd-server/config
[/plain]

[/spoiler]

Nah, sampai disini sisi Chunk server sudah selesai, untuk memastikan bahwa share kita sudah berhasil gunakan perintah nmap.


[spoiler intro="Chunk" title="Nmap"]



[plain]
nmap localhost
[/plain]

[/spoiler]

Lihat pada outpunya, apakah port 9000 sudah terbuka(ada), jika ada berarti block device kita sudah di shared. Kita beralih ke master server, dengan asumsi yang sama (ubuntu server sudah terinstall dan sudah terkonfigurasi repository):


[spoiler intro="Master" title="Instalasi Paket"]



[plain]
sudo apt-get update
sudo apt-get install nbd-client mdadm
sudo reboot
[/plain]

[/spoiler]

Master harus direboot supaya module mdadm dan nbd-client terload. setelah reboot login kembali dan kita lakukan mounting block device yang sudah di share oleh chunk.

[spoiler intro="Master" title="Mount NBD"]

[plain]
nbd-client 192.168.56.101 9000 /dev/nbd0
nbd-client 192.168.56.102 9000 /dev/nbd1
[/plain]

[/spoiler]

Lakukan penggabungan antara chunk1 dan chunk2 dan buat satu device baru dengan perintah berikut. Saya menggunakan level=0 artinya kedua block device diatas digabungkan dengan skema RAID0 (stripe).


[spoiler intro="Master" title="Stripe NBD"]



[plain]
mdadm --create --verbose /dev/md0 --level=0 --raid-device=2 /dev/nbd0 /dev/nbd1
[/plain]

[/spoiler]

Perintah diatas aritnya kita membuat sebuah device baru /dev/md0 yang merupakan gabungan dari /dev/nbd0 dan /dev/nbd1. Sekarang kita format dan lakukan mounting.


[spoiler intro="Master" title="Format and Mount"]



[plain]
mkfs.ext3 /dev/md0
mkdir /mnt/shared
mount /dev/md0 /mnt/shared
[/plain]

[/spoiler]

Selesai, dari dua server (chunk1 dan chunk2) storage nya di gabung di Master dan di mount pada satu folder. Folder /mnt/shared yang merupakan gabungan tersebut bisa di share menggunakan Samba/NFS/CIFS/AFS dan client bisa melakukan penyimpanan file pada Cluster Shared Storage tersebut. ;) Ini akan sangat bermanfaat jika kita memiliki komputer-bekas dan digabungkan semua hardisknya menjadi satu media penyimpanan yang besar. Selamat mencoba, semangat.. \m/

0 komentar:

Posting Komentar