Implementasi Load Balancer Menggunakan NGINX dalam DJANGO

Salah satu komponen penting di dalam website adalah web server. Web server memiliki fungsi yaitu sebagai penerima request dari browser yang kemudian memberikan tanggapan dengan mengirimkan halaman situs web dalam bentuk dokumen HTML. NGINX adalah web server yang open source dan cukup populer saat ini. NGINX hanya berfungsi sebagai HTTP web serving saja pada awalnya. Namun, seiring berkembangnya teknologi, NGINX mampu melakukan reverse proxy, HTTP load balancer, dan email proxy untuk IMAP, POP3, dan SMTP. Selain itu, NGINX juga mampu berjalan di berbagai sistem operasi, seperti di Linux, Mac OS X, HP-UX, BSD Varian, dan Solaris.

Pada story kali ini, saya akan menjelaskan langkah-langkah mudah bagaimana cara menginstalasi, menggunakan, dan mengkonfigurasi NGINX sebagai Load Balancer. Sebelumnya, karena saya adalah pengguna Mac OS, untuk teman-teman yang menggunakan windows bisa mempelajari proses instalasi NGINX di https://www.vasos-koupparis.com/nginx-getting-started-install/.

Instalasi

Pertama-tama, kita harus menginstall NGINX, dengan cara menginstall Homebrew terlebih dahulu.

/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Lalu, pastikan Homebrew telah di update atau lakukan saja update dengan cara:

$ brew update

Selanjutnya, install NGINX. Jika sudah, lakukan start NGINX.

$ brew install nginx

$ sudo brew services start nginx

Jika sudah, kita bisa mengaksesnya di browser dengan mengetik localhost. Jika berhasil, laman tersebut akan memunculkan:

Konfigurasi

Setelah NGINX, kita perlu melakukan konfigurasi di file nginx.conf yaitu dengan melakukan pencarian folder nginx di Finder dan membukanya di text editor seperti contohnya yang saya gunakan adalah Visual Studio Code. Jika folder nginx tidak dapat ditemukan di Finder, teman-teman bisa membuka finder lalu ketik Command + Shift + G, lalu paste path ini:

/usr/local/etc/nginx

Jika sudah bisa buka folder nginx, buka file nginx.conf di text editor, maka akan muncul seperti dibawah:

Sekarang, kita perlu edit nginx.conf tersebut sama seperti snippet code yang saya berikan dibawah ini.

Untuk upstream localhost, saya membuat 2 port server, yaitu 8000 dan 9000 sebagai contoh implementasi load balancer. Tujuannya juga adalah jika salah satu server terjadi down, maka website akan tetap berjalan menggunakan server yang lainnya. Jika code nginx.conf sudah di edit kita perlu melakukan reload NGINX dengan cara membuka terminal, lalu paste:

/usr/local/Cellar/nginx/1.17.3_1/bin

lalu melakukan reload dengan cara:

$ sudo nginx -s reload

tujuan reload adalah agar NGINX mendeteksi perubahan yang terjadi di nginx.conf. Sehingga NGINX bisa dijalankan.

Test Fungsional

Setelah kedua langkah diatas dilakukan, kita akan melakukan cek apakah code nginx.conf yang sudah kita edit bisa berjalan sebagai load balancer. Cara melakukan ceknya adalah dengan cara membuka 2 terminal yang letaknya berada di project django yang sama, lalu setiap terminal menjalankan masing-masing command yaitu:

python3 manage.py runserver 8000

python3 manage.py runserver 9000

Setelah itu, saya akan membuka lagi localhost di browser seperti ini:

Pada saat saya melakukan refresh, maka terminal akan memunculkan info seperti:

Screenshots menunjukkan bahwa NGINX membagi setiap activity ke port yang berbeda ketika di port 8000, terjadi GET static/image/logo, sedangkan di port 9000, terjadi GET static/css.

Ketika saya terminate salah satu terminal, localhost akan tetap berjalan:

Screenshot menunjukkan bahwa saya melakukan terminate port 8000 dan localhost tetap berjalan meski salah satu server telah di terminate.

Sehingga, dapat dikatakan Load Balancer yang kita buat telah berfungsi dan berjalan sebagaimana mestinya. Kira-kira, itulah langkah-langkah menggunakan NGINX sebagai load balancer dalam Django.

Usualize the Unusualize

Usualize the Unusualize