Belajar HAProxy dan Konsep Load Balancing Untuk Pemula

Monday, May 1st, 2017 - Tutorial
Advertisement
haproxy loadbalancer

haproxy loadbalancer

Seiring dengan banyaknya pertanyaan ke penulis mengenai konsep Load Balancing terutama untuk pemula, maka kali ini penulis akan mencoba menjelaskan dan tentunya sambil belajar mengenai HAProxy dan konsep dasar load balancing. HAProxy (bukan HA Proxy) merupakan singkatan dari High Availability Proxy, adalah perangkat lunak open source yang berguna untuk TCP Load Balancer. Karena TCP berarti HAProxy dapat dipergunakan tidak hanya untuk HTTP namun juga protokol lainnya. Selain untuk load balancer HAProxy juga bermanfaat sebagai proxy. Load Balancing sendiri berarti kegiatan atau aktivitas untuk menyeimbangkan beban sehingga tidak bertumpu pada 1 server saja. Mudah dibayangkan bahwa kita mempunyai lebih dari 1 server (katakan webserver), 1 server hanya mampu menahan beban sekitar 100 koneksi sedangkan kita harus menanggung beban sebesar 200 koneksi, dalam hal ini kita membutuhkan lebih dari 1 server. Nah, untuk membagi beban itu, kita membutuhkan peran dari load balancer.

Sebelum kita mempelajari HAProxy, ada baiknya kita mengerti apa saja terminologi dalam HAProxy.

ACL / Access Control List

Sehubungan dengan load balancing, ACL(s) digunakan untuk menguji beberapa kondisi dan melakukan aksi terhadap kondisi tersebut. Misalkan memilih server atau memblokir request yang masuk. Penggunaan ACL(s) memungkinkan kita untuk membuat forwarding trafik network lebih fleksibel. Contoh :

ACL di atas akan sesuai dengan sebuah request dari pengguna dengan awalan /xtra_path. Untuk lebih lengkapnya dicek di sini : http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#7.1

Backend

Backend merupakan beberapa server yang disiapkan untuk menerima trafik / request yang akan di-forward oleh HAProxy. HAProxy akan menentukan server mana yang akan diberi trafik. Sebuah backend dapat mempunyai lebih dari satu server sehingga beban trafik yang masuk dapat dibagi ke beberapa server yang berada di backend tersebut. Dan hal ini juga meningkatkan reliabilitas sistem karena mempunyai banyak backend server dapat mengatasi masalah jika salah satu server mati atau tidak dapat melayani request.

Contoh dari Backend.

balance roundrobin- melakukan penyeimbangan beban dengan algoritma roundrobin (akan dibahas pada sub berikutnya).

mode http  – menentukan layer 7 proxy akan digunakan.

Opsi check  pada akhir baris server  akan melakukan health check pada server tersebut.

Frontend

Frontend mendefinisikan bagaimana request akan diteruskan ke Backend. Definisi frontend akan terdiri dari:

  • sebuah set dari alamat IP dan port (misal 192.168.0.1:80, *:443 dan sebagainya)
  • ACL
  • use_backend , di mana kita akan memilih backend mana yang akan digunakan (tergantung pada ACL)

Konfigurasi frontend akan dibahas di sub berikutnya.

Macam – macam Tipe Load Balancing

Berikut ini adalah macam – macam tipe load balancing yang dapat dilakukan di HAProxy

No Load Balancing

Sebuah skema aplikasi web tanpa load balancing seperti ini :

Pada contoh di atas, user akan langsung terhubung dengan web server dan tanpa  load balancing sama sekali. Jika server ini mati (down). Maka user tidak akan dapat mengakses informasi atau apapun yang berada di server tersebut. Sebagai tambahannya, saat banyak sekali user yang mengakses web server secara bersamaan, maka beban tersebut akan membuat web server kelebihan beban sehingga tidak mampu melayani beban tersebut. User dapat mengalami kendala yang dapat berupa respon yang lambat atau bahkan semua tidak dapat terkoneksi.

Layer 4 Load Balancing

Sebuah metode load balancing yang sangat sederhana, yaitu melakukan pembagian beban trafik ke beberapa server pada backend dengan menggunakan Layer 4 atau Layer Transport. Load Balancing ini akan meneruskan trafik dari user berdasarkan range IP dan port. Contoh : Jika seseorang melakukan request pada http://example.com/path1 , maka trafik tersebut akan diteruskan ke Backend yang bertugas menangani trafik pada example.com port 80.

 

User yang mengakses load balancer (example.com) , yang akan diteruskan ke sebuah grup Backend. Biasanya server yang berada pada grup Backend ini (terutama web) akan mempunyai kesamaan / identik secara konfigurasi, jika tidak, maka user akan mendapatkan konten yang tidan konsisten.

Layer 7 Load Balancing

