Load Balancing adalah sebuah mekanisme untuk membagi atau mendistribusikan trafik ke beberapa server. Nginx selain berfungsi sebagai web server bisa juga berfungsi sebagai load balancer.
Metode Load Balancing
- Round Robin: mendistribusikan trafik ke setiap server secara bergantian.
- Least Connections: mendistribusikan trafik ke server yang paling sedikit koneksi aktifnya.
- IP Hash: mendistribusikan trafik ke server yang sama ketika visitor pertama kali melakukan request.
0.Perangkat yang digunakan
Perangkat yang digunakan di tutorial ini:
- OS Ubuntu 18.04 LTS
- Nginx web server
- PHP-FPM 7.2
- Node1: 10.130.127.167
- Node2: 10.130.128.35
- LoadBalancer: 128.199.187.215
- Domain: defnex.com
1.Install Nginx dan PHP-FPM di Node
Install Nginx di Node1 dan Node2.
sudo apt install nginx php php-fpm-y sudo systemctl status nginx sudo systemctl status php7.2-fpm |
Membuat file index.php di Node1.
sudp mkdir/var/www/defnex.com sudo echo"<h2>node1</h2>"> /var/www/defnex.com/index.php |
Membuat file index.php di Node2.
sudo mkdir/var/www/defnex.com sudo echo"<h2>node2</h2>"> /var/www/defnex.com/index.php |
Membuat server block di Node1 dan Node2.
sudo nano/etc/nginx/conf.d/defnex.com.conf |
File konfigurasi server block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | server{ listen80; server_name defnex.com www.defnex.com; root /var/www/defnex.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/defnex.com.access.log; error_log /var/log/nginx/defnex.com.error.log warn; } |
Uji dan restart Nginx.
sudo nginx-t sudo systemctl restart nginx sudo systemctl status nginx |
2.Install dan Konfigurasi Nginx di Load Balancer
Install Nginx.
sudo apt install nginx-y sudo systemctl status nginx |
Membuat server block untuk load balancing domain defnex.com.
sudo nano/etc/nginx/conf.d/lb-defnex.com.conf |
File konfigurasi server block load balancing domain defnex.com.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | upstreambackend{ server10.130.127.167;#node1 server10.130.128.35; #node2 } server{ listen 80; server_name defnex.com www.defnex.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; } } |
Pada konfigurasi upstream backend dituliskan IP address dari backend server. Secara default metode load balancing yang digunakan adalah Round Robin.
Konfigurasi load balancing jika menggunakan metode Least Connections.
upstreambackend{ least_conn; server10.130.127.167;#node1 server10.130.128.35; #node2 } |
Konfigurasi load balancing jika menggunakan metode IP Hash.
upstreambackend{ ip_hash; server10.130.127.167;#node1 server10.130.128.35; #node2 } |
Uji dan restart Nginx.
sudo nginx-t sudo systemctl restart nginx sudo systemctl status nginx |
3.Pengujian
Browse domain berulang kali, akan menampilkan halaman dari Node1 dan Node2 secara bergantian.
selamat mencoba 🙂