High Availability Nginx Cluster: Arsitektur & Konfigurasi

Membangun High Availability Nginx Cluster memerlukan kombinasi Nginx sebagai reverse proxy dan Keepalived untuk mengelola alamat IP virtual (VIP) melalui protokol VRRP (Virtual Router Redundancy Protocol). Pendekatan ini mengeliminasi titik kegagalan tunggal (single point of failure) pada lapisan gerbang masuk jaringan.

Ketika node Nginx utama mengalami kegagalan sistem atau terputus dari jaringan, Keepalived pada node cadangan (backup) akan secara otomatis mengambil alih alamat IP virtual dalam hitungan detik tanpa intervensi manual.

Komponen Arsitektur HA Nginx

Infrastruktur klaster ketersediaan tinggi ini membutuhkan setidaknya dua server mandiri yang berada dalam satu segmen jaringan lokal (LAN) yang sama agar pertukaran paket multicast VRRP berjalan lancar.

Komponen Fungsi Utama Teknologi Terkait
Load Balancer Meneruskan trafik masuk ke server backend Nginx Plus / Open Source
IP Failover Menjaga alamat IP tetap konsisten saat migrasi Keepalived (VRRP)
Health Check Memantau status kesehatan layanan secara berkala Script Custom / Native Keepalived

Langkah Konfigurasi Teknis

1. Instalasi Nginx dan Keepalived

Lakukan instalasi paket pada kedua node (Node Utama dan Node Cadangan) menggunakan manajer paket sistem operasi berbasis Debian atau Ubuntu.

sudo apt update
sudo apt install nginx keepalived -y

2. Konfigurasi Keepalived (Node Utama / Master)

Ubah berkas konfigurasi /etc/keepalived/keepalived.conf pada node utama dengan parameter prioritas lebih tinggi.

vrrp_script check_nginx {
    script "/usr/bin/killall -0 nginx"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass rahasia_cluster
    }
    virtual_ipaddress {
        192.168.1.100
    }
    track_script {
        check_nginx
    }
}

3. Konfigurasi Keepalived (Node Cadangan / Backup)

Pada node kedua, atur status menjadi BACKUP dan berikan nilai prioritas yang lebih rendah daripada node utama.

vrrp_script check_nginx {
    script "/usr/bin/killall -0 nginx"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass rahasia_cluster
    }
    virtual_ipaddress {
        192.168.1.100
    }
    track_script {
        check_nginx
    }
}

Troubleshooting Lapangan

Kendala yang sering terjadi adalah kegagalan pengiriman paket multicast VRRP akibat pengaturan firewall sistem operasi atau perangkat jaringan (switches). Pastikan protokol VRRP (IP protokol 112) dan port yang relevan diizinkan pada iptables atau UFW.

Gunakan utilitas tcpdump untuk memverifikasi apakah paket iklan VRRP antar node saling diterima dengan baik:

sudo tcpdump -nn vrrp -i eth0