Lebih Jauh Tentang Load Balancer (L3/4 dan L7)
https://indosystem.com/wp-content/uploads/2016/05/nodebalancer_icon.png 300 250 Dian Boyke Dian Boyke https://secure.gravatar.com/avatar/c9a775a9c29b76ec216f6fbfe8a2794d?s=96&d=mm&r=gUntuk yang belum tahu fungsi Load Balancer mungkin pengertian sederhananya adalah membagi beban ke beberapa server agar tidak terjadi over load. Tetapi penjelasan lebih jauh tetang load balancing adalah, sebuah perangkat yang memiliki mekanisme untuk mendistribusikan beban ke lebih dari satu resource yang seragam.
Mari kita coba bahas lebih dalam makna dari pengertian diatas.
Perangkat Load Balancer
Semua fungsionalitas digital tentu saja berasal dari software walaupun kita berinteraksi langsung secara fisik ke hardware. Disini saya memisahkan load balancer yang berbentuk Hardware sebagai perangkat fisik yang khusus di desain sebagai load balancer, tidak termasuk server yang terinstall aplikasi load balancer atau perangkat router yang memiliki fitur balancing.
Hardware yang berfungsi sebagai pembagi beban ini banyak tersedia di pasaran, sebut saja nama-nama seperti Load Traffic Manager (LTM) dari F5, Load balancing ADC keluaran Baracuda dan module Application Control Engine (ACE) dari vendor Cisco. Produk-produk tersebut memiliki fitur, harga dan keunggulan yang berbeda-beda. Umumnya vendor hardware ini menyediakan load balancer berikut dengan fitur pelengkap yang lain, seperti web accelerator, security (WAF), DNS lokal, GeoIP dan NAT.
Sedangkan dari perangkat lunak ada beberapa pilihan yang bisa kita gunakan. Diantaranya seperti HAProxy yang didesain khusus sebagai load balancing, LVS, dan Nginx yang populer sebagai webserver. Semua aplikasi tersebut memiliki dokumentasi yang lengkap, paling tidak dokumentasi untuk memulai membuat balancing yang sederhana.
Tidak sekedar dua perangkat diatas, sekarang balancer sudah merambah ke Cloud juga. Vendor yang memproduksi perangkat keras telah menyediakan versi cloud yang biasanya di charge sesuai dengan waktu penggunaan. Dan Cloud provider besar seperti Amazon AWS, Azure dan Google Cloud turut memberikan fasilitas Load balancing kedalam layanannya.
Metode dan Cara Kerja
Tugas utama dari balancer adalah melakukan pendistribusian load ke node-node dibawahnya. Model pendistribusiannya bisa berdasarkan Layer 3/4 (Transport Layer) atau Layer 7 (Application Layer) di model OSI. Dengan layer 3/4 pendistribusian dilakukan berdasarkan IP, Port atau paket TCP/UDP. Di layer 3/4 ini banyak digunakan di infrastruktur yang sudah pernah saya temui, karena kemudahannya untuk di setup dan juga sudah cukup memenuhi kebutuhan dasar balancing. Dan juga dapat digunakan untuk balancing service selain HTTP seperti Database (MySql, Oracle), DNS, Email, Storage, Middleware. Contoh di cloud seperti ELB dari Amazon AWS.
Sedangkan untuk balancing di layer 7 proses pembagiannya bisa dilakukan berdasarkan protokol, isi paket, Tipe data, URL dan masih banyak lagi. Di layer 7 ini memiliki lebih banyak fitur ketimbang layer 4, sebut saja fitur yang mengatur pembagian node berdasarkan URL pattern yang sering digunakan pada arsitektur microservices, atau fitur untuk memisahkan cluster aplikasi dengan cluster file-file asset.
Load balancer memiliki aturan atau metode yang digunakan untuk membagi beban ke node-node. Ada aturan round-robin yang membagi load secara merata ke seluruh node, weighting yang membagi beban sesuai dengan kemampuan tiap-tiap node, metode Persitent yang memastikan user akan selalu mendapatkan node yang sama, yang biasanya digunakan untuk menjaga session tetap konsisten.
Resource yang Seragam
Meskipun bukan sebuah keharusan, tetapi resource atau node-node yang dibawah load balancer harus memiliki karakteristik logic yang serupa. Bisa memiliki sistem operasi dan distro yang sama, versi aplikasi, struktur direktori, konfigurasi server, plugin dan module yang terinstall, dan sebagainya.
Tetapi tidak sebaliknya untuk spesifikasi server. Satu server bisa memiliki spesifikasi yang rendah meskipun yang lainnya lebih high performance, Tidak perlu mengkhawatirkan merk, model bahkan tipe hardware, asalkan aplikasi dapat berjalan dan berperilaku sama di semua server atau node.
Keberagaman spesifikasi server ini dapat di antisipasi dengan metode weighting di settingan load balancer. Agar server dengan spesifikasi lebih tinggi akan mendapatkan rasio beban yang lebih besar ketimbang server lainnya yang lebih rendah spesifikasinya.
Implementasi
Berikut contoh implementasi load balancer dengan menggunakan Nginx, dengan tujuan dan metode yang berbeda-beda.
nginx.conf:
http {
...
# Server Database
upstream db {
# alokasi memory
zone db 64k;
# metode weighting
server db-server-1:3306 weight=5;
server db-server-2:3306 fail_timeout=5s;
}
# Server Aplikasi (Php)
upstream ws-front {
# metode round-robin
server ws-front-1;
server ws-front-2;
}
# Server Backend Node.js
upstream ws-nodejs {
# metode persistent connection
iphash;
server ws-nodejs-1:7000;
server ws-nodejs-2:7000;
server ws-nodejs-3:7000;
# Database balancing
server {
listen 3306;
location / {
proxy_pass http://db;
health_check;
# hanya untuk koneksi lokal
allow 127.0.0.1;
allow 10.10.0.0/16;
deny all;
}
}
# Application balancing
server {
listen 80;
server_name _;
location / {
proxy_pass http://ws-front;
upstream_conf;
}
# route to nodejs microservices
location /backend {
proxy_pass http://ws-nodejs;
upstream_conf;
}
}
}
Dari contoh diatas kita dapat lihat bagaimana implementasi balancing di layer 3/4 (Database balancing) dan layer 7 (Application balancing). Termasuk metode-metode (weight, round-robin, persistent connection) yang digunakan.
Kesimpulan
Load balancing bukan teknologi baru dan dalam implementasinya tidak selalu dibutuhkan biaya yang tinggi. Penggunaan perangkat lunak dapat membantu kita lebih memahami tentang proses yang terjadi didalamnya, dan di waktu yang bersamaan dapat menekan biaya implementasi tetapi tetap mendapatkan performance yang baik.
Pahami terlebih dahulu struktur dan kebutuhan aplikasi yang akan di balancing, dengan mengerti kebutuhan dan hasil yang diingini akan memudah kan kita untuk menentukan teknologi yang digunakan. Apakah dibutuhkan perangkat dengan spesifikasi yang tinggi, atau cukup dengan balancing yang sederhana. Dan disaat yang sama kita dapat mengoptimalkan aplikasi dengan menggunakan fitur-fitur yang biasanya sudah di termasuk didalamnya.
Leave a Reply