Products and Features
- Membuka Akses Ping pada IP Public VM Cloud Raya
- Maximize Your Storage Raya Access Speed with Content Delivery Network (CDN)
- How to Create Project Tag in Cloud Raya for More Organized VM Billing Report
- Exporting Cloud Raya VM to outer Cloud Raya's Infrastructure using Acronis Cyber Protect
- SSO Management on Cloud Raya
- Easy Steps to Enable VPC in Cloud Raya
- Using the SSH key Feature in Cloud Raya Dashboard
- Cloud Raya Load Balancer, Solution to Distribute Load Equally
- Create your own VPN server with DNS-Level AdBlocker using PiVPN & PiHole in CloudRaya
- Fix Broken LetsEncrypt SSL Certificate due to Expired Root CA Certificate
- Storage Raya - Cloud Raya S3 Object Storage
- How to Make a Snapshot and Configure VM Backup in Cloud Raya
- How to Request Services or Licenses Products
- Adding, Attaching, and Resize Root Storage Disk in Cloud Raya VPS
- Managing your DNS Zone with DNS Bucket in Cloud Raya
- Create VM, Custom Package, Reinstall VM, and Adjusting Security Profile
- How to backup Linux VM via Acronis in Cloud Raya
- How to Backup Desktop Linux and Windows via Acronis in Cloud Raya
- Backing-Up Cloud Raya Windows VM Using Acronis Cyber Protect
- Load Balancing in Cloud Raya
- Establishing a VPN in Cloud Raya
- Generating an API Token
- Generating an API key
- Deploying a Virtual Machine in Cloud Raya
- Show Remaining Articles ( 9 ) Collapse Articles
- How to backup Linux VM via Acronis in Cloud Raya
- How to Backup Desktop Linux and Windows via Acronis in Cloud Raya
- Integrasi S3 Storage Raya dan Strapi untuk Pengoptimalan Penyimpanan Aset - Bag. 4
- Maximize Your Storage Raya Access Speed with Content Delivery Network (CDN)
- Managing Storage Raya from various tools and from various OS
- Binding NextCloud with Cloud Raya S3 Object Storage as External Storage Mount
- Storage Raya - Cloud Raya S3 Object Storage
- Deploy Cpanel Menggunakan Ubuntu 20.04 di Cloudraya - Bagian 1
- Exporting Cloud Raya VM to outer Cloud Raya's Infrastructure using Acronis Cyber Protect
- Using the SSH key Feature in Cloud Raya Dashboard
- Adding, Attaching, and Resize Root Storage Disk in Cloud Raya VPS
- Create VM, Custom Package, Reinstall VM, and Adjusting Security Profile
- How to backup Linux VM via Acronis in Cloud Raya
- Backing-Up Cloud Raya Windows VM Using Acronis Cyber Protect
- Deploying a Virtual Machine in Cloud Raya
Integration
- Integrasi S3 Storage Raya dan Strapi untuk Pengoptimalan Penyimpanan Aset - Bag. 4
- Integrasi Konten Strapi ke dalam Frontend React - Bag. 3
- Mengelola Konten dalam Strapi Headless CMS - Bag. 2
- Menginstal Strapi Headless CMS di Cloud Raya - Bag. 1
- Panduan Menggunakan SSH Key pada VM Cloud Raya dengan PuTTY
- Menginstal Beberapa Versi PHP dalam Satu VM untuk Pengembangan Web yang Lebih Fleksibel
- Replatforming Apps to K8s with RKE and GitLab CI
- Integrasi API OpenAI: Completions dalam PHP
- Membangun Email Server di Cloud Raya Menggunakan iRedMail
- Meningkatkan Pengiriman Email dengan Sendinblue SMTP Relay
- Bangun Self Hosted Password Manager menggunakan Passbolt
- How to Install Podman on Almalinux/Rocky Linux 9
- ElkarBackup: GUI Based backup Tools based on Rsync and Rsnapshot
- Meningkatkan Kinerja Webserver dengan SSL Termination pada NGINX Load Balancer
- Menggunakan NGINX sebagai HTTP Load Balancer
- Otomatisasi Task dengan Cronjob
- Upgrade Zimbra and the OS Version
- Deploy Mailu on Rancher Kubernetes
- Export dan Import Database di MySQL atau MariaDB Menggunakan Mysqldump
- Backup & Sync Local and Remote Directories Using RSYNC
- Managing Storage Raya from various tools and from various OS
- Binding NextCloud with Cloud Raya S3 Object Storage as External Storage Mount
- Simple monitoring and alerting with Monit on Ubuntu 22.04 LTS
- VS Code on your browser! How to install code-server on a VM
- Implementing Redis HA and Auto-Failover on Cloud Raya
- Using XFCE Desktop Environment on Cloud Raya VM
- Installing Python 3.7-3.9 on Ubuntu 22.04 Jammy LTS using PPA
- Implementing Continuous Integration with Gitlab CI and Continuous Delivery with Rancher Fleet
- Using Collabora Online on Cloud Raya NextCloud's VM
- Installing NextCloud in Cloud Raya- Detail Steps from the Beginning to the Very End
- Set Up High Availability PostgreSQL Cluster Using Patroni on Cloud Raya
- Set Up WAF KEMP in Cloud Raya Part 2
- Set Up WAF KEMP in Cloud Raya Part 1
- Using the SSH key Feature in Cloud Raya Dashboard
- Monitor Your Services Uptime Using Uptime Kuma
- Hosting Static Website with Hugo on Cloud Raya
- Kubernetes Ingress Controller using SSL in CloudRaya
- Reverse Proxy management using Nginx Proxy Manager
- Create your own VPN server with DNS-Level AdBlocker using PiVPN & PiHole in CloudRaya
- How to deploy Portainer on Linux to easily manage your docker containers
- High Availability Kubernetes Using RKE in Cloud Raya Part 3
- High Availability Kubernetes Using RKE in Cloud Raya Part 2
- High Availability Kubernetes Using RKE in Cloud Raya Part 1
- How to backup Linux VM via Acronis in Cloud Raya
- How to Backup Desktop Linux and Windows via Acronis in Cloud Raya
- Deploying Magento on Cloud Raya
- How to Install Nextcloud on Cloud Raya
- How to Install CWP in Cloud Raya
- How to Install Node.js and Launch Your First Node App
- How to install and secure MariaDB on Ubuntu 18.04 and 20.04 on Cloud Raya
- How to Install and Securing MongoDB on Ubuntu 18.04 and 20.04
- Classes: Post Installation on Ansible
- Classes: Install and Configure Ansible
- Classes: Introduction to Ansible for a robust Configuration Management
- How to Setup Active Directory Domain Service & DNS with Cloud Raya
- How to Host Your Own Docker Hub in Cloud Raya
- How to Setup Your Own Laravel with Nginx in Ubuntu 18.04
- How to Deploy Container in Cloud Raya using Docker
- Securing CentOS with iptables
- Install and Configure Squid Proxy in Ubuntu
- Installing Apache and Tomcat: A Quick Way
- Securing Ubuntu with UFW
- Install a Node.js and Launch a Node App on Ubuntu 18.04
- Installing LAMP in Ubuntu
- Installing LEMP Stack on Ubuntu 18.04
- Show Remaining Articles ( 50 ) Collapse Articles
- Articles coming soon
- Deploy Cpanel Menggunakan Ubuntu 20.04 di Cloudraya - Bagian 1
- Integrasi S3 Storage Raya dan Strapi untuk Pengoptimalan Penyimpanan Aset - Bag. 4
- Integrasi Konten Strapi ke dalam Frontend React - Bag. 3
- Mengelola Konten dalam Strapi Headless CMS - Bag. 2
- Menginstal Strapi Headless CMS di Cloud Raya - Bag. 1
- Panduan Menggunakan SSH Key pada VM Cloud Raya dengan PuTTY
- Membangun Email Server di Cloud Raya Menggunakan iRedMail
- Meningkatkan Pengiriman Email dengan Sendinblue SMTP Relay
- Bangun Self Hosted Password Manager menggunakan Passbolt
- ElkarBackup: GUI Based backup Tools based on Rsync and Rsnapshot
- Meningkatkan Kinerja Webserver dengan SSL Termination pada NGINX Load Balancer
- Menggunakan NGINX sebagai HTTP Load Balancer
- Upgrade Zimbra and the OS Version
- Deploy Mailu on Rancher Kubernetes
- Managing Storage Raya from various tools and from various OS
- Binding NextCloud with Cloud Raya S3 Object Storage as External Storage Mount
- Simple monitoring and alerting with Monit on Ubuntu 22.04 LTS
- VS Code on your browser! How to install code-server on a VM
- Implementing Redis HA and Auto-Failover on Cloud Raya
- Using XFCE Desktop Environment on Cloud Raya VM
- Implementing Continuous Integration with Gitlab CI and Continuous Delivery with Rancher Fleet
- Using Collabora Online on Cloud Raya NextCloud's VM
- Installing NextCloud in Cloud Raya- Detail Steps from the Beginning to the Very End
- Set Up WAF KEMP in Cloud Raya Part 2
- Set Up WAF KEMP in Cloud Raya Part 1
- Monitor Your Services Uptime Using Uptime Kuma
- Create your own VPN server with DNS-Level AdBlocker using PiVPN & PiHole in CloudRaya
- How to deploy Portainer on Linux to easily manage your docker containers
- High Availability Kubernetes Using RKE in Cloud Raya Part 3
- High Availability Kubernetes Using RKE in Cloud Raya Part 2
- High Availability Kubernetes Using RKE in Cloud Raya Part 1
- How to Install Nextcloud on Cloud Raya
- Classes: Post Installation on Ansible
- Classes: Install and Configure Ansible
- Classes: Introduction to Ansible for a robust Configuration Management
- Connect Windows Active Directory on Cloud Raya with Azure AD
- How to Host Your Own Docker Hub in Cloud Raya
- How to Deploy Container in Cloud Raya using Docker
- Show Remaining Articles ( 23 ) Collapse Articles
- Integrasi S3 Storage Raya dan Strapi untuk Pengoptimalan Penyimpanan Aset - Bag. 4
- Integrasi Konten Strapi ke dalam Frontend React - Bag. 3
- Mengelola Konten dalam Strapi Headless CMS - Bag. 2
- Menginstal Strapi Headless CMS di Cloud Raya - Bag. 1
- Integrasi API OpenAI untuk Membangun Chatbot Interaktif dalam Proyek PHP
- Menginstal Beberapa Versi PHP dalam Satu VM untuk Pengembangan Web yang Lebih Fleksibel
- Integrasi API OpenAI: Completions dalam PHP
- Meningkatkan Kinerja Webserver dengan SSL Termination pada NGINX Load Balancer
- Menggunakan NGINX sebagai HTTP Load Balancer
- Otomatisasi Task dengan Cronjob
- How to Deploy Django App on Cloud Raya VM Using Gunicorn, Supervisor, and Nginx
- How to Install Node.js and Launch Your First Node App
- How to Setup Your Own Laravel with Nginx in Ubuntu 18.04
- Install a Node.js and Launch a Node App on Ubuntu 18.04
- Panduan Menggunakan SSH Key pada VM Cloud Raya dengan PuTTY
- Bangun Self Hosted Password Manager menggunakan Passbolt
- Meningkatkan Kinerja Webserver dengan SSL Termination pada NGINX Load Balancer
- Export dan Import Database di MySQL atau MariaDB Menggunakan Mysqldump
- Backup & Sync Local and Remote Directories Using RSYNC
- How to Deploy Django App on Cloud Raya VM Using Gunicorn, Supervisor, and Nginx
- Set Up WAF KEMP in Cloud Raya Part 2
- Set Up WAF KEMP in Cloud Raya Part 1
- Using the SSH key Feature in Cloud Raya Dashboard
- How to backup Linux VM via Acronis in Cloud Raya
- How to Backup Desktop Linux and Windows via Acronis in Cloud Raya
- Securing CentOS with iptables
- Securing Ubuntu with UFW
- Deploy Cpanel Menggunakan Ubuntu 20.04 di Cloudraya - Bagian 1
- Integrasi S3 Storage Raya dan Strapi untuk Pengoptimalan Penyimpanan Aset - Bag. 4
- Integrasi Konten Strapi ke dalam Frontend React - Bag. 3
- Mengelola Konten dalam Strapi Headless CMS - Bag. 2
- Menginstal Strapi Headless CMS di Cloud Raya - Bag. 1
- Integrasi API OpenAI untuk Membangun Chatbot Interaktif dalam Proyek PHP
- Menginstal Beberapa Versi PHP dalam Satu VM untuk Pengembangan Web yang Lebih Fleksibel
- Membangun Email Server di Cloud Raya Menggunakan iRedMail
- Bangun Self Hosted Password Manager menggunakan Passbolt
- Meningkatkan Kinerja Webserver dengan SSL Termination pada NGINX Load Balancer
- Menggunakan NGINX sebagai HTTP Load Balancer
- Installing Python 3.7-3.9 on Ubuntu 22.04 Jammy LTS using PPA
- Reverse Proxy management using Nginx Proxy Manager
- Install and Configure Squid Proxy in Ubuntu
- Installing Apache and Tomcat: A Quick Way
- Installing LAMP in Ubuntu
- Installing LEMP Stack on Ubuntu 18.04
- Show Remaining Articles ( 2 ) Collapse Articles
- Integrasi S3 Storage Raya dan Strapi untuk Pengoptimalan Penyimpanan Aset - Bag. 4
- Integrasi Konten Strapi ke dalam Frontend React - Bag. 3
- Mengelola Konten dalam Strapi Headless CMS - Bag. 2
- Menginstal Strapi Headless CMS di Cloud Raya - Bag. 1
- Integrasi API OpenAI untuk Membangun Chatbot Interaktif dalam Proyek PHP
- Menginstal Beberapa Versi PHP dalam Satu VM untuk Pengembangan Web yang Lebih Fleksibel
- Integrasi API OpenAI: Completions dalam PHP
- Hosting Static Website with Hugo on Cloud Raya
- Deploying Magento on Cloud Raya
- How to Install CWP in Cloud Raya
- How to Setup Active Directory Domain Service & DNS with Cloud Raya
Menggunakan NGINX sebagai HTTP Load Balancer
NGINX adalah software open-source multifungsi yang dapat berperan sebagai web server, reverse proxy, dan HTTP load balancer. NGINX memiliki performa yang cepat dan efisien, serta mampu mengelola ribuan koneksi secara bersamaan dengan menggunakan sumber daya server yang tergolong sedikit.
Selain itu, NGINX juga memiliki fitur-fitur keamanan dan skalabilitas yang membuatnya menjadi favorit di kalangan Developer dan System Administrator. NGINX juga sangat fleksibel dan mudah disesuaikan dengan banyak teknologi dan application-stack.
Dalam artikel ini kita akan membahas NGINX sebagai HTTP load balancer.
- Apa itu Load Balancer?
- Load Balancer Cloud Raya
- NGINX sebagai HTTP Load Balancer
- Instalasi Cepat NGINX
- Mengkonfigurasi Server Block NGINX
- Kumpulan Opsi pada NGINX Load Balancer
- Kesimpulan
Apa itu Load Balancer?

