High Availability on NGINX

Gilang Virga Perdana
3 min readNov 28, 2021

Pernahkah kalian membayangkan bagaimana kerja webserver saat di production? Yap, dengan banyaknya permintaan user dalam satu waktu, memungkinkan akan membuat node bekerja keras dan resource pun akan habis yang mengakibatkan webserver pada suatu node akan down, saat webserver down maka aplikasi tidak bisa diakses. Hal ini ada yang dinamakan High Availability singkatnya, saat suatu node yang dituju sedang penuh atau workload tinggi, maka webserver akan mereverse ke alamat lain a.k.a webserver/node lain untuk membantu penyediaan serving aplikasi kita ke user. Pada artikel kali ini kita akan mencoba untuk sedikit mencoba tentang High Availability pada Nginx dengan bantuan Keep Alived.

Topology :

Environment :

1. Nginx

2. 2x Ubuntu Server 21.04

3. Some IP Pool for VIP

Praktik :

[Lakukan di setiap Node]

1. Instalasi Nginx sebagai Web Server :

$ apt update$ sudo apt install -y nginx

2. Custom HTML :

Untuk membuktikan HA nantinya, kita akan membuat 2file index yang berbeda.

$ echo “<h1>This is NGINX Web Server from Node 1</h1>” | sudo tee /var/www/html/index.html$ echo “<h1>This is NGINX Web Server from Node 2</h1>” | sudo tee /var/www/html/index.html

3. Instalasi Keep Alived :

$ apt install -y keepalived

[Lakukan pada Nginx1]

4. Backup Konfigurasi Keep Alived :

$ sudo vi /etc/keepalived/keepalived.conf

5. Buat Konfigurasi untuk Cek Nginx Service :

Konfigurasi ini akan check saat Nginx pada suatu node bermasalah, yang nantinya jika betul bermasalah trafik yang datang akan dialihkan ke node backup.

$ sudo nano /bin/check_nginx.sh

Isi dengan :

Lalu berikkan permission :

$ sudo chmod 755 /bin/check_nginx.sh

6. Distribusikan Konfigurasi ke Node Backup :

$ scp /etc/keepalived/keepalived.conf root@192.168.56.154:/etc/keepalived/$ scp /bin/check_nginx.sh root@192.168.56.154:/bin/

[Lakukan pada Node Backup]

7. Konfigurasi Keepalived :

Setelah kita lakukan distribusi konfigurasi Nginx dan KeepAlived, sekarang saatnya modifikasi beberapa konfigurasi untuk node Backup.

$ sudo nano /etc/ keepalived/keepalived.conf

Rubah state menjadi BACKUP

Rubah priority menjadi 100

Menjadi seperti ini :

[Lakukan di Setiap Node]

8. Start KeepAlived Service :

$ sudo systemctl start keepalived
$ sudo systemctl enable keepalived
$ sudo systemctl status keepalived

9. Verifikasi IP :

$ ip add show

Lihat “global secondary enp0s8”

10. Testing :

Silahkan akses VIP yang sudah kita tentukan, yaitu di 192.168.56.155 pada Web Browser.

Baiklah, sudah bisa diakses. Yaitu menuju ke node Master sesuai dengan yang kita setting. Sekarang, kita akan coba matikan Service Nginx pada Node Master untuk membuktikan HA.

$ sudo systemctl stop nginx (pada Node Master)$ ip add show (pada Node Nginx2)

Baik, Node Backup (Nginx2) sudah mendapatkan VIP yang sama juga, sekarang kita akses.

Yap, sudah berhasil. Ini tandanya trafik akan ter-forward ke Node Backup (disini Nginx2) dengan bukti bahwa akses yang diberikan adalah index.html pada nginx2. Berikut adalah konsep dari High Availability sendiri, semoga dengan konsep dasar ini dapat membuat kita memahami lebih baik lagi.

Sekian, terima kasih.

--

--