Rumahweb Journal
Banner - Cara Install HAProxy Sebagai Load Balancer di Ubuntu 20.04

Cara Install HAProxy Sebagai Load Balancer di Ubuntu 20.04

Sebelumnya, kami telah membahas tentang apa itu HAProxy. Saat ini, kami akan melanjutkan panduannya tentang cara install HAProxy sebagai load balancer di Ubuntu.

Seperti yang telah kita ketahui bersama, HAProxy digunakan untuk membagi beban trafik antara beberapa server backend yang berjalan di belakangnya. Hal ini berfungsi untuk meningkatkan ketersediaan, skalabilitas, performa, dan keamanan aplikasi ketika diakses.

Pada artikel ini, kami akan memberikan panduan cara install HAProxy sebagai load balancer di Ubuntu. Namun sebelum kami bahas cara install dan konfigurasinya, terlebih dahulu pastikan bahwa Anda telah mempersiapkan sistem berikut.

Persiapan Sistem

Untuk menjalankan metode Load Balancing, kita membutuhkan setidaknya 3 node server atau VPS. 1 server (frontend) bertindak sebagai server load balancer, dan 2 server (backend) berfungsi untuk melayani request atau menampilkan konten permintaan dari client.

Pada demo ini, kami menggunakan 3 VPS KVM dari Rumahweb. Berikut persiapan sistem yang kami gunakan:

  • OS Linux Ubuntu 20.04 LTS
  • 1 Server HAProxy dengan RAM 2 GB : 203.175.8.226 (Load balancer)
  • 1 Server Backend1 dengan RAM 4 GB : 203.175.8.223
  • 1 Server Backend2 dengan RAM 4 GB : 203.175.8.224

BACA JUGA : Apa itu Proxy dan Cara Kerjanya

Install dan Konfigurasi HAProxy

Berikut step by step install dan konfigurasi HAProxy yang digunakan sebagai load balancer.

Step 1. Install Server Backend

Pada artikel kali ini, kami akan menggunakan apache web server sebagai server backend yang bertugas merespon permintaan client melalui server HAProxy. Berikut langkah instalasi web servernya.

  1. Login ke VPS dengan akses root, dan melakukan update package pada sistem.
apt update && apt-get upgrade -y
  1. Install Web Server pada kedua node dengan perintah:
apt install apache2
  1. Setelah melakukan instalasi, pastikan bahwa web server telah running atau belum dengan perintah berikut.
systemctl status apache2
  1. Modifikasi file website pada masing-masing backend, dengan melakukan edit pada direktori /var/www/html.

Server backend1

# rm -rf /var/www/html/index.html
# nano /var/www/html/index.html
# <h1>server backend1</h1>

Server backend2

# rm -rf /var/www/html/index.html
# nano /var/www/html/index.html
# <h1>server backend2</h1>
  1. Setelah melakukan modifikasi pada konten, maka kita akan lakukan restart untuk service web servernya dengan perintah berikut.
# systemctl restart apache2
# systemctl status apache2
  1. Jika layanan web server telah berjalan dengan baik, maka kita dapat melakukan tes akses pada server backend. Pastikan menampilkan konten masing masing sesuai servernya.
  • akses ke webserver 1 dengan IP 203.175.8.223 seperti contoh tampilan berikut.
tampilan server backend 1
  • akses ke webserver 2 dengan IP 203.175.8.224 seperti berikut.
tampilan server backend 2

BACA JUGA : Proxy Server: Pengertian dan Manfaatnya

Step 2. Install HAProxy sebagai Load Balancer

Berikut adalah cara install HAProxy sebagai server load balancer di Ubuntu 20.04.

  1. Instalasi HAProxy 
sudo apt install haproxy -y
  1. Konfigurasi awal untuk HAProxy

Haproxy memiliki file konfigurasi default pada file /etc/haproxy/haproxy.cfg.

  • Pada section global berikut berisi tentang konfigurasi untuk SSL, informasi akses log, dan grup user untuk menjalankan HAProxy.
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 17s
# user dan group Haproxy
   user haproxy
    group haproxy
    daemon
# Lokasi ssl yang dimiliki, diatur sesuai path
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private
# Bagian ssl cipher untuk enkripsi
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3
  • Pada section default, berisi tentang nilai konfigurasi dari berbagai node. Kita dapat melakukan custom pada bagian nilai dan halaman error.
defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 11s
    timeout client  7s
    timeout server  4s
    timeout http-request 15s
    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

