Setting Dasar HaProxy sebagai HTTP[s] Load Balancer

A. Apa itu load balancer?

Load balancer artinya adalah pembagian beban. Dalam dunia web, HTTP Load Balancer artinya membagi beban server-server HTTP agar beban tidak terpusat pada satu server saja. Ya, atas alasan teknis pembagian beban, sebuah server web sering dibuat lebih dari satu. Jika salah satu mengalami beban penuh, dapat dioper beban ke server lainnya. Load balancer akan diletakkan pada bagian depan server-server tersebut, menjadi perantara client dan server.

B. Apa itu HAProxy?
HAProxy adalah sebuah produk opensource yang dibuat secara khusus untuk dapat melakukan pembagian request ke arah server. HA sendiri singkatan dari High Availability, yang secara teknis artinya adalah kondisi tidak akan mati saat salah satu sumber server mengalami kondisi down atau overload.
Pada gambar di bawah digambarkan sebuah susunan topologi server lengkap dengan backend maupun proxy (frontend). Proxy sebenarnya dapat menggunakan seluruh HTTP server seperti Apache dan Nginx. Namun HAProxy memang telah didesain untuk secara khusus mengatur tentang load balancing saja.

haproxy1

Gambar 1. Ilustrasi posisi load balancer pada topologi HTTP Server

HAProxy menerima request dari client, dan diberikan pada server-server backend (upstream) di belakangnya. Beban akan diatur oleh proxy dengan beberapa pilihan algoritma.

  1. Round Robin : haproxy akan mengambil source dengan beban yang setara antara satu server dengan server lainnya
  2. Leastconn : haproxy akan mengambil jumlah koneksi network paling sedikit
  3. First : haproxy akan mengambil dari server upstream pertama lebih dulu, setelah terlacak beban penuh, haproxy akan mengambil pada server upstream selanjutnya
  4. Source : haproxy akan mengambil data dari server, secara tetap, tidak berpindah-pindah. Sehingga jika sebuah sessi koneksi terjadi di upstream pertama, tidak akan terputus hingga sessi koneksi tersebut diakhiri

Cara instalasi HAProxy pada Linux cukup mudah, tinggal memanggil online-packet-manager seperti yum, apt, zypper, yast dan lain sebagainya. Misal adalah :

Lokasi file konfigurasi HAProxy adalah di : /etc/haproxy/haproxy.cfg. Bukalah dengan text-editor seperti vim, nano, ee atau apapun. Akan ditemui isi file sebagai berikut :

 

 

 

C. Setting HAProxy untuk Load Balancer Single Domain

Sebuah situs portal berita yang memiliki traffic sangat tinggi akan membutuhkan load balancer dalam proses pengaturan beban. Di sini digambarkan alur kerja sebuah HAProxy untuk melayani traffic HTTP yang bekerja dengan satu domain.

haproxy-req-scheme

 

Gambar 2. Ilustrasi Request user hingga node backend, pada single domain

Request User akan diterima oleh HAProxy (frontend) dan kemudian akan dibagikan pada server-server node di belakangnya (backend). Maka susunan konfigurasi HAProxy akan menjadi seperti berikut:

 

Misal lengkapnya adalah

Pada code di atas, menggunakan tiga buah server upstream / backend yaitu 10.10.10.1, 10.10.10.2, 10.10.10.3

 

D. Setting HAProxy untuk Banyak Domain dalam Satu Server HAProxy

Penggunaan banyak domain dalam satu server, jika dalam nGinX atau Apache akan diatur dengan menggunakan konsep VirtualHost (dapat dilihat di sini https://blogit.bimosaurus.com/2015/06/13/flash-back-virtualhost-apache-dan-nginx/), maka pada HAProxy akan menggunakan konsep Access List (ACL). (ACL ini mengingatkan saya pada penggunaan SQUID)

Berikut di bawah adalah gambar skemanya:

haproxy-domain

Gambar 3 Skema HAProxy sebagai Load Balancer untuk multi domain

Pada Tag Frontend, traffic akan ditandai.

  • Jika request ke server tersebut dengan menggunakan nama panggil domain1, akan diberikan nama acl1.
  • Jika request ke server tersebut dengan menggunakan nama panggil domain2, akan diberikan nama acl2

Kemudian pada Tag Backend, akan memunculkan aturan backend sejumlah ACL yang dibuat. Masing-masing aturan backend akan berisi aturan-aturan lagi seperti metode algoritma load balancer dan menentukan node.

Selengkapnya kira-kira adalah seperti berikut :

Kira-kira seperti diatas tersebut. Perhatikan pada bagian :

Ini mengartikan bahwa jika si server HAProxy direquest dengan tambahan belakang /haproxy?stats maka akan memunculkan dialog user password sesuai dengan yang ditentukan. Jika sukses, maka akan muncul tampilan statistik seperti berikut :

Screenshot from 2018-05-16 19-44-21

Gambar 4. Tampilan Statistik Request HAProxy

 Selamat mencoba.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">