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

/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

/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

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store