Keterangan kode:

  1. Bagian mode, digunakan untuk menentukan metode load balancing, apakah kita menggunakan metode tcp atau http.
  2. Bagian timeout, berisi tentang penyesuaian transfer data, bagaimana waktu koneksi antar server diatur.
  3. Timeout connect : waktu yang diperlukan Haproxy untuk membuat koneksi dengan Server backend.
  4. Timeout client  : delay yang diperlukan client untuk mengirim data ke server.
  5. Timeout server : waktu tunggu server untuk mengirim data.
  6. Timeout http-request : waktu tunggu client mengirimkan response http secara lengkap.
  • Pada Section Frontend, menjelaskan bagaimana akses ke load balancer,  ketika akses maka permintaan akan diteruskan kepada server backend.
frontend my_frontend
   bind *:80
   mode http
   default_backend my_backend   

Note : kita dapat menyesuaikan nama pada parameter load balancing, penamaan harus sesuai dengan node yang dipanggil.

  • Pada section Backend, kota dapat mengatur node server yang akan menjadi target load balancing, seperti pada contoh berikut.
backend my_backend
    mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    option httpchk HEAD / HTTP/1.1rnHost:localhost
    server backend1 203.175.8.223:80
    server backend2 203.175.8.224:80

Keterangan kode:

  1. Bagian backend, dinamai sesuai nama yang dipanggil pada frontend.
  2. Balance roundrobin berarti kita akan menggunakan metode load balancing round robin, dimana setiap request dikirimkan bergantian ke seluruh server node yang ada.
  3. HTTP request berarti kita akan meneruskan permintaan ke server backend.
  4. Server adalah node server target load balancing, kita dapat mengisi ip address dan jumlah server yang kita miliki, pada panduan ini kita akan menggunakan 2 server sebagai backend.
  • Pada section selanjutnya, kita akan membuat kode untuk akses ke halaman statistik Haproxy.
listen monitoring 
    bind  *:8080
    stats enable
    stats hide-version
    stats refresh 10s
    stats show-node
    stats auth username:password
    stats uri /monitoring

Note: kita dapat mengisi username dan password sesuai dengan yang kita inginkan.

Semua section telah selesai diinputkan, berikut adalah hasil akhir dari konfigurasi yang ada di file /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 17s
    user haproxy
    group haproxy
    daemon
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3
defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 11s
    timeout client  7s
    timeout server  4s
    timeout http-request 15s
    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 my_frontend
   bind *:80
   mode http
   default_backend my_backend
backend my_backend    
    mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    option httpchk HEAD / HTTP/1.1rnHost:localhost
    server node1 203.175.8.223:80
    server node2 203.175.8.224:80
listen monitoring 
    bind *:8080
    stats enable
    stats hide-version
    stats refresh 10s
    stats show-node
    stats auth username:password
    stats uri /monitoring  

Simpan file dan restart layanan HAProxy.

# systemctl start haproxy
# systemctl enable haproxy
# sudo systemctl restart haproxy

Pengujian Load Balancer

Akses ke server load balancer dengan ip 203.175.8.226 maka akan menampilkan konten dari server 1 dan 2 secara bergantian.

pengujian install load balancing di server 1

Saat diakses menampilkan server backend1, dan ketika di refresh pada browser akan dialihkan ke server backend ke 2

pengujian install load balancing di server 2

Untuk memastikan load balancer bekerja dengan baik, kita dapat menjalankan curl seperti berikut:

curl -I http://203.175.8.226
HTTP/1.1 200 OK
test install haproxy

Kita juga dapat mengakses halaman statistik HAProxy pada http://203.175.8.226:8080/monitoring 

Login dengan username dan password yang telah dibuat sebelumnya.

load balancing haproxy

Sampai tahap ini, proses install load balancing HAProxy di Ubuntu 20.04 telah selesai. Berhubung proses instalasinya cukup panjang, kami sarankan agar Anda membaca secara detail tahap demi tahap instalasi dan konfigurasinya.

Selain itu, pastikan Anda telah mengkonfigurasi server backend dengan benar, agar request proses yang masuk dalam diresponse dan diteruskan oleh HAProxy.

Demikian cara install HAProxy sebagai load balancer di Ubuntu 20.04, semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 5 / 5. Vote count: 7

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Jasa Pembuatan Website Rumahweb

Andika Dwi Setyawan

Dika is a System Administrator, passionate about Linux, Networking, Cyber security and much love with Arista.