Load Balancer Pertama Saya
Dalam memenuhi aspek High Availability, suatu website harus dapat bekerja dengan baik dan optimal meskipun ada banyak pengunjung yang mengakses halaman website pada satu waktu yang sama. Bayangkan apabila suatu situs e-commerce hanya menggunakan satu buah web server ketika melayani puluhan atau bahkan ratusan ribu penggunanya di hari belanja online nasional, tentunya beban trafik yang diterima akan overload dan menimbulkan gangguan pada situs tersebut.
Permasalahan ini dapat ditangani dengan melakukan Load Balancing, yakni suatu teknik untuk mendistribusikan beban trafik pada dua atau lebih jalur koneksi secara merata. Pada artikel kali ini, saya akan membagikan pengalaman pertama saya dalam menerapkan load balancing, untuk pelaksanaannya saya menggunakan nginx sebagai load balancer.
Mengunduh nginx
Terdapat berbagai macam load balancer yang dapat digunakan, mulai dari nginx, Apache, Tomcat, HAProxy, dan lain sebagainya. Pada kesempatan kali ini saya memilih untuk menggunakan nginx, saya mengunduh stable version yang sesuai dengan operating system saya yakni Windows.
Mengatur konfigurasi pada nginx
Setelah proses pengunduhan selesai, saya melakukan extract ke direktori yang saya inginkan. Kemudian saya membuka folder tersebut dan masuk ke folder conf.
Di dalam folder conf terdapat berbagai macam file, untuk mengubah konfigurasi pada load balancer nginx, buka file nginx.conf.
Dikarenakan saya akan menguji coba penerapan load balancing di localhost dengan menggunakan project django, saya merubah konfigurasi nginx menjadi seperti ini. Saya melakukan uji coba sederhana untuk memastikan halaman web yang saya buat dapat membagi trafik di dua server berbeda secara merata, yakin pada port 8000 dan 9000.
Menyiapkan halaman web
Saya mempersiapkan halaman web sederhana yang akan menampilkan jenis port yang digunakan ketika halaman tersebut di akses. Sebelumnya saya telah membuat file html dan views.py sebagai berikut.
Menjalankan nginx
Untuk mengaktifkan nginx, buka terminal pada folder nginx yang didalamnya terdapat file nginx, ketik “start nginx” kemudian tekan tombol enter. Apabila melakukan perubahan konfigurasi nginx, terlebih dahulu menjalankan “nginx -s reload”.
Kemudian saya melakukan runserver pada project django dengan dua terminal berbeda. Pada terminal pertama saya menjalankan “python manage.py runserver 8000” dan “python manage.py runserver 9000” pada terminal kedua. Setelahnya saya mengakses url localhost yang menampilkan halaman web yang telah dibuat sebelumnya.
Hasil uji load balancing
Untuk menguji apakah halaman web tersebut melakukan pembagian beban trafik di dua server secara merata, saya mencoba me-refresh halaman website secara berulang kali. Hasilnya terlihat pada halaman yang ditampilkan dan pada informasi di terminal, pada halaman tertulis port yang digunakan berubah dari 8000 menjadi 9000 dan sebaliknya, juga pada terminal terlihat perintah “GET” dijalankan oleh kedua server secara bergantian.
Selain berfungsi untuk membagi rata beban trafik yang diterima server, dengan adanya load balancing juga membuat halaman web tetap dapat diakses dan berfungsi meskipun salah satu server dimatikan. Seperti contoh berikut, ketika server dengan port 8000 dimatikan halaman web tetap dapat diakses dengan menggunakan port 9000, begitupun sebaliknya.
Demikian sedikit pengalaman yang dapat saya bagikan, semoga bermanfaat!