Sunday, June 9, 2013

Load Balancing dengan Zen Load Balancer


Zen Load Balancer (ZenLB) merupakan sebuah load balancer yang bersifat open source. Ada cukup banyak pilihan open source load balancer lainnya seperti HAProxyBalanceNGCrossroads, Apache HTTP Server, dsb. Namun perbedaan utama yang saya perhatikan adalah ZenLB merupakan sebuah appliance berbasis Debian. Seperti yang bisa diharapkan dari sebuah software appliance, konfigurasi yang perlu dilakukan minimal untuk dapat segera up-and-running. Selain itu tampilan Web management-nya juga menarik dan sangat informatif. Dua alasan itulah yang membuat saya ingin mencoba ZenLB ketika saya membutuhkan komponen load balancer pada simulasi high availability yang sedang saya lakukan beberapa minggu ini. Saya akan melakukan instalasi ZenLB menggunakan Oracle VM VirtualBox, hypervisor type-2 favorit saya. :)

Download ZenLB CD ISO image dari sini, kemudian buatlah sebuah virtual machine bertipe Linux Debian 32-bit. Letakkan CD ISO ZenLB yang sudah selesai di-download sebagai boot CD dari virtual machine tersebut dan jangan lupa untuk mengkonfigurasi network adapter-nya. Berhubung saya sedang terhubung dengan jaringan Wi-Fi, maka saya pilih "Bridged Adapter". Oh iya, sedikit tips untuk meningkatkan kinerja virtual machine di Oracle VM VirtualBox adalah agar memilih "User host I/O cache" pada SATA storage controller dan memilih "Paravirtualized Network (virtio-net)" pada tipe adapter jaringan jika menjalankan virtual machine bertipe Linux. Langkah-langkah yang saya lakukan ketika instalasi ZenLB dapat dilihat detilnya di sini. Restart virtual machine untuk menyelesaikan instalasi.

Ketika ZenLB sudah up kembali, akses ZenLB Web management ke https://<ZenLB_IP>:444 dengan menggunakan username "admin" dan password "admin" yang merupakan konfigurasi default-nya. Segera ubah password default ke menu Settings -> Change Password. Pada menu tersebut juga terdapat pilihan untuk sinkronisasi password dengan password root Debian yang kita masukkan ketika melakukan instalasi. Jika telah berhasil mengubah password, lakukan login kembali dengan password yang baru.
Zen Load Balancer dashboard

Pada dashboard utama Zen Load Balancer kita dapat memonitor secara penggunaan memory ZenLB, load cycle prosesor, dan network traffic dari network interface yang terdaftar di ZenLB. Pada bagian atas dashboard terdapat informasi global farms. Pada ZenLB, sebuah global farm adalah sebuah profil  load balancer atau rules configuration. Sebagai contoh saya akan mengkonfigurasi load balancer virtual name oid.nostratech.com (IP: 11.22.33.251) di port 389 sebagai front-end dari cluster Oracle Internet Directory (OID) yang terdiri dari oid1.nostratech.com dan oid2.nostratech.com.

Pertama-tama kita perlu membuat Virtual IP (VIP) terlebih dahulu untuk VIP 11.22.33.251, yaitu dengan cara memilih menu Settings -> Interfaces. Kemudian pilih "Add virtual network interface" pada eth0. Masukkan IP 11.22.33.251 pada interface eth0:1, kemudian pilih simpan untuk membuat virtual network interface tersebut.
Membuat virtual network interface eth0:1
Pilih menu Manage -> Farms untuk membuat global farm yang bernama oid.nostratech.com dengan IP 11.22.33.251 di port 389. Simpan konfigurasi tersebut kemudian pilih Edit Farm untuk melakukan konfigurasi lebih jauh terhadap farm tersebut.
Membuat farm oid.nostratech.com dengan VIP baru
Pada halaman edit farm kita dapat mengubah algoritma load balancing yang berlaku untuk sebuah farm. Ada 4 jenis algoritma yang di-support ZenLB, yaitu:

  1. Round Robin: untuk setiap koneksi yang diterima oleh ZenLB akan diteruskan secara rata ke backend server yang terdaftar di dalam global farm.
  2. Hash: untuk setiap koneksi yang diterima oleh ZenLB akan diteruskan kepada backend server yang sama sesuai dengan hasil kalkukasi hash terhadap IP address dari client.
  3. Weight: setiap backend server yang terdaftar diberikan bobot kerja, sehingga koneksi yang diterima oleh ZenLB akan diteruskan ke backend server sesuai dengan bobot kerjanya.
  4. Priority: masing-masing backend server diberikan skala prioritas, setiap koneksi yang diterima oleh ZenLB akan diteruskan ke backend server dengan skala prioritas tertinggi. Jika backend server tersebut down, maka koneksi yang diterima akan diteruskan ke backend server dengan skala prioritas tertinggi selanjutnya.

Pada bagian bawah halaman edit farm, terdapat konfigurasi Farm Guardian. Farm Guardian merupakan mekanisme ZenLB untuk melakukan verifikasi terhadap service backend server. Apabila hasil pengujian gagal, maka backend server tersebut diasumsikan dalam status down, sehingga ZenLB dapat meneruskan koneksi ke backend server yang tersisa. Sebagai contoh, kita dapat mengkonfigurasi Farm Guardian untuk memeriksa HTTP service dari backend server dengan menggunakan perintah "check_http". ZenLB telah menyediakan 5 buah script untuk Farm Guardian, yaitu "check_http", "check_ldap", "check_smtp", "check_tcp", dan "check_uplink". Pada dasarnya sebuah backend service akan diasumsikan down oleh Farm Guardian jika return value dari script yang dijalankan adalah selain 0. Sehingga kita juga dapat menggunakan custom script untuk verifikasi Farm Guardian.
Daftar backend service dari farm oid.nostratech.com:389 

Di bawah konfigurasi Farm Guardian, terdapat tabel daftar backend server dari sebuah farm. Isilah tabel tersebut dengan 2 hostname pada contoh sebelumnya, yaitu oid1.nostratech.com dengan port 389 dan oid2.nostratech.com pada port yang sama.
Backend status untuk farm oid.nostratech.com:389
Konfigurasi telah selesai, kita dapat melihat status dari backend service dengan memilih "View oid.nostratech.com backends status" pada kolom "Actions" dari tabel Farms table. Pada tabel status tersebut di atas, terlihat kedua status dari backend service oid1.nostratech.com:389 dan oid2.nostratech.com:389 berada pada status hijau yang berarti sedang up. Pada kesempatan berikutnya saya akan menggunakan ZenLB ini untuk mensimulasikan konfigurasi high availability pada Oracle Identity Management 11gR1.


No comments:

Post a Comment