Apa yang bisa kami bantu?

A. Pendahuluan

HAProxy adalah sebuah aplikasi opensource berbasis Linux yang biasa digunakan sebagai load balancing trafic jaringan. Load balancing adalah teknik untuk mendistribusikan beban trafik pada dua atau lebih jalur koneksi secara seimbang agar trafik dapat berjalan optimal, memaksimalkan throughput, memperkecil waktu tanggap dan menghindari overload pada salah satu jalur koneksi. Teknik balancing dapat menggunakan beberapa cara yang berbeda, tergantung kekompleksan yang ada.

HAProxy adalah solusi baik, sangat cepat dan andal yang menawarkan load-balancing, ketersediaan tinggi, dan proksi untuk aplikasi berbasis TCP dan HTTP. Ini sangat cocok untuk situs web dengan lalu lintas sangat tinggi dan memberdayakan banyak situs web yang paling banyak dikunjungi di dunia. Maka dari itu sangat penting untuk mengerti, apa yang sebenarnya dibutuhkan jaringan sebelum membuat keputusan melakukan konfigurasi load balancer.

Berikut adalah diagram dari Konfigurasi HAProxy Load Balancer nya:

HAProxy sekarang diinstal. Sekarang mari kita membuat pengaturan di mana kita memiliki 2 (dua) instance Apache Web Server dan 1 (satu) instance HAProxy. Di bawah ini adalah informasi pengaturan:

 B. Instalasi & Konfigurasi

Kami akan menggunakan tiga VM yang dapat dibuat dari Gio Cloud atau Neo Cloud

Instance 1 - Load Balancer

Hostname: HAProxy

OS: Ubuntu

Private IP: 192.168.100.11

IP Public: 103.93.55.118

 

Instance 2 - Web Server 1

Hostname: VM-Webserver-A

OS: Ubuntu sudah di install Apache

Private IP: 192.168.100.7


Instance 2 - Web Server 2

Hostname: VM-Webserver-B

OS: Ubuntu sudah di install Apache

Private IP: 192.168.100.24

 

Berikut adalah diagram dari Konfigurasi HAProxy Load Balancer nya

Langkah 1  

Konfigurasi pada ( VM HAProxy )

Sebelum memulai instalasi, kami merekomendasikan untuk mengupdate system dengan versi terbaru terlebih dahulu.

# apt-get update


Langkah 2

Install HAProxy

# apt-get install haproxy

Cek versi dari HAPorxy

# haproxy -v


Kita perlu mengaktifkan HAProxy untuk memulai dengan skrip init /etc/default /haproxy. Setel opsi ENABLED ke 1 sebagai berikut:

Untuk memverifikasi apakah perubahan ini dilakukan dengan benar, jalankan skrip init HAProxy tanpa parameter apa pun. Anda harus melihat yang berikut ini:

# systemctl status haproxy

 

Langkah 3

1. Konfigurasi HAProxy 

Tinjau file konfigurasi default di /etc/haproxy/haproxy.cfg, yang dibuat secara otomatis selama instalasi. File ini mendefinisikan pengaturan standar tanpa load balancing:

# cat /etc/haproxy/haproxy.cfg

Bagian global mendefinisikan parameter tingkat sistem seperti lokasi file dan pengguna serta grup tempat HAProxy dijalankan. Dalam kebanyakan kasus, Anda tidak perlu mengubah apa pun di bagian ini. Pengguna haproxy dan grup haproxy keduanya dibuat selama instalasi.

Bagian default mendefinisikan parameter logging tambahan dan opsi yang terkait dengan timeout dan kesalahan. Secara default, pesan normal dan kesalahan akan dicatat.

2. Konfigurasi Load Balancing 

Saat Anda mengkonfigurasi load balancing menggunakan HAProxy, ada dua jenis node yang perlu didefinisikan: frontend dan backend. Frontend adalah simpul di mana HAProxy mendengarkan koneksi. Node backend adalah yang digunakan HAProxy untuk meneruskan permintaan. Jenis simpul ketiga, simpul statistik, dapat digunakan untuk memantau penyeimbang beban dan dua simpul lainnya.

Buka /etc/haproxy/haproxy.cfg di teks editor dan tambahkan konfigurasi untuk front end:

# nano /etc/haproxy/haproxy.cfg
frontend
haproxynode
 bind *:80
 mode http
 default_backend
backendnodes


Blok konfigurasi ini menentukan node frontend bernama haproxy node, yang terikat pada semua antar muka jaringan pada port 80. Ia akan mendengarkan koneksi HTTP (dimungkinkan untuk menggunakan mode TCP untuk tujuan lain) dan akan menggunakannodes back end.

  •  Tambahkan konfigurasi pada sisi backend 
# nano /etc/haproxy/haproxy.cfg
backend
backendnodes
 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.1\r\nHost:localhost
 server node1
192.168.100.7:80 check
 server node2
192.168.100.24:80 check


  

  •  Tambahkan optional status node pada konfigurasinya 
# nano /etc/haproxy/haproxy.cfg
listen stats
 bind :32700
 stats enable
 stats uri /
 stats
hide-version
 stats auth
someuser:password


Berikut adalah file konfigurasi lengkap setelah modifikasi:


  •  Restart HAProxy untuk mendapatkan konfigurasi yang barunya 
# systemctl restart haproxy

Sekarang, setiap permintaan yang masuk ke simpul HAProxy di alamat IP 103.93.55.118 akan diteruskan ke simpul jaringan internal dengan alamat IP 192.168.100.7 atau 192.168.100.24. Node backend ini akan melayani permintaan HTTP. Jika sewaktu-waktu salah satu dari simpul ini gagal dalam pemeriksaan kesehatan, mereka tidak akan digunakan untuk melayani permintaan apa pun sampai mereka lulus tes.

Untuk melihat statistik dan memantau kesehatan node, navigasikan ke alamat IP atau nama domain dari node frontend di browser web di port yang ditugaskan, mis., Http://103.93.55.118:32700. Ini akan menampilkan statistik seperti berapa kali permintaan diteruskan ke simpul tertentu serta jumlah sesi saat ini dan sebelumnya yang ditangani oleh simpul frontend.

 

Saat ini konfigurasi HAProxy telah selesai dan kita coba akses website menggunakan IP Http://103.93.55.118 untuk melihat hasilnya

Hasil Pertama

Hasil Kedua setelah di refresh browser


Saat ini kita coba untuk menonaktifkan webserver B dan lihat pada statistic

 

Lalu kita coba jalankan kembali untuk webserver B