source: https://www.linode.com/linodes

Lebih Jauh Tentang Load Balancer (L3/4 dan L7)

300 250 Dian Boyke

Untuk 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.

OSI Model

source: http://www.tech-faq.com/osi-model.html

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 balancer

source: http://publicdomainvectors.org/en/free-clipart/Load-balancer-black-and-white-icon-vector-illustration/17372.html

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.

1 comment

Leave a Reply

Your email address will not be published.