Story 10 PPW 2019: Implementasi Load Balancing pada Website yang dibuat dengan Django dengan Menggunakan Nginx.

Krisna Ihsani
5 min readNov 29, 2019

Halo, nama saya Mahardika Krisna Ihsani, mahasiswa Fasilkom UI semester 3 (1806141284) dari kelas PPW B. Di sini saya ingin menceritakan apa itu load balancing dalam membuat website & apa manfaatnya, serta bagaimana saya mengimplementasikan load website yang saya buat untuk story 10 dengan menggunakan Nginx. Di tutorial kali ini, saya menggunakan OS Windows serta Nginx sebagai medium balancer.

Pertama-tama apa itu load balancing? Banyak website yang kita ketahui meng-handle traffic yang cukup tinggi (misalkan google). Jumlah request yang diterima oleh website tersebut tidak hanya ratusan, bahkan hingga jutaan atau lebih. Apabila website tersebut di-host oleh satu server saja, tentu saja website itu akan down karena server tidak dapat menangani request sebanyak dalam waktu yang bersamaan. Oleh karena itu diperlukan server dengan jumlah tidak sedikit untuk meng-host website tersebut. Bagaimanakah cara agar server-server tersebut dapat melayani request yang sangat banyak secara efisien? Lalu apabila salah satu server yang diberi request request, bagaimana menanganinya? Di sinilah, load balancer berperan penting. Load balancer berfungsi untuk mendistribusikan request yang diterima oleh server secara efisien sehingga menimalisir jumlah server yang overload dan juga memastikan server dapat memberikan respons ke client. Load balancer ini juga berfungsi untuk menangani kasus apabila terjadi perubahan pada jumlah server hoster. Apabila terdapat server baru, maka load balancer akan langsung mengirimkan request ke server tersebut. Namun, apabila terdapat pengurangan server, maka load balancer akan mengirimkan request ke server lain yang masih hidup. Algoritma yang digunakan oleh load balancer ada tiga, yaitu:

  • Round robin : Mendistribusikan request secara terurut atau sekuensial. Apabila server yang diminta untuk menerima request ternyata mati, maka request diteruskan ke server selanjutnya.
  • Least Connections: Request yang diterima akan diteruskan ke server dengan jumlah request paling sedikit
  • IP Hash: IP Client digunakan untuk menentukan server mana yang akan menerima request tersebut.

Untuk story 10 ini, saya menggunakan algoritma round robin pada load balancer.

Ilustrasi Cara Kerja Load Balancer (Round Robin)

Setelah introduksi mengenai load balancing, maka di bagian ini, saya akan membahas mengenai implementasi load balancing dengan menggunakan Nginx. Berikut adalah langkah-langkah implementasinya:

1. Mengunduh Nginx for Windows

Langkah pertama adalah mengunduh Nginx for Windows. Anda dapat mengunduhnya di tautan berikut.

Setelah mengunduh, lalu masuk ke direktori yang menyimpan file unduhan tersebut setelah itu extract file nginx. Folder nginx tersebut bernama “nginx-<nama_versi>”. Folder ini berisi konfigurasi dan juga runner untuk menjalankan nginx. Proses instalasi selesai

2. Meng-konfigurasi Nginx

Seperti Saya jelaskan sebelumnya bahwa file untuk mengatur nginx terdapat di folder Nginx yang bernama “nginx.conf” (file disimpan dalam folder yang bernama “conf”). Maka langkah pertama adalah masuk ke folder Nginx dari hasil extract sebelumnya. Langkah selanjutnya membuka file tersebut di file editor.

Lokasi file nginx.conf

Yang perlu kita ubah di sini adalah pada bagian server. Server ini berguna untuk mengatur port mana yang akan digunakan untuk meng-handle request, serta menghubungkan dengan host website kita.

Tampilan awal nginx.conf

Yang perlu dilakukan di sini adalah menghapus semua konten yang termuat dalam bracket di server (kecuali argumen listen). Lalu selanjutnya menambahkan potongan kode berikut di dalam bracket server.

proxy_pass berfungsi untuk mengasssign app “homepage” sebagai proxy. Lalu langkah selanjutnya adalah mendefinisikan alamat port yang digunakan pada app “homepage” dengan menggunakan upstream. Di sini saya menggassign homepage pada localhost dengan port 8000 dan 9000. Upstream tersebut diletakkan di luar bracket server.

Lalu simpan konfigurasi tersebut, dan nginx sudah terkonfigurasi.

3. Membuat webserver

Pada tahap ini saya sudah membuat aplikasi django sederhana. Hal yang dilakukan adalah membuat html yang berisi nama port yang saat ini baru menerima request. Berikut adalah snippet kode pada bagian urls, views, dan index.html

(Dari kiri ke kanan) index.html, views, dan urls.

Sekadar catatan bahwa informasi port yang sedang digunakan tersimpan dalam request.META(“SERVER_PORT”).

4. Tahap Testing

Pertama-tama yang dilakukan adalah dengan masuk ke direktori nginx lalu jalankan perintah berikut melalui cmd

Lalu langkah selanjutnya adalah menyalakan django-server dengan port yang berbeda di terminal. Hal tersebut dilakukan dengan perintah

python manage.py runserver <masukkan_nama_port_disini>

Di sini, Saya menggunakan port 9000 dan 8000. Jika sudah dijalankan, maka website akan menampilkan tampilan seperti ini.

Sebelum di-refresh
Setelah di-refresh

Voila! Anda sudah mengimplementasikan load balancing pada django.

Mudah-mudahan blog ini dapat bermanfaat terutama bagi Anda yang ingin mempelajari web developing. Terima kasih

Reference:

--

--