HAProxy adalah software opensource yang meliputi koneksi TCP maupun HTTP agar dapat membagi beban ke beberapa server sehingga efektif ketika kita menjalankan skema multi server. Umumnya HAProxy digunakan sebagai Load Balancer atau penyeimbang traffic masuk namun bisa juga digunakan sebagai failover. Metode yang sering saya gunakan pada HAProxy yaitu Roundrobin dan Leastconn.
Roundrobin
Roundrobin adalah suatu algoritma proses yang membagi beban secara berurutan dari server pertama ke server kedua dan seterusnya hingga selesai, kemudian akan kembali ke server pertama jika server terakhir sudah terakses. Metode ini bisa dibilang cukup bodoh, karena ketika salah satu server mati atau kepenuhan maka server tersebut tetap mendapatkan traffic sehingga server terbebani berlebihan.
Leastconn
Leastconn adalah suatu algorima proses yang membagi beban berdasarkan tingkat koneksi, jadi bila ada salah satu server yang overload maka metode ini akan menyingkirkan sementara server tersebut dan hanya membagi beban traffic pada server lain yang tidak terlalu sibuk.
Saya biasanya menggunakan metode leastconn karena bisa dibilang cukup jenius menangani pembagian bebannya.
Sticky Session
Nah jika kita mengkonfigurasi HAProxy secara default, umumnya tidak menyertakan session ke server server lain. Sehingga ketika kita login saat refresh sessionnya hilang dan kita mesti login kembali. Setelah searching google ketemu caranya, cukup tambahkan seperti ini pada /etc/haproxy/haproxy.cfg:
listen https_tcp_handler bind 0.0.0.0:443 # <- NO ssl setting mode tcp balance leastconn stick match src stick-table type ip size 200k expire 30m server web1 192.168.1.11:443 check ssl server web2 192.168.1.12:443 check ssl
Jika menggunakan mode TCP tidak diperlukan SSL Certificate tambahan karena TCP akan mengikuti SSL yang ada pada masing masing backend. Adapun jika menggunakan mode HTTP maka konfigurasinya seperti ini:
listen https_http_handler bind 0.0.0.0:443 ssl crt /etc/ssl/certs/certs.pem mode http balance leastconn # any stick rules you need server web1 192.168.1.11:443 check ssl server web2 192.168.1.12:443 check ssl
Cukup sesuaikan file ssl, kebetulan saya meletakannya pada /etc/ssl/certs/certs.pem. Jika sudah boleh direstart service haproxy kemudian cek dengan login kembali ke website terkait. Mestinya Sessionnya ikut dan kita tidak perlu login kembali.
Jika sudah OK, maka konfigurasi yang kita lakukan sudah berhasil. Cheers~~