Load balancer merupakan komponen penting dari setiap situs web atau aplikasi web yang memiliki volume lalu lintas tinggi. Dengan membagi permintaan di antara beberapa server, Load Balancer dapat mencegah terjadinya kelebihan beban pada satu server yang dapat membuat situs web menjadi lambat atau bahkan tidak berfungsi sama sekali. Dengan penggunaan Load Balancer, situs web dapat tetap responsif dan tersedia untuk pengguna setiap saat.
Load Balancer Cloud Raya
Cloud Raya sebenarnya juga telah dilengkapi dengan load balancer. Untuk informasi lebih lanjut mengenai load balancer dari Cloud Raya dan metode-metode load balancing yang dimilikinya, dapat Anda temukan pada Knowledge Base berikut.
Namun demikian, perlu diketahui bahwa load balancer dari Cloud Raya saat ini belum mendukung SSL termination, dikarenakan operasinya berada pada OSI layer 4. Jika salah satu pertimbangan Anda adalah terkait kebutuhan SSL termination pada load balancer, ayo kita lanjut ke poin berikutnya.
NGINX sebagai HTTP Load Balancer
Selain berfungsi sebagai web server, salah satu fitur terbaik dari NGINX adalah kemampuannya untuk berfungsi sebagai HTTP load balancer yang sudah berjalan pada OSI layer 7.
Akan ada modul “upstream” yang akan kita ketahui bersama di poin berikutnya, di mana modul ini berguna untuk menentukan grup web server yang menerima request dan juga sebagai tempat untuk deklarasi metode load balancer yang kita inginkan.
Grup web server tersebut bisa berada pada satu fisik yang sama atau berada pada beberapa server, baik dalam satu data center yang sama atau di lokasi yang berbeda di seluruh dunia.
Instalasi Cepat NGINX
Sebelum mengonfigurasi NGINX load balancer, Anda harus terlebih dahulu memasang NGINX pada VM Anda. Anda dapat menginstalnya menggunakan perintah berikut:
# apt-get install nginx
Mengkonfigurasi Server Block NGINX
Sekarang edit server block kita untuk mulai mengkonfigurasi load balancer NGINX.
Default Server Block dari NGINX adalah berada di:
/etc/nginx/sites-available/default
Namun bisa Anda sesuaikan kembali apabila Anda sempat custom lokasi server blocknya, seperti di sini contohnya saya akan membuka konfigurasi server block saya pada lokasi berikut:
/etc/nginx/sites-available/default
Sekarang kita mulai dengan konfigurasi load balancer yang simple. Konfigurasi server block berikut akan mengproxykan lalu lintas HTTP (port 80) dan meneruskannya secara round-robin ke kumpulan upstream backend yang bernama “my-webserver” dengan isinya yaitu web-server1 dan web-server2. Konfigurasi ini akan membuat koneksi HTTP yang baru di setiap prosesnya.
upstream my-webserver {
server 10.10.100.9 ; #web-server1
server 10.10.100.10 ; #web-server2
}
server {
listen 80;
location / {
proxy_pass http://my-webserver;
}
}
Kumpulan Opsi pada NGINX Load Balancer
Ada juga koleksi opsi lanjutan yang dapat kita atur untuk keperluan yang lebih detail. Opsi tersebut antara lain adalah :
- Metode Load Balancing
- Round Robin – default method
- Least Connections
- Least time (NGINX Plus)
- Hash
- IP Hash
- Random
- Server Weights
- HTTP Load Balancer Health Check (NGINX Open Source & NGINX Plus)
- Server Slow Start (NGINX Plus)
- TCP and UDP Load Balancing (NGINX Plus)
- Enabling Session Persistence (NGINX Plus)
- Connection Limiting (NGINX Plus), dll
Dari beberapa opsi tersebut, ada yang merupakan fitur basic namun menjadi lebih lengkap dengan bantuan NGINX Plus, ada juga fitur yang eksklusif hanya ada di NGINX Plus.
Untuk NGINX Plus sendiri dijual dalam bentuk software subscription. Untuk info lebih lengkapnya, bisa Anda cek pada NGINX Plus Product Page.
Sementara pada tutorial ini kita bahas terlebih dahulu penjelasan dan konfigurasi untuk NGINX Open Source.
1. Metode Load Balancing
NGINX mendukung beberapa metode load balancing dengan kelebihan dan kelemahan masing-masing, penting pilih metode yang sesuai dengan use case Anda.
▶️ Round Robin
Round Robin merupakan default method yang akan digunakan jika parameter pada konfigurasi server block tidak ditentukan. Metode ini membagi permintaan ke server secara bergiliran, sehingga setiap server menerima permintaan dengan jumlah yang sama.
upstream my-webserver {
server 10.10.100.9 ; #web-server1
server 10.10.100.10 ; #web-server2
}
▶️ Least Connection
Metode Least Connection akan memilih server dari grup upstream backend yang memiliki koneksi aktif dari pengakses paling sedikit, untuk mengoptimalkan penggunaan resources dan menghindari overload pada salah satu server.
Namun dibalik kelebihan tersebut, kekurangan dari metode ini adalah tidak mempertimbangkan kapasitas & kecepatan masing-masing server dan besaran beban akses di tiap koneksi.
Contoh gampangnya, semisal backend node A memiliki 70 koneksi aktif (koneksinya ringan-ringan) dan node B memiliki 55 koneksi aktif (koneksinya berat-berat), algoritma least connection akan tetap memilih node B untuk melayani permintaan selanjutnya.
upstream my-webserver {
least_conn;
server 10.10.100.9 ; #web-server1
server 10.10.100.10 ; #web-server2
}
▶️ Hash
Metode Hash akan mendistribusikan request ke upstream backend berdasarkan specified key yang kita tentukan, semisal IP dari pengakses, atau request URL tertentu. Algoritma ini memastikan bahwa klien yang memiliki kriteria yang sama akan selalu diarahkan ke server backend yang sama.
Contoh penggunaan metode hash pada NGINX adalah sebagai berikut:
....
map $request_uri $uri_hash {
default "";
~^/page1 $prefix1;
~^/page2 $prefix2;
}
map $uri_hash $server_prefix {
default "";
$prefix1 backend1;
$prefix2 backend2;
}
upstream my-webserver {
hash $uri_hash$server_prefix consistent;
server backend1.cloudforindonesia.com ; #web-server1
server backend2.cloudforindonesia.com ; #web-server2
}
....
Pada konfigurasi tersebut, kita menambahkan map baru bernama $server_prefix
yang menghasilkan nilai backend1
jika nilai $uri_hash
adalah $prefix1
, dan nilai backend2
jika nilai $uri_hash
adalah $prefix2
. Dalam algoritma hash NGINX pada bagian hash $uri_hash$server_prefix consistent
, nilai $server_prefix
ditambahkan sebagai faktor tambahan untuk menentukan backend server yang sesuai.
Dengan cara ini, algoritma hash Nginx akan memilih backend server yang sesuai berdasarkan nilai $uri_hash
dan $server_prefix
. Misalnya, jika nilai $request_uri
adalah /page2/index.html
, maka nilai $uri_hash
akan menjadi $prefix2
, dan $server_prefix
akan menjadi backend2
. Oleh karena itu, algoritma hash Nginx akan memilih backend server dengan nilai $uri_hash
dan $server_prefix
yang sesuai, yaitu backend2.cloudforindonesia.com
.
Berikut contoh opsi hash lainnya yang bisa kita gunakan:
- “
hash $cookie_cookie_name
“: membuat hash berdasarkan nilai cookie tertentu yang disebut “cookie_name”. - “
hash $http_header_name
“: membuat hash berdasarkan nilai header HTTP tertentu yang disebut “header_name”. - “
hash $ssl_session_id
“: membuat hash berdasarkan ID sesi SSL. - “
hash $variable_name
“: membuat hash berdasarkan nilai variabel NGINX tertentu yang disebut “variable_name”.
▶️ IP Hash
Hash dan IP Hash adalah teknik load balancing yang sama-sama menggunakan nilai hash untuk memilih server backend. Namun, perbedaannya terletak pada kriteria yang digunakan dalam menghasilkan nilai hash.
Jika Hash menggunakan nilai hash dari kriteria yang ditentukan, sedangkan IP Hash menggunakan nilai hash dari alamat IP pengakses. Metode IP Hash melakukan hash pada alamat IP pengakses dengan rumusan tertentu untuk menentukan server backend yang akan menangani request berdasarkan nilai hash tersebut.
upstream my-webserver {
ip_hash;
server 10.10.100.9 ; #web-server1
server 10.10.100.10 ; #web-server2
}
Keuntungan dari metode IP Hash adalah bahwa semua permintaan dari alamat IP yang sama akan selalu diteruskan ke server backend yang sama, sehingga lebih menjamin bahwa setiap pengakses tidak akan terputus sessionnya karena dibagi ke server yang berbeda-beda.
Kelemahan dari kedua metode ini adalah ketidakmampuannya dalam memastikan seimbangnya beban request dari tiap alamat IP pengakses yang didistribusikan ke setiap server. Namun, IP hash dapat memastikan konsistensi sesi pengguna dengan memastikan bahwa setiap alamat IP pengguna selalu terhubung ke server backend yang sama.
Dengan NGINX Plus, ada tambahan fitur yang sudah support cookie-based session persistence, salah satunya sticky cookie.
▶️ Random
Metode random dalam NGINX memungkinkan kita memilih server secara acak dari kumpulan server backend yang tersedia. Ada dua cara yang berbeda untuk menggunakan metode random di NGINX, yaitu dengan, atau tanpa parameter “two”.
upstream my-webserver {
random;
server 10.10.100.9 ; #web-server1
server 10.10.100.10 ; #web-server2
server 10.10.100.11 ; #web-server3
server 10.10.100.12 ; #web-server4
}
Metode random tanpa parameter “two” memilih satu server secara acak dari kumpulan backend setiap kali permintaan datang.
upstream my-webserver {
random two least_time=last_byte;
server 10.10.100.9 ; #web-server1
server 10.10.100.10 ; #web-server2
server 10.10.100.11 ; #web-server3
server 10.10.100.12 ; #web-server4
}
Sedangkan pada metode random berikutnya, kita menambahkan parameter “two” untuk menentukan bahwa NGINX akan memilih dua server secara acak dari kumpulan backend yang tersedia. Kemudian, dari dua server yang telah dipilih, NGINX akan memilih satu server dengan rata-rata waktu tercepat dalam memberikan respons kepada pengguna.
Metode penentu di dalam parameter “two” ini bisa diantara berikut:
- Least Connections: memilih server backend dengan jumlah koneksi aktif terendah saat ini.
- Least Time (Header): memilih server backend yang memiliki waktu rata-rata paling singkat dalam menerima respons header. (Menggunakan variabel
$upstream_header_time
). - Least Time (Last Byte): memilih server backend yang memiliki waktu rata-rata paling singkat dalam menerima seluruh respons, termasuk body response.
2. Server Weights
Setelah kita ketahui tentang metode load balancing dari NGINX, sekarang ayo kita ketahui tentang opsi tingkat lanjut yaitu “server weights”.
Pada dasarnya server weight adalah opsi dimana kita bisa menentukan bobot tiap server backend dalam menerima sebuah request. Nilai server weight berupa number, dengan default weight tiap server yaitu 1.
upstream my-webserver {
server 10.10.100.9 weight=5 ; #web-server1
server 10.10.100.10 weight=2 ; #web-server2
server 10.10.100.11 ; #web-server3
}
Pada contoh di atas, apabila terdapat request access sebanyak 10, maka akan didapati proporsi sebagai berikut:
Jumlah total bobot untuk server A, B, dan C adalah 5+2+1=8.
- Server A: 5/8 x 10 = 6.25 (dibulatkan menjadi 6)
- Server B: 2/8 x 10 = 2.5 (dibulatkan menjadi 3)
- Server C: 1/8 x 10 = 1.25 (dibulatkan menjadi 1)
Jadi, dalam contoh ini, server A akan menerima 6 permintaan, server B akan menerima 3 permintaan, dan server C akan menerima 1 permintaan.
Dengan menentukan server weight yang tepat, kita dapat meningkatkan kinerja dan ketersediaan aplikasi web dengan memberikan bobot yang lebih tinggi pada server yang lebih kuat dan stabil.
Opsi server weight ini juga kita bisa gabungkan dengan opsi-opsi lainnya yang ada semisal ke dalam metode load balancer yang kita inginkan, menjadikan konfigurasi dan pengolahan load balancer kita lebih kompleks dan advance.
3. HTTP Load Balancer Health Check
Fitur HTTP health check memungkinkan untuk memverifikasi kesehatan dari server backend sebelum meneruskan permintaan klien. Jika server dianggap tidak sehat, NGINX akan menghentikan pengiriman permintaan ke server tersebut.
Ada dua jenis health check yang tersedia pada NGINX.
▶️ Passive Health Check (NGINX Open Source dan NGINX Plus)
Untuk Passive Health Check, NGINX dan NGINX Plus memantau hanya saat transaksi berlangsung, dan berusaha untuk melanjutkan koneksi yang gagal. Jika tetap tidak bisa, NGINX akan menandai server sebagai tidak tersedia dan berhenti sementara mengirim permintaan ke server tersebut sampai dianggap aktif lagi.
Parameter berikut dapat digunakan untuk mengatur kondisi-kondisi yang menunjukkan bahwa upstream server dianggap tidak tersedia.
- fail_timeout – menentukan waktu maksimal dalam menunggu percobaan komunikasi yang tidak berhasil dengan server. Waktu ini juga menentukan durasi ketika server dianggap tidak tersedia. Default-nya adalah 10 detik.
- max_fails – Menentukan jumlah percobaan yang harus gagal selama periode fail_timeout agar servernya dinyatakan tidak tersedia (default-nya 1 kali percobaan).
upstream my-webserver {
server 10.10.100.9 weight=5 max_fails=3 fail_timeout=30s;
server 10.10.100.10 weight=2 max_fails=3 fail_timeout=30s;
server 10.10.100.11 max_fails=3 fail_timeout=30s;
}
Pada contoh di atas, setiap server diberikan parameter max_fails dan fail_timeout dengan nilai 3 dan 30 detik. Jadi jika ada 3 percobaan gagal dalam 30 detik, server dianggap tidak tersedia dan NGINX tidak mengirim permintaan ke server tersebut selama 30 detik. Jika masih gagal dalam 3 percobaan berikutnya, server tidak akan menerima permintaan kembali dari load balancer.
▶️ Active Health Check (NGINX Plus)
Sebelum server backend mengalami kendala atau tidak tersedia, NGINX Plus sudah aktif memonitorinya.
NGINX Plus akan secara teratur mengirimkan permintaan ke setiap server backend dan mengukur waktu response dan kode status dari server tersebut. Jika server tidak meresponse dalam waktu yang diatur atau memberikan kode status yang salah, maka server dianggap tidak sehat dan dihapus dari pool server yang tersedia.
Kesimpulan
Masih banyak hal menarik seputar topik ini yang belum kita bahas, dan rasanya sangat menarik untuk dieksplorasi lebih lanjut. Untuk informasi lebih lengkap tentang parameter-parameter Load Balancer di NGINX, bisa langsung cek NGINX HTTP Upstream module.
Jika ingin mengetahui lebih banyak lagi tentang manfaat dan fitur-fitur keren yang ada di NGINX Plus, bisa juga langsung cek ke halaman guide-nya.
Eksplor lebih banyak tutorial di halam knowledge base di sini, atau tonton tutorial video di channel Youtube Cloud Raya di sini.