Konfigurasi Loadbalancer Menggunakan Haproxy dengan Algoritma Round Robin

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: 

  1. Meningkatkan performa aplikasi (karena beban akan terbagi sebanyak server yang tersedia)
  2. High Availibility (apabila ada sebuah server yang mati, aplikasi akan tetap bisa diakses karena masih mempunyai server backup dengan kondisi menyala)
  3. Aplikasi menjadi lebih secure karena melalui sebuah proxy

Berikut adalah rancangan topologinya

  1. Menggunakan load balancer haproxy

  2. Menggunakan 2 server PHP

  3. Source code diletakan pada sisi NFS dengan tujuan agar server hanya memproses backend saja, dan IO disk pada Server APP tidak terbebani

  4. 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?

like

dislike

love

funny

angry

sad

wow