NGINX adalah salah satu software dengan sifat open source dengan menyediakan beberapa layanan servis, antara lain: penyedia layanan website, reverse proxy, load balancing, penyedia layanan streaming, dan banyak servis yang lain. Selain menyediakan servis pada jaringan, NGINX juga menyediakan layanan server email dan mendukung protocol IMAP, POP3 dan SMTP. Jika kita bekerja dengan bersinggungan pada banyak server, maka kita membutuhkan sebuah layanan yang dapan membagi rata beban ke semua server. Jika kita mempunyai n buah server, maka secara statistika diharapkan beban ke semua n-server tersebut adalah sama rata. Kita tidak ingin mengalami adanya ketimpangan distribusi beban dari server-server tersebut.

 

Salah satu fitur yang dapat kita manfaatkan pada NGINX adalah fitur load balancing. Untuk dapat melakukan load balancing kita memerlukan server, atau virtual machine dengan jumlah minimal adalah 2. Hal ini dikarenakan dibutuhkan minimal 1 buah server sebagai node master dan 1 buah server sebagai node slave. Selain dapat melakukan distribusi beban kinerja kepada beberapa server, NGINX juga dapat melakukan load balancing kepada servis HTTP, TCP hingga UDP. NGINX menawarkan beberapa algoritma load balancing yang dapat disesuaikan dengan kebutuhan pengguna, algoritma tersebut antara lain:

  1. Round robin, jika kita memilih algoritma ini maka distribusi beban akan didistribusikan sesuai dengan urutan nomer dari server. Jika kita memiliki 5 buah node slave, maka urutannya adalah dari node pertama, kemudian node kedua, dan seterusnya sampai node ke lima. Setelah node kelima menerima beban, maka akan diulang kembali dari node ke satu.
  2. Least-connected, jika RR akan mendistribusikan berdasarkan nomer dan urutan server, maka least-connected akan melakukan prioritas pembagian dari beban kinerja yang paling rendah. Node master akan mencatat semua beban dan kinerja dari semua node slave, dan akan melakukan prioritas dari beban yang paling rendah. Sehingga diharapkan tidak ada server dengan beban yang rendah.
  3. IP-hash, agak berbeda dengan kedua algoritma di atas, algoritma ini akan melakukan hash berdasarkan request dari pengguna (menggunakan alamat IP dari pengguna). Sehingga server akan selalu menerima request dari alamat IP yang berbeda.