Introduction

Pengertian Load Balancing sendiri adalah sebuah mekanisme untuk membagi atau mendistribusikan traffic ke beberapa server atau node, selain Nginx berfungsi sebagai web server dia juga bisa berfungsi sebagai load balancer dan juga reverese proxy.

Karena kinerja dan skalabilitasnya, Nginx sering digunakan sebagai proxy terbalik untuk server HTTP dan non-HTTP. Konfigurasi Reverse Proxy yang umum dan paling sering diimplementasikan adalah menempatkan Nginx di depan aplikasi NodeJs, Pyhthon atau Java, dan yang akan kita implementasikan adalah NodeJS, nah kali ini saya akan mengimplementasikan cara setting load balancer with nginx dan node servers nya saya menggunakan NodeJS.

Metode Load Balancing sendiri seperti berikut :

  1. Mendelivery traffic ke node atau server secara bergantian
  2. Mendelivery traffic ke node atau server yang paling sedikit di access atau aktif koneksinya
  3. Mendelivery traffic ke node atau server yang sama ketika user mengakses pertamakali dia melakukan request.

Prepare

Disini saya menggunakan beberap service yang di install terlebih dahulu di node load balancer saya :

  • Nginx web server
  • PHP-FPM 7.4
  • Install NodeJS untuk server 1, 2 dan 3
  • Node load balancer : 10.10.10.2
  • Domain: lb.igunawan.com

Dan baca juga materi saya tentang revers proxy menggunakan Nginx di NodeJS klik link ini.

Step by Step Cara Setting Load Balancer With Nginx

Step 1 – Install Nginx & PHP-FPM

  • Install Nginx di server kalian klik link ini untuk melihat artikel saya tentang cara install Nginx.
  • Install PHP-FPM yang saya gunakan adalah versi 7.4
$ sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4-fpm
sudo php-fpm7.4 -v
  • Jangan lupa denpedencynya
$ sudo apt install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl php7.4-bcmath -y

Step 2 – Clone Repository

Nah disini saya sudah menyiapkan repository server yang bisa kalian install dengan merunning nodejsya, untuk repositorynya bisa di clone dibawah ini :

https://github.com/gunawan-d/node-servers.git

Yang nantinya akan ada beberapa file seperti ecosystem file dan juga node server menggunakan nodejs seperti gambar dibawah ini.

Step 3 – Start node server

Karena disini saya menggunakan nodejs sebagai node serversnya maka kita jalan kan dahulu nodenya :

Command ” pm2 start ecosystem.config.js ” karena saya menggunakan ecosystem file di PM2, jika kalian belum paham tentang nodejs dan pm2, maka bisa check artikel sebelumnya yang dimana saya membahas tentang nodejs dan juga PM2 https://igunawan.com/apa-itu-pm2/

$ pm2 start ecosystem.config.js
[PM2][WARN] Applications server1, server2, server3 not running, starting...
[PM2] App [server1] launched (1 instances)
[PM2] App [server2] launched (1 instances)
[PM2] App [server3] launched (1 instances)
┌─────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name       │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ server1    │ default     │ N/A     │ fork    │ 123626   │ 0s     │ 0    │ online    │ 0%       │ 31.6mb   │ root     │ enabled  │
│ 1   │ server2    │ default     │ N/A     │ fork    │ 123627   │ 0s     │ 0    │ online    │ 0%       │ 31.4mb   │ root     │ enabled  │
│ 2   │ server3    │ default     │ N/A     │ fork    │ 123639   │ 0s     │ 0    │ online    │ 0%       │ 29.5mb   │ root     │ enabled  │
└─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

3 server node server kita sudah running

Step 4 – Create Virtual Host

Create server block configuration / biasa di bilang Vhost conf nya, untuk Vhostnya sendiri isinya seperti berikut :

upstream servers {
        server 192.168.1.2:3001;
        server 192.168.2.2:3002;
        server 192.168.3.2:3003;

}

server {
  listen 80;
  listen [::]:80;

  location / {
      proxy_pass http://servers;
  }
}

Penjelasanya :

Step 5 – Restart Load Balancer & Testing Access

Setelah kita sudah selesai menjalankan node js, kemudian juga sudah melakukan konfigurasi di Nginxnya untuk melakukan load balancing, selanjutnya restart load balancernya dalam hal ini Nginx kemudian testing access websitenya menggunakan IP / Domain yang sudah kita pointing.

  • Nginx -t & reload nginx
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  • Reload Nginx
$ sudo systemctl reload nginx

  • Testing Access 1 “node server 1”
  • Testing Access 2 “node server 2”
  • Testing Access 3 “node server 3”

Nah dari sini kita bisa lihat fungsi dari load balancer adalah untuk memilah dan memilih atau mengatur jalur distribusi antar masing-masing node server, sehingga traffic yang di kirim dan di terima oleh server maupun user ter delivery dengan teratur dan lebih efisien.

Thanks, selamat mencoba.

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *