Pernahkah kalian berpikir bagaimana mungkin website – website marketplace yang besar seperti Tokopedia, Shopee dan Lazada dapat melayani ratusan permintaan klien setiap harinya. Apalagi pada saat event – event tertentu seperti event 12.12. Nah, jawabannya adalah penggunaan load balance. Pada kesempatan ini saya akan menjelaskan tentang load balance dan juga konfigurasi yang akan dilakukan.
Load Balance
Load balance merupakan proses mendistribusikan lalu lintas dari klien menuju ke beberapa server. Dengan tujuan untuk mengoptimalkan dan mencegah terjadinya overload pada salah satu server. Fungsi pada load balance sama seperti halnya polisi lau lintas yang dimana bertugas untuk mencegah terjadinya kemacetan dan insiden yang tidak diinginkan.
Dalam load balance terdapat beberapa algoritma yang digunakan dalam sistem pembagian beban. Berikut ini beberapa tipe algoritma dari load balance:
- Round RobinRound Robin merupakan salah satu metode load balancing yang paling sederhana. Metode ini sangat cocok untuk server dengan spesifikasi yang sama dan tidak memiliki banyak koneksi terus menerus.
- Least ConnectionLeast Connection merupakan metode load balancing yang digunakan untuk mengarahkan permintaan klien ke server yang memiliki jumlah koneksi terendah.
- Source IP HashMetode ini digunakan untuk mengarahkan lalu lintas permintaan klien berdasarkan data yang berhubungan dengan IP (incoming packet). Maksudnya adalah alamat IP klien yang menentukan server mana yang akan mendapatkan permintaan data.
- Least Response TimeMetode load balancing ini digunakan untuk mengarahkan permintaan klien menuju server yang memiliki waktu respons tercepat.
- URL HashMetode URL Hash menggunakan nilai hash dari suatu URL permintaan untuk mengarahkan permintaan klien tersebut menuju backend yang sesuai.
HAProxy
HAProxy atau High Avaibility Proxy merupakan perangkat lunak yang bertugas untuk menyeimbangkan lalu lintas. HAProxy bekerja dengan cara membagi permintaan klien yang masuk ke beberapa server yang tersedia. Dengan begitu, beban server dapat dibagikan secara merata antara server. Seperti yang sudah dijelaskan sebelumnya, pada load balance terdapat algoritma yang dijalankan untuk melakukan load balancing. Nah, pada haproxy kita dapat melakukan load balancing menggunakan perintah source <algoritma load balance>. Beberapa algoritma load balance yang terdapat pada HAProxy adalah:
- roundrobinSudah dijelaskan sebelumnya algoritma roundrobin bekerja dengan mendistribusikan permintaan klien secara berurutan kepada beberapa server yang ada.
- static-rrSeperti halnya roundrobin, namun administrator jaringan dapat menentukan bobot tertentu untuk setiap server yang ada.
- sourceSource atau yang dikenal dengan IP hash merupakan algoritma load balance yang mengarahkan permintaan sesuai dengan alamat IP yang sama pada setiap sesi.
- leastconnMetode ini bekerja dengan cara mengarahkan permintaan ke server yang memiliki jumlah koneksi paling rendah.
Sebenarnya masih banyak lagi algoritma yang dapat digunakan pada HAProxy, untuk detail yang lebih jelas kalian dapat mengunjungi dokumentasi dari HAProxy sendiri. Disana dijelaskan secara detail mengenai algoritma apa saja yang dapat dijalankan di HAProxy server.
Topologi
Spesifikasi server yang digunakan.
- Server Web 1
- IP address: 10.23.2.104
- Pastikan sudah terinstal perangkat lunak web server seperti nginx, apache2 dan lain – lain
- Server Web 2
- IP address: 10.23.2.105
- Pastikan sudah terinstal perangkat lunak web server seperti nginx, apache2 dan lain – lain
- Server Haproxy
- IP address: 10.23.2.103
Step 1 – Instalasi
- Masuk ke server ubuntu yang dijadikan Haproxy menggunakan user sudo.
$sudo su
- Lakukan update pada server ubuntu yang digunakan.
#apt update
- Instal package haproxy menggunakan perintah dibawah.
#apt install haproxy -y
Step 2 – Konfigurasi Haproxy
- Setelah penginstalan berhasil, konfigurasikan file haproxy,cfg.
#vim /etc/haproxy/haproxy.cfg
- Pada bagian baris paling bawah tambahkan perintah berikut.
frontend http bind *:80 mode http default_backend <nama backend> backend <nama backend> mode http option forwardfor balance roundrobin server <penamaan untuk server web> <ip atau domain web server>:80 check server <penamaan untuk server web> <ip atau domain web server>:80 check #contoh frontend http bind *:80 mode http default_backend web_server backend web_server mode http option forwardfor balance roundrobin server web_server01 10.23.2.104:80 check server web_server02 10.23.2.105:80 check
Untuk sementara disini kita akan mencoba load balancing yang berjalan pada HTTP dan menggunakan algoritma roundrobin. Dengan algoritma roundrobin, setiap permintaan dari klien akan diarahkan secara berganti – gantian ke web server yang telah dibuat. Kalian juga dapat menggunakan algoritma yang lain seperti leastconn, IP Hash dan lain-lain sesuai kebutuhan. - Setelah melakukan semua konfigurasi, jangan lupa untuk merestart layanan haproxy agar semua konfigurasi dapat berjalan.
#systemctl restart haproxy
Step 3 – Pengujian Load Balancing HTTP
- Buka web browser dan ketikkan IP atau Domain Haproxy yang telah dibuat.
- Kemudian coba refresh halaman web nya. Hasilnya akan menampilkan halaman web pada server yang lain. Disini dapat kita lihat perbedaanya, awalnya halaman web menampilkan halaman pada web server 1 dan ketika direfresh akan menampilkan halaman web pada web server 2.
Step 4 – Membuat SSL
- Setelah pengujian menggunakan protokol HTTP pada load balancing yang telah dibuat. Sekarang kita akan mencoba memberikan SSL pada load balancingnya, tanpa harus menggunakan SSL pada kedua web server.
#mkdir /ssl #cd /ssl
- Buatlah private key untuk sertifikat SSL yang akan dibuat. Private key ini berfungsi sebagai enkripsi dan dekripsi yang digunakan pada proses pertukaran antara server dan klien.
#openssl genpkey -algorithm RSA -out pkey.pem
- Buatlah file request menggunakan perintah dibawah. Nantinya file request ini digunakan bareng private key untuk membuat sertifikat SSL.
#openssl req -new -key private-key.pem -out certi.csr
Kemudian akan diminta untuk mengisi form tertentu. Sesuaikan isi form dengan kebutuhan masing – masing. Pada form permintaan Common Name di isi dengan IP atau Domain yang dimiliki server Haproxy. - Selanjutnya, kita buat file sertifikat yang akan digunakan. Perintah -days digunakan untuk menunjukan berapa lama file sertifikat yang akan digunakan berlaku.
#openssl x509 -req -days 365 -in certi.csr -signkey pkey.pem -out self-signed-certi.pem
- Setelah file sertifikat dibuat, masukkan private key yang terdapat pada file pkey.pem ke sertifikat self signed.
#cat pkey.pem >> self-signed-certi.pem
Step 5 – Konfigurasi HTTPS Haproxy
- Setelah selesai membuat file Sertifikat SSL, selanjutnya kita akan melakukan sedikit konfigurasi lagi pada file haproxy.cfg.
#vim /etc/haproxy/haproxy.cfg
- Disini kita akan menambahkan perintah frontend untuk protokol HTTPS load balancingnya. Konfigurasi tidak jauh berbeda dengan load balancing pada HTTP, kita hanya pelru penyesuaian sedikit dan juga menjalankan redirect ke protokol HTTPS load balancingnya.
frontend http bind *:80 mode http redirect scheme https code 301 if !{ ssl_fc } --> berfungsi untuk meredirect dari http ke https frontend https bind *:443 ssl crt <path certificate ssl> mode http default_backend <nama backend> backend <nama backend> mode http option forwardfor balance roundrobin server <penamaan untuk server web> <ip atau domain web server>:80 check server <penamaan untuk server web> <ip atau domain web server>:80 check #contoh frontend http bind *:80 mode http redirect scheme https code 301 if !{ ssl_fc } frontend https bind *:443 ssl crt /ssl/self-signed-certi.pem mode http default_backend web_server backend web_server mode http option forwardfor balance roundrobin server web_server01 10.23.2.104:80 check server web_server02 10.23.2.105:80 check
- Setelah semua konfigurasi dilakukan, restart kembali layanan haproxynya supaya konfigurasi dapat berjalan.
#systemctl restart haproxy
Step 6 – Pengujian Load Balancing HTTPS
- Selanjutnya kita uji coba lagi dengan membuka web browser, dan ketikkan IP atau Domain dari server haproxy. Nantinya halaman web akan di redirect ke protokol HTTPS.
- Kemudian refresh kembali dan lihat apakah load balancingnya sudah berjalan. Jika sudah akan menampilkan halaman web dari web server 2.
Kesimpulan
Load balancing merupakan proses untuk membagikan lalu lintas permintaan klien secara merata menuju beberapa server untuk menghindari terjadinya overload dan juga kelebihan beban pada suatu server. Salah satu perangkat lunak yang banyak digunakan untuk load balancing adalah HAProxy. Haproxy bekerja dengan cara menyeimbangkan lalu lintas permintaan klien menuju beberapa server yang tersedia. Penggunaan load balancing ini juga sangat berguna untuk mencegah terjadinya overload traffic pada suatu server. Pada load balance HAproxy juga terdapat beberapa algoritma yang dapat digunakan seperti roundrobin, leastconn, source dan lain-lain yang dapat digunakan sesuai kebutuhan yang diinginkan.
Tertarik Mengikuti training di ID-Networkers? Kami menyediakan berbagai pilihan training yang bisa kamu ikuti, klik disini untuk info lengkapnya.
Penulis : M. Syawal Saputra