Kali ini saya ingin membahas tentang load balancing, apa sih itu load balancing ? Load balancing adalah mekanisme untuk membagi atau mendistribusikan trafik ke beberapa server. Nah pada artikel ini saya menggunakan nginx sebagai load balancer.
Metede load balancing dibagi menjadi tiga tipe, yaitu Roun robin, Least connections dan IP Hash. Masing-masing tipe tersebut tentunya mempunyai fungsi yang berbeda-beda. Berikut penjelasan tentang tipe-tipe yang saya sebutkan diatas.
- Roun Robin : Fungsinya adalah mendistribusikan trafik ke setiap server secara bergantian.
- Leas Connection : Fungsinya mendistribusikan trafik ke server yang paling sedikit koneksi aktifnya.
- IP Hash : Yaitu mendistribusikan trafik ke server yang sama ketika visitor/pengunjung pertama kali melakukan permintaan,
Topologi :
Web browser --> Load Balancing --> Backend1, Backend2
Pada artikel ini saya menggunakan tiga server, satu server untuk load balancer dan dua server untuk backend. Berikut saya infokan perangkat yang saya gunakan untuk setting load balancer.
- OS Ubuntu 18.04 LTS
- Nginx web server
- PHP-FPM 7.2
- Load balancer : 192.168.100.51
- Node1/Backend1 : 192.168.100.52
- Node2/Backend2 : 192.168.100.53
- Domain : vm.dapurit.com
Oke mari kita lanjut, langkah berikutnya setelah perangkat yang diperlukan sudah disiapkan yaitu melakukan installasi Nginx dan PHP-FPM di node1 dan node2.
sudo apt install nginx php php-fpm -y
sudo systemctl status nginx
sudo systemctl status php7.2-fpm
Setelah itu buat file index.php di node1 dan node2
Node 1
sudo mkdir /var/www/vm.dapurit.com
sudo echo "<h1>node1</h1>" > /var/www/vm.dapurit.com/index.php
Node 2
sudo mkdir /var/www/vm.dapurit.com
sudo echo "<h1>node2</h1>" > /var/www/vm.dapurit.com/index.php
Langkah selanjutnya membuat server block di Node1 dan Node2
sudo nano /etc/nginx/conf.d/vm.dapurit.com.conf
Isi file konfig server block seperti dibawah ini
server {
listen 80;
server_name vm.dapurit.com www.vm.dapurit.com;
root /var/www/vm.dapurit.com/;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
access_log /var/log/nginx/vm.dapurit.com.access.log;
error_log /var/log/nginx/vm.dapurit.com.error.log warn;
}
Kemudian test dan restart nginx.
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx
Nah sampai langkah ini konfigurasi pada Node1 dan Node2 sudah selesai.
Selanjutnya install dan konfigurasi nginx di load balancer
sudo apt install nginx -y
sudo systemctl status nginx
Lalu buat server block untuk load balancing domain vm.dapurit.com
sudo nano /etc/nginx/conf.d/lb-vm.dapurit.com.conf
Isi file konfignya dengan data dibawah ini.
upstream backend {
server 192.168.100.52; #node1
server 192.168.100.53; #node2
}
server {
listen 80;
server_name vm.dapurit.com www.vm.dapurit.com;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://backend;
}
}
Konfigurasi diatas dituliskan IP adress dari node/backend server, secara default metode yang digunakan pada konfigurasi diatas adalah metode Round Robin.
Berikut jika konfigurasi menggunakan Least Connections.
upstream backend {
least_conn;
server 192.168.100.52; #node1
server 192.168.100.53; #node2
}
Dan berikut jika konfigurasi menggunakan IP Hash.
upstream backend {
ip_hash;
server 192.168.100.52; #node1
server 192.168.100.53; #node2
}
Selanjutnya test dan restart nginx.
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx
Sampai disini proses seting load balancing sudah selesai, selanjutnya mari kita test apakah berfungsi atau tidak. Jika setingan berhasil maka ketika kita akses domain yang sudah diseting di atas secara bergantian akan mengarah ke node1 dan node2.


Hasil test diatas ketika akses domain otomatis bergantian ke node1 dan node2, artinya konfigurasi yang dilakukan sudah berhasil. Selamat mencoba 🙂
Leave a Reply