Cara Load Balance Web Server dengan Haproxy di Ubuntu Server
Tutorial Linux Indonesia -- Pada artikel ini bagol69 akan membahas cara load balance web server dengan menggunakan Haproxy di Ubuntu Server.
Cara Load Balance Web Server dengan Haproxy di Ubuntu Server |
Haproxy merupakan salah satu aplikasi yang digunakan untuk load balancing server.
Load balancing merupaka salah satu teknik yang digunakan untuk mengurangi beban dari server dengan cara membagi beban load ke tiap server.
Persiapan
Server 1 – Load Balancing
Hostname : bagol69
Ip addres : 10.10.10.1
Server 2 – BACKEND
Hostname : client1
HTTP SERVER
HTTP SERVER
IP ADDRES 10.10.10.2
Server 3 – Backend
Hostname : client2
Ip address : 10.10.10.3
INSTALL HAPROXY INSTALL DAN KONFIGURASI HAPROXY
Nah, pada server 1 sebagai server load balancing server.
Kita dapat menggunakan command di bawah ini untuk install Haproxy.
root@bagol69:~# apt-get install haproxy -y
Lakukan backup file konfigurasi Haproxy.
root@bagol69:~# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org
Kemudian edit file konfigurasi Haproxy, menggunakan editor favorit anda.
root@bagol69:~# nano /etc/haproxy/haproxy.cfg
Silahhkan anda edit pada menu global dan defaults.
global
log 127.0.0.1 local2 info
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 256
user haproxy
group haproxy
daemon
Note
- Log menandakan kita akan menyimpan log secara localhost 127.0.0.1.
- Maxconn berarti jumlah maksimal koneksi secara bersamaan yang di berikan oleh Haproxy.
- User dan Group adalah user yang menangani servis Haproxy.
Edit Pada Bagian defaults. Untuk menambahkan tambahan perintah-perintah di bawah ini.
defauls
mode http
log global
option httplog
timeout connect 10s
timeout client 30s
timeout server 30s
frontend http-in
bind *:80
default_backend backend_servers
option forwardfor
Anda tambahkan opsi timeout pada bagian defaults.
Timeout connect yang berarti memberikan batasan waktu untuk terhubung ke server, jika melebihi batas waktu tersebut akan di anggap time out.
Sedangkan opsi timeout client dan server fungsinya sama yaitu memberikan batasan waktu untuk koneksi terhubung ke server.
Artikel Terkait
Artikel Terkait
Cara Install Zabbix Server di Ubuntu 16.04
Install Elastic Search di Centos 7
Apa itu Docker Volume ?
Unuk opsi mode digunakan untuk menentukan services apa yang kita load balancing.
Kali ini, saya ingin servis http untuk load balancing, maka saya menambahkan mode http.
Kita dapat menambahkan server yang buat load balancing.
backend backend_servers
balance roundrobin
server client 10.10.10.2:80 check
server client2 10.10.10.3:80 check
Pada opsi roundrobin merupakan metode load balancing yang saya pilih, karena secara otomatis akan mencari server yang up ( menyala ) pada saat salah server tersebut down.
Banyak metode yang di gunakan untuk metode load balancing yaitu
1. Round Roubin
2. Static Round Roubin
3. Least Connections
4. Source
5. URL
6. URL PARAMETER
Untuk opsi server digunakan untuk server backend, command seperti di bawah ini.
server
[:port] [param*]
Untuk Opsi nama_server di gunakan untuk hostname server backend. Nanti akan muncul di log Haproxy.
Opsi check berfungsi untuk mejalankan fitur health check untuk mengetahui status dari server backends.
Setelah selesai konifugrasi Haproxy jalankan servis Haproxy menggunakan command di bawah ini.
root@bagol69:~# /etc/init.d/haproxy restart
[ ok ] Restarting haproxy (via systemctl): haproxy.service.
root@bagol69:~#
PENGETESAN LOAD BALANCE DAN FAILOVER
Sekarang saat melakukan pengetesan load balance dan failover.
Kita akan test load balance menggunakan script html sederhana.
Server Backend 1
Kita aktifkan, module remote ip di server backend 1 untuk menjalankan load balance. Menggunakan command di bawah ini.
root@client:~# a2enmod remoteip
Module remoteip already enabled
root@client:~#
Pada file /etc/apache2/apache2.conf kita berikan alamat ip address server load balance dan failover.
root@client:~# nano /etc/apache2/apache2.conf
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 10.10.10.1
LogFormat "%v:%p %a %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%a %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
Kita buat script sederhana html untuk melakukan pengetesan failover dan load balance HTTP Server.
root@client:/var/www/html# nano /var/www/html/index.html
WEBSERVER 10.10.10.2
Jika sudah konfigurasi HTTP untuk melakukan pengetesan Load Balance dan Failover, kita jalankan servis http server.
root@client:~# /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.
root@client:~#
Server Backend 2
Kita sudah konfigurasi HTTP server di server backend 1 untuk mengaktifkan load balance dan failover, sekarang kita lakukan sama degan sevrer backend 1.
Untuk mengaktifkan load balance dan failover di server backend 2.
Kita aktifkan module remoteip supaya dapat melakukan koneksi ke server load balancing.
root@client:~# a2enmod remoteip
Module remoteip already enabled
root@client:~#
Kita berikan alamat ip address dari server load balancing. Menggunakan command di bawah ini.
root@client:~# nano /etc/apache2/apache2.conf
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 10.10.10.1
LogFormat "%v:%p %a %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%a %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
Kita menggunakan script sederhan HTML untuk melakukan pengetesan HTTP load balancing dan failover.
root@client:/var/www/html# nano /var/www/html/index.html
WEBSERVER 10.10.10.3
Jika sudah konfigurasi HTTP Server, aktifkan servis http server menggunakan command di bawah ini.
root@client:~# /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.
root@client:~#
Server Load Balance dan Failover Haproxy.
Untuk mengaktifkan Log dari Haproxy untuk memudahkan kita untuk melakukan analisa, apabila server load balancing dan failovernya mengalami nganguan dan tidak bekerja server Haproxy.
Aktifkan rsyslog di server Haproxy. Secara default rsylog sudah dapat berjalan di Ubuntu.
Kita aktifkan module (load=”imodp” ) untuk menjalankan log dari Haproxy.
root@bagol69:~# nano /etc/rsyslog.conf
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
$AllowedSender UDP, 127.0.0.1
Kita tambahkan folder dari haproxy log. Menggunakan command di bawah ini.
root@bagol69:~# nano /etc/rsyslog.d/50-default.conf
*.*;auth,authpriv.none;local2.none -/var/log/syslog
local.* /var/log/haproxy.log
Kita dapat melakukan pengetesan terhadap load balance dan failoverya. Dengan cara akses web server anda.