Load Balancing: Pengertian, Cara Kerja, hingga Lengkap dengan Algoritmanya
Di era aplikasi modern yang harus melayani jutaan pengguna secara bersamaan, kemampuan untuk memberikan respon yang cepat dan andal dengan mengembalikan teks, video, gambar, dan data lainnya menjadi hal yang krusial.
Untuk mengatasi tantangan volume lalu lintas yang tinggi, sebagian besar aplikasi mengambil pendekatan dengan menggunakan beberapa server sumber daya yang menyimpan data duplikat di antara server tersebut. Inilah yang disebut dengan load balancing.
Load balancing adalah teknik untuk mendistribusikan lalu lintas jaringan secara merata ke seluruh sumber daya server. Tentu saja, beberapa algoritma atau metode digunakan saat mendistribusikan lalu lintas. Penasaran? Yuk, simak artikel ini sampai akhir ya!
Apa itu Load Balancing?
Load balancing adalah suatu teknik yang mendistribusikan lalu lintas jaringan secara merata ke seluruh sumber daya server yang mendukung suatu aplikasi. Dalam konteks ini, load balancing bertindak sebagai pengatur lalu lintas di depan server, merutekan permintaan client ke berbagai server yang dapat merespons dengan optimal.
Fungsinya mirip dengan “polisi lalu lintas” yang menjamin distribusi beban yang efisien, memaksimalkan kecepatan dan kapasitas, dan mencegah kelebihan beban pada satu server. Selain itu, load balancing juga memainkan peran penting dalam menjaga ketersediaan dan keandalan yang tinggi.
Dengan mendistribusikan lalu lintas hanya ke server yang sedang online, load balancing memastikan sistem terus beroperasi dengan baik. Jika server gagal, load balancing secara otomatis akan mengalihkan lalu lintas ke server yang berfungsi. Saat server baru ditambahkan, load balancing mulai meneruskan permintaan ke server tersebut.
Oleh karena itu, load balancing berfungsi sebagai alat penting untuk:
- Mendistribusikan permintaan client secara efisien ke beberapa server.
- Memastikan ketersediaan dan keandalan tinggi dengan meneruskan permintaan hanya ke server aktif.
- Memberikan fleksibilitas untuk mengatur jumlah server sesuai kebutuhan.
Cara Kerja Load Balancing
Dalam operasional perusahaan, aplikasi sering kali dijalankan di beberapa server secara bersamaan. Konfigurasi seperti itu disebut server farm. Dimana ketika kamu membuat permintaan ke aplikasi, langkah pertama adalah menuju ke load balancer. Load balancer bertindak seperti manajer restoran yang mengatur dan mengarahkan tugas pelayan.
Bayangkan analoginya seperti di sebuah restoran dengan 5 pelayan. Jika kamu dibiarkan memilih pelayan sendiri, beberapa pelayan mungkin akan terlalu sibuk dan yang lain mungkin akan menganggur.
Untuk mencegah ketidakseimbangan itu, manajer restoran menugaskan pelayan yang paling tepat untuk setiap pelanggan guna menyesuaikan tugas secara efisien. Analogi ini juga berlaku untuk load balancing pada server farm.
Setiap kali pengguna mengirimkan permintaan, load balancing akan menentukan server terbaik untuk menangani permintaan tersebut. Pendekatan ini mendistribusikan beban kerja secara merata ke seluruh server yang ada, memastikan kinerja optimal, dan mencegah kelebihan beban pada satu server.
Dengan menggunakan analogi manajemen seperti itu, lebih mudah untuk memahami bahwa load balancing bertindak seperti “manajer” yang mengarahkan setiap permintaan ke sumber daya yang paling efisien.
Algoritma Load Balancing
Tim IT menggunakan berbagai jenis algoritma load balancing, tergantung pada distribusi beban, baik itu pada network atau application layer. Pemilihan server backend untuk merutekan lalu lintas didasarkan pada algoritma load balancing yang dipilih.
Dalam proses ini, algoritma mempertimbangkan dua aspek utama dari setiap server, yaitu server health dan predefined condition. Beberapa algoritma load balancing yang umum digunakan oleh tim IT adalah sebagai berikut:
Round Robin Algorithm
Algoritma Round Robin adalah metode mendistribusikan permintaan secara merata ke sekelompok server secara bergantian. Dalam penggunaan praktisnya, terdapat dua jenis round robin yang umum digunakan, yaitu Weighted Round Robin dan Dynamic Round Robin.
Weighted Round Robin adalah ketika setiap server dalam kelompok diberi “bobot” berdasarkan komposisinya. Misalnya, server dengan spesifikasi lebih tinggi mungkin diberi bobot lebih besar. Dengan pendekatan ini, distribusi beban dilakukan berdasarkan bobot masing-masing server sehingga server dengan kemampuan lebih tinggi menangani lebih banyak permintaan.
Sementara Dynamic Round Robin menggunakan penghitungan waktu nyata untuk menentukan cara mendistribusikan beban. Bobot server dapat berubah berdasarkan kinerja atau kondisi saat ini. Hal ini memungkinkan penyesuaian otomatis berdasarkan faktor tertentu untuk mengalokasikan server yang lebih optimal untuk menangani permintaan.
Least Connections
Algoritma Least Connection adalah metode load balancing yang merutekan permintaan baru ke server dengan jumlah koneksi terendah ke client pada saat itu. Dalam hal ini, koneksi mengacu pada hubungan atau interaksi antara server dan client. Ide dasar dari algoritma ini adalah untuk mendistribusikan beban kerja ke server yang saat ini memiliki beban koneksi yang paling ringan.
Pertimbangan utama algoritma ini adalah kapasitas komputasi relatif setiap server. Artinya, algoritma tidak hanya mempertimbangkan jumlah koneksi saat ini, namun juga jumlah kapasitas komputasi yang masih tersedia di setiap server.
Dengan demikian, algoritma Least Connection memastikan bahwa permintaan baru diarahkan ke server yang tidak hanya memiliki sedikit koneksi saat ini, namun juga memiliki daya komputasi yang cukup untuk menangani permintaan ini.
Weighted Least Connections
Algoritma Weighted Least Connections adalah metode load balancing yang merutekan permintaan ke server tertentu berdasarkan rumus yang mempertimbangkan dua faktor utama, yaitu waktu respons tercepat dan jumlah koneksi aktif paling sedikit. Algoritma ini hanya digunakan pada NGINX Plus, sebuah perangkat lunak server web dan proxy.
Pertama-tama, algoritma ini menilai waktu respons setiap server. Ini mencerminkan seberapa cepat server dapat merespons permintaan. Server dengan waktu respons yang lebih cepat memiliki bobot rumus yang lebih tinggi.
Selanjutnya, algoritma mempertimbangkan jumlah koneksi aktif pada setiap server. Server dengan koneksi aktif lebih sedikit juga akan menerima bobot lebih tinggi. Kemudian, dengan menggunakan rumus tersebut, algoritma menggabungkan kedua faktor tersebut untuk menentukan server mana yang akan menerima permintaan baru.
Dengan pendekatan ini, algoritma Weighted Least Connections bertujuan untuk memprioritaskan server dengan waktu respons lebih cepat serta koneksi aktif lebih sedikit sehingga menciptakan keseimbangan distribusi beban yang optimal.
Source IP Hash
Pada Algoritma Source IP Hash, load balancing server diatur berdasarkan suatu kunci hash unik. Proses ini melibatkan pembuatan kunci hash dari informasi sumber dan tujuan dalam permintaan. Kunci hash ini digunakan untuk menentukan server mana yang akan ditetapkan untuk melayani client yang membuat permintaan.
Algoritma source IP Hash mengambil informasi dari alamat IP sumber dan tujuan permintaan untuk membuat kunci hash. Kunci hash ini unik untuk setiap kombinasi sumber dan tujuan serta membuat pengidentifikasi unik untuk setiap permintaan masuk.
Kemudian, berdasarkan nilai kunci hash yang dihasilkan, algoritma menentukan server mana yang akan menangani permintaan. Proses ini memungkinkan setiap client untuk secara konsisten terhubung ke server tertentu sesuai dengan kunci hash unik yang terkait dengan alamat IP-nya.
URL Hash
Hashing URL adalah metode load balancing yang diterapkan di lingkungan server dengan beban seimbang. Tujuan utama teknik ini adalah memproses permintaan URL dengan cara yang memungkinkan setiap server dalam grup beban seimbang dapat menyajikan konten unik yang sesuai dengan URL yang diminta. Pendekatan ini bertujuan untuk meningkatkan kapasitas cache di sisi backend dengan menghindari duplikasi cache.
URL atau Uniform Resource Locator adalah alamat yang digunakan untuk mengidentifikasi suatu sumber daya di internet, seperti halaman web atau file. Saat pengguna mengakses website atau aplikasi, permintaannya sering kali berisi URL yang menentukan sumber daya yang diinginkan. Dengan menggunakan Hashing URL, algoritma hash diterapkan pada URL yang masuk.
Proses hashing ini menciptakan nilai hash unik untuk setiap URL. Nilai hash tersebut kemudian digunakan untuk menentukan server mana yang menangani suatu permintaan. Pendekatan ini memastikan bahwa setiap URL diarahkan ke server spesifik dan menciptakan distribusi beban yang merata di seluruh server yang tersedia.
Salah satu manfaat utama Hashing URL adalah meningkatkan kapasitas cache di server backend. Dengan menyediakan konten unik untuk setiap server, teknik ini membantu menghindari duplikasi cache yang dapat terjadi ketika setiap server menyimpan salinan sumber daya yang sama. Hal ini meningkatkan efisiensi penyimpanan dan pengelolaan cache sehingga meningkatkan kinerja sistem secara keseluruhan.
The Least Response Time
Algoritma The Least Response Time memilih server dengan jumlah koneksi aktif paling sedikit dan waktu respons rata-rata terpendek sebagai server backend. Algoritma ini memungkinkan tim IT untuk memastikan bahwa waktu respons kepada client menjadi lebih cepat.
Proses pemilihan server didasarkan pada dua faktor utama, yaitu jumlah koneksi aktif dan waktu respons rata-rata. Jumlah koneksi aktif mengacu pada jumlah client atau pengguna yang saat ini terhubung atau berinteraksi dengan server.
Server dengan jumlah koneksi aktif lebih sedikit dianggap sibuk maka dari itu algoritma memilih server dengan jumlah koneksi aktif paling sedikit. Selain itu, algoritma juga memperhitungkan waktu respons rata-rata setiap server.
Waktu respons adalah waktu yang dibutuhkan server untuk merespon permintaan client. Server dengan waktu respons rata-rata rendah dianggap lebih efisien dalam menyajikan konten atau layanan kepada pengguna.
Dengan menggabungkan kedua faktor tersebut, algoritma The Least Response Time lebih memilih server yang tidak hanya memiliki jumlah koneksi aktif lebih sedikit, namun juga memiliki waktu respons rata-rata lebih cepat. Hal ini untuk memastikan pelanggan menerima layanan dengan waktu respons optimal dan meningkatkan pengalaman pengguna secara keseluruhan.
The Least Bandwidth Method
Algoritma The Least Bandwidth Method memilih server backend berdasarkan konsumsi bandwidth server. Hal ini dapat diartikan sebagai jumlah data yang dikonsumsi oleh server selama periode waktu tertentu diukur dalam Mbps (Megabit per detik). Dalam konteks ini, server yang menggunakan bandwidth paling sedikit akan menjadi pilihan utama load balancer.
Pemilihan server berdasarkan konsumsi bandwidth bertujuan untuk mengoptimalkan penggunaan sumber daya jaringan. Server yang menggunakan bandwidth lebih sedikit biasanya memiliki kapasitas lebih besar untuk menangani lalu lintas jaringan sehingga dapat memberikan layanan lebih cepat dan efisien.
Metode ini mirip dengan metode paket terkecil, dimana load balancer memilih server yang mengirimkan jumlah paket paling sedikit. Pemilihan ini didasarkan pada asumsi bahwa server dengan paket atau data yang lebih sedikit akan berkontribusi terhadap beban jaringan yang lebih rendah.
The Custom Load Method
Dengan alogaritma The Custom Load Method, pemilihan server backend didasarkan pada evaluasi beban yang meliputi penggunaan CPU, memori, dan waktu respons server. Beban server diukur dari seberapa intensif server digunakan dalam hal daya komputasi, berapa banyak memori yang digunakan, dan seberapa cepat server merespons permintaan.
Tim IT perusahaan sering menggunakan algoritma ini untuk menentukan cara menggunakan sumber daya server secara efisien. Algoritma ini membantu mendistribusikan beban kerja secara merata antar server di server farm dengan memantau dan menganalisis kinerja server menggunakan parameter seperti penggunaan CPU, penggunaan memori, dan waktu respons.
Namun, perhatikan bahwa metode ini lebih cocok digunakan bila lalu lintas jaringan dapat diprediksi dan stabil. Algoritma ini mungkin kurang efektif dalam menjaga keseimbangan beban jika terjadi fluktuasi lalu lintas secara tiba-tiba atau jika beban kerja tidak merata.
Oleh karena itu, ketika perubahan lalu lintas yang tidak terduga mungkin terjadi, alogaritma The Custom Load Method mungkin perlu dikombinasikan dengan algoritma lain yang lebih adaptif untuk menjaga stabilitas dan kinerja sistem secara keseluruhan.
Tipe Load Balancing
Load balancing dapat dibagi menjadi tiga kategori utama berdasarkan apa yang diperiksa load balancing untuk setiap permintaan client untuk merutekan lalu lintas. Di bawah ini adalah penjelasan rinci tentang tipe-tipe load balancing.
Application Load Balancing
Aplikasi modern yang kompleks sering kali terdiri dari beberapa server, yang masing-masing memiliki fungsi khusus di dalam aplikasi. Application load balancing memeriksa konten setiap permintaan, seperti header HTTP atau ID sesi SSL untuk menentukan server terbaik untuk mengalihkan lalu lintas. Misalnya, aplikasi e-commerce memiliki fitur seperti pencarian produk, keranjang belanja, dan checkout.
Application load balancing dapat mengarahkan permintaan untuk menjelajahi produk ke server yang dapat menangani gambar dan video, sementara permintaan untuk keranjang belanja diarahkan ke server yang dapat memelihara beberapa koneksi client dan menyimpan data keranjang belanja untuk jangka waktu yang lama. Melalui cara tersebut, application load balancing memastikan bahwa setiap jenis permintaan dialihkan ke server terbaik untuk menangani fungsi aplikasi tertentu.
Network Load Balancing
Network load balancing seperti pengontrol lalu lintas yang cerdas di dunia internet. Network load balancing memeriksa alamat IP dan informasi jaringan lainnya untuk memastikan lalu lintas pengguna diarahkan secara optimal ke server yang paling tepat. Untuk mencapai hal tersebut, network load balancing menggunakan beberapa teknik di lengan mereka.
Pertama-tama, mereka dapat melacak dari mana asal alu lintas aplikasi. Anggap saja mereka sebagai detektif internet yang dapat mengetahui di mana pengguna mengakses aplikasii. Ini memungkinkan mereka menetapkan alamat IP statis ke beberapa server. Jadi, ketika seseorang mengakses aplikasi dari suatu tempat, load balancing mengetahui server mana yang sesuai untuk mengarahkan pengguna tersebut.
Selain itu, network load balancing menggunakan algoritma load balancing. Tidak perlu takut dengan istilah teknis ini. Ini hanyalah seperangkat aturan cerdas yang membantu load balancer mengambil keputusan. Beberapa di antaranya bersifat statis. Artinya, sudah ditentukan sebelumnya, seperti peta jalan. Selain itu, beberapa bersifat dinamis, yang memungkinkan load balancing mengambil keputusan berdasarkan situasi saat ini.
Global Server Load Balancing
Global server load balancing terjadi ketika suatu aplikasi dijalankan di beberapa server yang tersebar secara geografis. Bayangkan jika sebuah perusahaan memiliki server di beberapa pusat data yang tersebar di berbagai negara, dan juga menggunakan layanan dari penyedia cloud pihak ketiga di seluruh dunia.
Dalam situasi tersebut, terdapat dua jenis load balancing dapat terjadi, yaitu load balancing lokal dan load balancing global.
Local Load Balancing
Local load balancing bertanggung jawab untuk mengelola beban aplikasi di wilayah atau zona tertentu. Peran utamanya adalah mengarahkan lalu lintas client ke server yang terletak di wilayah geografis terdekat dengan client tersebut.
Local load balancing berupaya membuat klien terhubung ke server yang lebih dekat dengan mereka sehingga meningkatkan kecepatan dan responsivitas aplikasi. Hal ini juga dapat mengurangi latensi karena lebih sedikit data yang dikirim melalui jaringan.
Global Load Balancing
Sebaliknya, global load balancing bekerja pada tingkat yang lebih tinggi. Jika server berlokasi di pusat data di seluruh dunia, global load balancing akan mengelola lalu lintas antar zona geografis tersebut.
Global load balancingl terutama difokuskan pada pengalihan lalu lintas ke server terdekat, namun juga menyediakan kemampuan untuk mengarahkan lalu lintas ke server di luar zona geografis client jika terjadi kegagalan server lokal. Hal ini memastikan ketersediaan dan keandalan yang tinggi bahkan dalam skenario kegagalan lokal.
DNS Load Balancing
Bayangkan DNS Load balancing seperti pemandu wisata cerdas untuk domain kamu di dunia maya. Saat mengonfigurasi DNS load balancing, kamu sebenarnya mengarahkan domain kamu sendiri untuk menghosting seluruh koleksi sumber daya yang didistribusikan di berbagai lokasi. Mari kita analogikan dengan pengelolaan kompleks perumahan di dunia nyata. Bayangkan domain sebagai kompleks besar yang mencakup segala sesuatu mulai dari website dan sistem email hingga server cetak dan layanan lain yang dapat diakses melalui internet.
Sebagai pengelola kompleks, kamu ingin memastikan seluruh bagian kompleks dapat diakses dengan mudah oleh pengunjung dan tidak ada bagian yang kelebihan beban. Nah, DNS load balancing dapat membantu di sini. Mereka seperti pemandu wisata cerdas yang memandu pengunjung (dalam hal ini, permintaan jaringan) ke bagian kompleks yang paling tepat.
Mereka membantu menjaga ketersediaan aplikasi, memastikan tidak ada bagian kompleks yang kelebihan beban, dan mendistribusikan lalu lintas dengan benar di dalam kompleks yang mungkin tersebar di beberapa lokasi di seluruh dunia.
Nah, itulah berbagai hal yang perlu kamu ketahui mengenai load balancing. Semoga bermanfaat!