Metode ini sedikit lebih rumit dari pada layer 4. Layer 7 mengijinkan kita untuk mengarahkan request tertentu ke server yang kita inginkan. Misalkan untuk path /blog akan diarahkan ke backend yang meng-handle blog. Sedangkan untuk yang lain dilayani oleh backend web-backend. Pada mode ini pula mengijinkan kita untuk mempunyai lebih dari satu aplikasi web dengan alamat dan port yang sama.

Pada contoh di atas, sebuah request dari user ke domain example.com/blog akan diarahkan ke blog-backend yang pada konfigurasi backend terdapat daftar server yang menjalankan aplikasi blog. Sedangkan request yang lain akan diteruskan ke web-backend yang mungkin memiliki aplikasi web lain. Dan kedua backend tersebut terkoneksi pada database yang sama. Contoh Frontend konfigurasi pada HAProxy sebagai berikut :

Pada konfigurasi di atas, sebuah Frontend dinamai http. Yang bertugas melayani trafik yang datang ke port 80.

Baris ini  acl url_blog path_beg /blog  akan cocok jika path yang diminta user diawali dengan /blog

use_backend blog-backend if url_blog  akan menggunakan ACL (baris di atasnya) untuk melakukan proxy ke blog-backend

default_backend web-backend  menentukan bahwa trafik (ke port 80) lainnya akan diarahkan ke web-backend.

Algoritma Load Balancing

Algoritma Load Balancing yang dipergunakan oleh HAProxy dapat menentukan server mana di Backend yang akan dipilih untuk melayani request dari user. HAProxy menyediakan beberapa pilihan algoritma tersebut. Sebagai tambahan dari algoritma itu, server dapat dipilih dengan parameter weight atau sistem pembobotan untuk memanipulasi seberapa sering server tersebut mendapatkan request dan tentunya merespon ke pengguna. Penulis tidak membahas semua itu, di sini, penulis hanya membahas beberapa pilihan yang cenderung sering dipergunakan.

Roundrobin

Round robin merupakan pilihan default dan algoritma ini memilih server secara bergantian berurutan sehingga cenderung balance ke semua server yang ada di Backend.

Leastconn

Memilih server berdasarkan jumlah koneksi yang paling sedikit. Ini direkomendasikan untuk session yang lama. Namun server di Backend yang sama juga akan dirotasi pemilihannya seperti round robin.

Source

Memilih server mana berdasarkan source IP (Alamat IP Pengguna) yang di hash. Hal ini untuk memastikan pengguna tersebut mendapatkan server yang sama.

Sticky Session

Beberapa aplikasi membutuhkan penggunanya untuk terkoneksi / terhubung pada Backend server yang sama. Untuk keperluan persisten ini dibutuhkan yang namanya Sticky Session dengan parameter appsession  pada Backend yang membutuhkannya.

Health Check

HAProxy menggunakan sistem Health Check untuk menentukan atau mendeteksi apakah sebuah backend server siap atau available untuk memproses sebuah request dari pengguna. Hal ini untuk menghindari menghapus server dari Backend secara manual, apabila server tersebut tidak terserdia (down atau unavailable). Secara default Health Check dilakukan dnegan cara membuat koneksi TCP ke server dari Load Balancer. Misalkan sebuah Backend akan listen di port 80, maka server yang ada di daftar Backend tersebut akan dicek ketersediaan port 80 -nya oleh HAProxy.

Bila cek ini gagal, maka server tersebut tidak akan dapat melayani request, dan otomatis akan di-disable dari Backend. Apabila semua server di Backend gagal pada cek (Health Check), maka service akan tidak tersedia atau unavailable hingga salah satu saja dari mereka sukses pada tahap cek tersebut.

Solusi lain untuk Load Balancer :

  • Nginx – tentu saja, perangkat lunak Open Source ini dapat juga berfungsi sebagai proxy dan load balancer. Nginx juga sering digunakan bersama dengan HAProxy karena kemampuan caching dan kompresi nya.
  • Linux Virtual Servers – sebuah layer 4 load balancer yang sangat sederhana yang terdapat pada beberapa distro linux.

Langkah Selanjutnya

Pada tulisan berikutnya akan dibahas secara mendetail tentang cara menginstall HAProxy pada distro linux, yang kemungkinan akan dipilih adalah Ubuntu, lalu bagaimana pula penerapannya pada Web Load Balancing atau bahkan MySQL.

Sampai Jumpa di tulisan berikutnya! 🙂

Incoming search terms:

  • tutorial ubuntu pemula
  • belajar linux untuk pemula
  • tabel haproxy dan penjelasannya
  • syarat membuat load balancer
  • membuat load balence dan web server lighttpd
  • cars pasang haproxy
  • cara menggunakan Load Balancer dengan HA PROXY
  • cara haproxy
  • belajar load balancing
  • ubuntu 16 bagi pemula
Advertisement
Belajar HAProxy dan Konsep Load Balancing Untuk Pemula | Jsmith | 4.5
Like Page Tutorlinux di Facebook
Leave a Reply