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*
1. Round Robin: mendistribusikan trafik ke setiap server secara bergantian. 2. Least Connections: mendistribusikan trafik ke server yang paling sedikit koneksi aktifnya. 3. IP Hash: mendistribusikan trafik ke server yang sama ketika visitor pertama kali melakukan request.
Topologi Load Balancing
*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.
[INPUT]1 2 3 sudo apt install nginx php php-fpm -y sudo systemctl status nginx sudo systemctl status php7.2-fpm
Membuat file index.php di Node1.
[INPUT]1 2 sudp mkdir /var/www/defnex.com sudo echo “
node1
” > /var/www/defnex.com/index.php
Membuat file index.php di Node2.
[INPUT]1 2 sudo mkdir /var/www/defnex.com sudo echo “
node2
” > /var/www/defnex.com/index.php
Membuat server block di Node1 dan Node2.
[INPUT]1 sudo nano /etc/nginx/conf.d/defnex.com.conf
File konfigurasi server block.
[INPUT]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 { listen 80; 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.
[INPUT]1 2 3 sudo nginx -t sudo systemctl restart nginx sudo systemctl status nginx
*2.Install dan Konfigurasi Nginx di Load Balancer*
Install Nginx.
[INPUT]1 2 sudo apt install nginx -y sudo systemctl status nginx
Membuat server block untuk load balancing domain defnex.com.
[INPUT]1 sudo nano /etc/nginx/conf.d/lb-defnex.com.conf
File konfigurasi server block load balancing domain defnex.com.
[INPUT]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 upstream backend { server 10.130.127.167; #node1 server 10.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*.
[INPUT]1 2 3 4 5 upstream backend { least_conn; server 10.130.127.167; #node1 server 10.130.128.35; #node2 }
Konfigurasi load balancing jika menggunakan metode *IP Hash*.
[INPUT]1 2 3 4 5 upstream backend { ip_hash; server 10.130.127.167; #node1 server 10.130.128.35; #node2 }
Uji dan restart Nginx.
[INPUT]1 2 3 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.
Halaman index.php dari Node1
Halaman index.php dari Node2
selamat mencoba ð