Cara Setting Load Balancing dengan Nginx di Ubuntu dan AlmaLinux

Pengantar

Load balancing merupakan teknik penting dalam pengelolaan server modern, terutama untuk website atau aplikasi dengan trafik tinggi. Dengan load balancing, beban akses tidak hanya bergantung pada satu server, melainkan dibagi ke beberapa backend server agar performa tetap stabil dan layanan selalu tersedia.

Pada artikel ini, Plasawebhost akan membahas cara konfigurasi load balancing menggunakan Nginx yang dapat diterapkan di Ubuntu 22.04 / 24.04 maupun AlmaLinux, lengkap dari konsep hingga pengujian.

Pengertian Load Balancing dan Reverse Proxy

Nginx dapat berfungsi sebagai reverse proxy, yaitu server yang menerima permintaan dari client lalu meneruskannya ke server backend.

Manfaat utama reverse proxy:

  • Membagi beban request (load balancing)
  • Meningkatkan performa aplikasi
  • Menyederhanakan manajemen backend
  • Menambah lapisan keamanan
  • Mendukung SSL termination dan caching

Metode Load Balancing di Nginx

Nginx menyediakan beberapa metode load balancing, antara lain:

  • Round Robin
    Membagi request secara merata (default).
  • Least Connections
    Request diarahkan ke server dengan koneksi aktif paling sedikit.
  • IP Hash
    Client dengan IP yang sama akan selalu diarahkan ke server yang sama.
    Metode ini dapat dipilih sesuai dengan kebutuhan aplikasi.

Topologi Server yang Digunakan

  • Sistem Operasi: Ubuntu Server / AlmaLinux
  • Web Server: Nginx
  • Backend Runtime: PHP-FPM
  • Backend Server: 2 atau lebih node
  • Load Balancer: 1 server Nginx
  • Domain: Pastikan domain sudah di pointing ke dalam IP Load Balancer

Instalasi LEMP di Node 1 (Almalinux) dan Node 2 (Ubuntu)

Langkah ini dilakukan di masing-masing backend server

  1. Update Sistem
    • Ubuntu:
      sudo apt update && sudo apt upgrade -y
      
    • AlmaLinux:
      sudo dnf update -y
      
  2. Install Nginx
    • Ubuntu:

      sudo apt install nginx -y
      
    • Almalinux
      sudo dnf install nginx -y
      
    • Aktifkan service:
      sudo systemctl enable --now nginx
      
  3. Install PHP dan PHP-FPM
    • Ubuntu
      sudo apt install php php-fpm php-mysql -y
      
    • Almalinux
      sudo dnf install php php-fpm php-mysqlnd -y
      
    • Aktifkan PHP-FPM
      sudo systemctl enable --now php-fpm
      
  4. Install Database Server
    1. Ubuntu
      sudo apt install mysql-server -y
      
    2. Almalinux
      sudo dnf install mariadb-server -y
      
  5. Konfigurasi Virtual Host Backend (Node 1 & Node 2)
    1. Membuat Direktori Website
      sudo mkdir -p /var/www/domainanda.com
      
    2. Membuat File index.php
      • Node 1
      • Node 2
    3. Konfigurasi Server Block Nginx
      • Masukkan perintah berikut
        sudo nano /etc/nginx/conf.d/domainanda.com.conf
        
      • Isi konfigurasi berikut:
        server {
            listen 80;
            server_name domainanda.com;
        
            root /var/www/domainanda.com;
            index index.php index.html;
        
            location / {
                try_files $uri $uri/ /index.php?$query_string;
            }
        
            location ~ \.php$ {
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass unix:/var/run/php/php-fpm.sock;
            }
        }
        
        Untuk AlmaLinux, ganti socket PHP-FPM menjadi:
        fastcgi_pass unix:/run/php-fpm/www.sock;
        
      • Uji dan restart Nginx:

        sudo nginx -t
        sudo systemctl restart nginx
        

Instalasi Nginx di Load Balancer

Lakukan di server Load Balancer.

  1. Install Nginx
    • Ubuntu :
      sudo apt update
      sudo apt install nginx -y
      
    • Almalinux
      sudo dnf install nginx -y
      
    • Aktifkan Nginx:
      sudo systemctl enable --now nginx
      
  2. Konfigurasi Load Balancing Nginx
    • Membuat File Konfigurasi Load Balancer
      sudo nano /etc/nginx/conf.d/lb-domainanda.com.conf
      
    • Load Balancing Round Robin (Default)
      upstream backend_servers {
          server BACKEND_IP_1;
          server BACKEND_IP_2;
      }
      
      server {
          listen 80;
          server_name domainanda.com;
      
          location / {
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_pass http://backend_servers;
          }
      }
      
    • Least Connections
      upstream backend_servers {
          least_conn;
          server BACKEND_IP_1;
          server BACKEND_IP_2;
      }
      
    • IP Hash
      upstream backend_servers {
          ip_hash;
          server BACKEND_IP_1;
          server BACKEND_IP_2;
      }
      
    • Weighted Load Balancing
      upstream backend_servers {
          server BACKEND_IP_1 weight=3;
          server BACKEND_IP_2 weight=1;
      }
      

Pengujian Load Balancing

Lakukakan pada server Reverse Proxy :

  1. Jalan kan perintah berikut
    sudo nginx -t
    sudo systemctl restart nginx
    
  2. Uji dengan browser atau terminal:
    curl http://domainanda.com
    

    Output :

Kesimpulan

Konfigurasi load balancing menggunakan Nginx merupakan solusi efektif untuk meningkatkan performa dan kestabilan website. Dengan membagi beban ke beberapa backend server, sistem menjadi lebih andal, scalable, dan siap menghadapi lonjakan trafik.


Artikel Lain

WhatsApp Kami

Support : +6282138153600

Admin Finance : +6285191239466