Konfigurasi Loadbalancer Menggunakan Haproxy dengan Algoritma Round Robin
Konfigurasi Loadbalancer Menggunakan Haproxy dengan Algoritma Round Robin
Jika sebuah web server telah mencapai limit resource sehingga mengganggu peformance sebuah web server tersebut, maka solusi yang bisa diambil adalah dengan membuat server tersebut menjadi lebih dari satu, teknik ini bisa disebut scalling. Saat server tersebut di scalling mempunyai beberapa keuntungan yaitu:
- Meningkatkan performa aplikasi (karena beban akan terbagi sebanyak server yang tersedia)
- High Availibility (apabila ada sebuah server yang mati, aplikasi akan tetap bisa diakses karena masih mempunyai server backup dengan kondisi menyala)
- Aplikasi menjadi lebih secure karena melalui sebuah proxy
Berikut adalah rancangan topologinya
-
Menggunakan load balancer haproxy
-
Menggunakan 2 server PHP
-
Source code diletakan pada sisi NFS dengan tujuan agar server hanya memproses backend saja, dan IO disk pada Server APP tidak terbebani
-
2 Server tersebut terkoneksi ke satu server database
Untuk Konfigurasi haproxy dengan HTTP dilampirkan dibawah:
File untuk konfigurasi terletak di /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
server webserver1 192.168.56.20:80 check
server webserver2 192.168.56.30:80 check
Penjelasan Konfigurasi Haproxy:
-
global:
-
log: Mengatur logging.
-
chroot: Direktori kerja untuk proses HAProxy.
-
stats socket: Mengatur socket untuk admin HAProxy.
-
user dan group: User dan group yang akan digunakan oleh proses HAProxy.
-
daemon: Menjalankan HAProxy sebagai daemon.
-
defaults:
-
log: Mengatur logging sesuai dengan pengaturan global.
-
mode: Mode operasi (http dalam kasus ini).
-
option httplog: Mengaktifkan logging HTTP.
-
option dontlognull: Jangan log koneksi null.
-
timeout connect: Waktu tunggu untuk koneksi.
-
timeout client: Waktu tunggu untuk klien.
-
timeout server: Waktu tunggu untuk server.
-
errorfile: File untuk pesan kesalahan spesifik.
-
frontend:
-
bind *:80: Mengikat frontend pada port 80 untuk menerima permintaan HTTP.
-
default_backend: Menentukan backend default untuk menangani permintaan yang diterima oleh frontend ini.
-
backend:
-
balance roundrobin: Mengatur load balancing menggunakan algoritma round-robin.
-
server: Mendefinisikan server backend dengan alamat IP dan port, serta opsi check untuk memeriksa kesehatan server.
Konfigurasi ini akan memastikan bahwa permintaan yang diterima pada port 80 akan didistribusikan secara merata (round-robin) ke dua web server yang ada, yaitu 192.168.56.20 dan 192.168.56.30.
Untuk Konfigurasi haproxy dengan HTTPS dilampirkan dibawah:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
tune.ssl.default-dh-param 2048
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http_front
bind *:80
redirect scheme https if !{ ssl_fc }
frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/test.aplikasiphp.co.id.pem
default_backend http_back
backend http_back
balance roundrobin
server webserver1 192.168.56.20:80 check
server webserver2 192.168.56.30:80 check
Penjelasan Konfigurasi Haproxy:
global:
-
tune.ssl.default-dh-param: Mengatur parameter Diffie-Hellman untuk SSL.
frontend http_front:
-
bind *:80: Mengikat frontend HTTP pada port 80.
-
redirect scheme https if !{ ssl_fc }: Mengarahkan semua permintaan HTTP ke HTTPS.
frontend https_front:
-
bind *:443 ssl crt /etc/haproxy/certs/test.aplikasiphp.co.id.pem: Mengikat frontend HTTPS pada port 443 dengan sertifikat SSL.
-
default_backend: Menentukan backend default untuk menangani permintaan yang diterima oleh frontend ini.
What's Your Reaction?