Cara Setting Load Balancing dengan Nginx

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 🙂

Leave a Reply

Your email address will not be published.