phone: +62852 5254 2414
e-mail: simonmurdani@gmail.com

KPJ - Load Balancing (BAB 14) (Fase F)


(BAB 14) (Fase F)
Load Balancing

Kompetensi Dasar

3.14 Memahami konsep load balancing dan metode-metodenya.

4.14 Mampu mengkonfigurasi dan menguji load balancing pada perangkat jaringan atau server.
Pendahuluan

Pada bab-bab sebelumnya, Anda telah mempelajari bagaimana mengoptimalkan jaringan melalui Proxy Server dan Manajemen Bandwidth. Kini, kita akan membahas teknologi penting lainnya yang berfokus pada peningkatan kinerja, keandalan, dan skalabilitas layanan: Load Balancing. Dalam lingkungan aplikasi modern, terutama yang melayani banyak pengguna atau lalu lintas tinggi (seperti situs web e-commerce, aplikasi online, atau API), satu server mungkin tidak cukup untuk menangani semua permintaan. Load balancing memungkinkan Anda mendistribusikan beban kerja secara merata di antara beberapa server atau jalur koneksi, memastikan tidak ada satu server pun yang kelebihan beban dan layanan tetap tersedia bahkan jika salah satu server mengalami kegagalan. Bab ini akan membimbing Anda untuk memahami konsep load balancing, berbagai metode yang digunakan (seperti round-robin dan least connections), serta bagaimana mengkonfigurasinya pada perangkat khusus atau router. Dengan menguasai bab ini, Anda akan memiliki kemampuan untuk merancang dan mengimplementasikan solusi yang membuat aplikasi dan layanan Anda lebih tangguh dan berkinerja tinggi.
A. Definisi dan Tujuan Load Balancing

Load balancing adalah proses mendistribusikan lalu lintas jaringan atau beban kerja aplikasi secara merata di antara beberapa server atau sumber daya.

Definisi Load Balancing:
Load balancing adalah teknik yang digunakan untuk mendistribusikan permintaan masuk (misalnya, permintaan HTTP ke web server, koneksi ke database server) ke beberapa server yang berfungsi sama (disebut server backend atau server pool). Tujuan utamanya adalah untuk mencegah satu server menjadi bottleneck atau kelebihan beban.


Tujuan Utama Load Balancing:

Meningkatkan Ketersediaan (Availability): Jika satu server gagal atau down, load balancer akan secara otomatis mendeteksi kegagalan tersebut melalui health checks dan mengalihkan lalu lintas ke server lain yang sehat. Ini memastikan layanan tetap tersedia bagi pengguna tanpa gangguan.


Meningkatkan Skalabilitas (Scalability): Memungkinkan penambahan server baru ke pool kapan saja untuk menangani peningkatan beban kerja tanpa perlu menghentikan layanan. Ini membuat aplikasi dapat tumbuh secara horizontal.


Meningkatkan Kinerja (Performance): Dengan mendistribusikan beban secara merata, setiap server bekerja pada kapasitas optimalnya, mengurangi waktu respons dan meningkatkan throughput keseluruhan.


Efisiensi Penggunaan Sumber Daya: Memaksimalkan penggunaan semua server yang tersedia dalam pool, menghindari pemborosan sumber daya pada server yang kurang dimanfaatkan.


Fleksibilitas Pemeliharaan: Memungkinkan server untuk diambil dari pool untuk pemeliharaan atau upgrade tanpa mengganggu layanan, karena lalu lintas akan dialihkan ke server lain.
B. Cara Kerja Load Balancing

Load balancer bertindak sebagai "penjaga gerbang" atau "manajer lalu lintas" di depan server backend.

Virtual IP Address (VIP):

Klien tidak langsung terhubung ke alamat IP server backend yang sebenarnya. Sebaliknya, klien mengirimkan permintaan ke satu alamat IP virtual (VIP) yang dimiliki oleh load balancer.


Load balancer kemudian menerima permintaan ini dan meneruskannya ke salah satu server backend yang sehat berdasarkan algoritma load balancing yang dikonfigurasi.

Algoritma Distribusi Lalu Lintas:
Load balancer menggunakan berbagai algoritma untuk menentukan server mana yang akan menerima permintaan berikutnya. Pemilihan algoritma yang tepat tergantung pada jenis aplikasi dan kebutuhan distribusi beban.

Round Robin:

Cara Kerja: Meneruskan permintaan ke server secara berurutan, satu per satu (server 1, server 2, server 3, server 1, dst.).


Kelebihan: Sederhana dan mudah diimplementasikan.


Kekurangan: Tidak mempertimbangkan beban aktual server. Jika ada server yang lebih lambat atau sedang sibuk, ia tetap akan menerima permintaan secara bergiliran.

Weighted Round Robin:

Cara Kerja: Mirip dengan Round Robin, tetapi administrator dapat menetapkan "bobot" (prioritas) ke setiap server. Server dengan bobot lebih tinggi akan menerima lebih banyak permintaan.


Kelebihan: Memungkinkan distribusi beban yang lebih baik untuk server dengan kapasitas atau kinerja yang berbeda.

Least Connections:

Cara Kerja: Meneruskan permintaan ke server yang saat ini memiliki jumlah koneksi aktif paling sedikit.


Kelebihan: Sangat efektif untuk beban kerja yang bervariasi karena mempertimbangkan kondisi server secara real-time.


Kekurangan: Membutuhkan load balancer untuk secara aktif melacak jumlah koneksi pada setiap server.

Least Response Time:

Cara Kerja: Meneruskan permintaan ke server yang memiliki waktu respons tercepat.


Kelebihan: Mengoptimalkan pengalaman pengguna dengan mengarahkan ke server yang paling responsif.

IP Hash (Source IP Hash):

Cara Kerja: Meneruskan permintaan berdasarkan hash dari alamat IP sumber klien. Ini memastikan bahwa klien yang sama selalu diarahkan ke server backend yang sama.


Kelebihan: Penting untuk menjaga session persistence (misalnya, sesi login pengguna) di mana pengguna harus tetap terhubung ke server yang sama.


Kekurangan: Jika ada ketidakseimbangan lalu lintas dari alamat IP sumber tertentu, satu server bisa menjadi kelebihan beban.

Health Checks (Pemeriksaan Kesehatan):

Load balancer secara terus-menerus memantau kesehatan server backend untuk memastikan mereka berfungsi dengan baik.


Cara Kerja: Melakukan ping, mencoba koneksi TCP ke port tertentu, atau mengirim permintaan HTTP/HTTPS ke server.


Tindakan: Jika server tidak merespons atau gagal dalam health check, load balancer akan secara otomatis mengeluarkannya dari pool dan tidak lagi mengirim lalu lintas ke sana hingga server tersebut pulih. Ini adalah fitur kunci untuk ketersediaan tinggi.
C. Jenis-jenis Load Balancing

Load balancing dapat diimplementasikan menggunakan berbagai teknologi, mulai dari perangkat keras khusus hingga perangkat lunak dan layanan cloud.

Hardware Load Balancer:

Definisi: Perangkat keras khusus (appliance) yang dirancang untuk kinerja tinggi, keandalan, dan fitur canggih.


Kelebihan: Kinerja sangat tinggi, latensi rendah, fitur keamanan terintegrasi, dukungan teknis yang kuat.


Kekurangan: Biaya awal yang sangat mahal, kurang fleksibel dibandingkan solusi software.


Contoh Vendor: F5 Networks (BIG-IP), Citrix NetScaler, A10 Networks.

Software Load Balancer:

Definisi: Perangkat lunak yang diinstal dan berjalan di server standar (bisa fisik atau virtual).


Kelebihan: Lebih fleksibel, biaya lebih rendah (menggunakan hardware standar), mudah diskalakan secara horizontal (dengan menambahkan lebih banyak server load balancer).


Kekurangan: Kinerja bisa tergantung pada hardware dasar, mungkin membutuhkan konfigurasi yang lebih kompleks.


Contoh Perangkat Lunak: NGINX, HAProxy, Apache (dengan mod_proxy_balancer).

DNS-based Load Balancing (Global Server Load Balancing - GSLB):

Definisi: Mendistribusikan lalu lintas dengan mengembalikan alamat IP server yang berbeda untuk permintaan DNS yang sama. Ini bekerja pada lapisan DNS.


Kelebihan: Cocok untuk mendistribusikan lalu lintas antar pusat data yang berbeda secara geografis.


Kekurangan: Kurang granular dalam distribusi beban (tidak mempertimbangkan beban server aktual), tidak dapat melakukan health checks secara real-time (tergantung pada TTL DNS), caching DNS dapat menyebabkan sticky sessions yang tidak diinginkan.

Cloud Load Balancer:

Definisi: Layanan load balancing yang disediakan oleh penyedia cloud sebagai bagian dari infrastruktur mereka.


Kelebihan: Sangat mudah dikonfigurasi dan diskalakan, terintegrasi penuh dengan layanan cloud lainnya, model pembayaran pay-as-you-go.


Kekurangan: Ketergantungan pada satu vendor cloud, biaya bisa meningkat seiring penggunaan.


Contoh: AWS Elastic Load Balancing (ELB), Google Cloud Load Balancing, Azure Load Balancer.
D. Konfigurasi Load Balancing (Konseptual)

Konfigurasi load balancing sangat bervariasi tergantung pada jenis load balancer yang digunakan. Namun, konsep dasarnya tetap sama.

Identifikasi Server Backend:

Tentukan alamat IP dan port dari semua server backend yang akan berpartisipasi dalam load balancing.

Definisikan Virtual IP (VIP) dan Port:

Ini adalah alamat IP dan port yang akan diakses oleh klien. Load balancer akan mendengarkan permintaan pada VIP ini.

Pilih Algoritma Load Balancing:

Tentukan algoritma yang paling sesuai untuk aplikasi Anda (misalnya, Least Connections untuk aplikasi web dinamis, Round Robin untuk distribusi sederhana).

Konfigurasi Health Checks:

Tentukan jenis health check (misalnya, ping, TCP, HTTP GET) dan interval pemeriksaan.

Tambahkan Server Backend ke Pool:

Kelompokkan server backend ke dalam satu pool atau grup.

Aturan Port Forwarding/Proxying:

Konfigurasi load balancer untuk meneruskan lalu lintas dari VIP ke server backend yang dipilih.

Contoh Konseptual (Menggunakan NGINX sebagai Reverse Proxy/Load Balancer):

# Konfigurasi upstream (pool server backend)
upstream backend_servers {
# Algoritma load balancing
# least_conn; # Contoh: Least Connections
# round_robin; # Contoh: Round Robin (default jika tidak disebutkan)

server 192.168.1.10:80 weight=3; # Server dengan bobot 3 (menerima lebih banyak traffic)
server 192.168.1.11:80 weight=1; # Server dengan bobot 1
server 192.168.1.12:80; # Server dengan bobot default 1

# Konfigurasi health check (opsional, membutuhkan NGINX Plus atau modul tambahan)
# health_check interval=5s fails=2 passes=2;
}

# Konfigurasi server virtual (VIP)
server {
listen 80; # Port yang didengarkan oleh load balancer (VIP)
server_name example.com; # Nama domain yang dilayani

location / {
proxy_pass http://backend_servers; # Meneruskan traffic ke pool server backend
# Konfigurasi tambahan untuk header, timeout, dll.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}


E. Pengujian dan Verifikasi Load Balancing

Setelah konfigurasi, pengujian adalah langkah krusial untuk memverifikasi bahwa load balancing berfungsi sesuai harapan.

Uji Akses Layanan Melalui VIP:

Prosedur: Dari klien, akses layanan menggunakan alamat IP virtual (VIP) atau nama domain yang dikonfigurasi pada load balancer.


Harapan: Layanan harus dapat diakses dengan normal.

Verifikasi Distribusi Lalu Lintas:

Prosedur: Lakukan banyak permintaan ke layanan secara berurutan atau menggunakan alat stress testing.


Verifikasi:

Periksa log akses pada setiap server backend untuk melihat apakah lalu lintas didistribusikan sesuai algoritma yang dipilih.


Pantau penggunaan CPU/RAM pada setiap server backend untuk melihat apakah beban merata.


Gunakan perintah show pada load balancer (jika hardware appliance atau software dengan CLI) untuk melihat statistik distribusi.

Uji Fungsionalitas Health Check (Simulasi Kegagalan Server):

Prosedur: Secara sengaja matikan salah satu server backend (misalnya, matikan layanan aplikasi atau shutdown server).


Harapan: Load balancer harus mendeteksi kegagalan tersebut dan secara otomatis menghentikan pengiriman lalu lintas ke server yang down. Layanan harus tetap tersedia melalui server lain yang sehat.


Verifikasi: Setelah beberapa saat, load balancer harus menunjukkan server yang down sebagai "unhealthy" atau "offline" dalam statusnya.

Uji Skalabilitas:

Prosedur: Tambahkan server backend baru ke pool dan amati apakah load balancer mulai mendistribusikan lalu lintas ke server baru tersebut.


Harapan: Load balancer harus secara otomatis memasukkan server baru ke dalam rotasi.
F. Menganalisis Permasalahan dan Memperbaiki Konfigurasi Load Balancing

Troubleshooting load balancing memerlukan pemahaman tentang interaksi antara load balancer dan server backend.

Server Backend Tidak Menerima Lalu Lintas:

Gejala: Satu atau lebih server backend tidak menerima permintaan, meskipun terlihat "up" secara fisik.


Penyebab:

Health check gagal (meskipun server sebenarnya sehat).


Server tidak terdaftar dengan benar di pool load balancer.


Firewall pada server backend memblokir lalu lintas dari load balancer.


Alamat IP atau port server backend salah dikonfigurasi di load balancer.

Solusi:

Periksa status health check pada load balancer.


Verifikasi konfigurasi pool server di load balancer.


Periksa firewall pada server backend untuk memastikan port yang relevan terbuka untuk load balancer.


Pastikan server backend aktif dan layanannya berjalan.

Layanan Tidak Tersedia Melalui Load Balancer (VIP Tidak Merespons):

Gejala: Klien tidak dapat mengakses layanan melalui VIP load balancer.


Penyebab:

Load balancer itu sendiri down atau tidak aktif.


Tidak ada server backend yang sehat di pool.


Firewall di depan load balancer memblokir lalu lintas ke VIP.


Konfigurasi VIP salah.

Solusi:

Periksa status load balancer.


Verifikasi status semua server backend melalui health checks.


Periksa aturan firewall yang memengaruhi load balancer.


Pastikan VIP dikonfigurasi dengan benar dan dapat di-ping.

Distribusi Beban Tidak Merata:

Gejala: Beberapa server backend kelebihan beban sementara yang lain kurang dimanfaatkan.


Penyebab:

Algoritma load balancing yang salah dipilih untuk jenis lalu lintas.


Weighted Round Robin dengan bobot yang tidak tepat.


Session persistence (misalnya, IP Hash) menyebabkan sticky sessions yang tidak merata.


Perbedaan kinerja yang signifikan antar server backend.

Solusi:

Ubah algoritma load balancing (misalnya, dari Round Robin ke Least Connections).


Sesuaikan bobot pada Weighted Round Robin.


Pertimbangkan untuk menonaktifkan session persistence jika tidak diperlukan.


Tingkatkan kinerja server yang lemah atau sesuaikan kapasitas server agar lebih seragam.

Masalah Session Persistence:

Gejala: Pengguna seringkali harus login ulang atau sesi mereka terputus saat mengakses aplikasi.


Penyebab: Load balancer tidak dikonfigurasi untuk session persistence (misalnya, menggunakan cookie atau IP Hash), sehingga permintaan dari klien yang sama dialihkan ke server yang berbeda.


Solusi: Aktifkan dan konfigurasikan session persistence pada load balancer (misalnya, sticky sessions berbasis cookie atau source IP hash).
Zona Aktivitas
A. Uji Pengetahuan (Nilai Pengetahuan I)

Jelaskan definisi load balancing dan sebutkan dua tujuan utamanya.


Apa peran Virtual IP Address (VIP) dalam cara kerja load balancing?


Jelaskan perbedaan antara algoritma Round Robin dan Least Connections. Kapan Anda akan memilih salah satunya?


Mengapa Health Checks merupakan fitur penting dalam load balancing?


Sebutkan dua jenis load balancer berdasarkan implementasinya (misalnya, hardware, software, cloud).
B. Praktikum (Nilai Praktik 1)

Buat kelompok dengan anggota maksimal tiga siswa. Diskusikan skenario berikut:

Skenario Peningkatan Ketersediaan Web Server:
Sebuah perusahaan memiliki dua web server yang menjalankan situs web penting mereka. Mereka ingin memastikan bahwa jika salah satu server gagal, situs web tetap dapat diakses tanpa gangguan bagi pengguna.

Teknologi apa yang paling cocok untuk mencapai tujuan ini?


Bagaimana teknologi ini akan mendeteksi kegagalan server dan mengalihkan lalu lintas?


Algoritma load balancing apa yang paling sederhana untuk diterapkan dalam kasus ini?

Skenario Optimasi Aplikasi dengan Beban Bervariasi:
Sebuah aplikasi online game memiliki beberapa game server. Beban pada setiap server dapat sangat bervariasi tergantung pada jumlah pemain aktif di setiap server. Anda ingin memastikan bahwa pemain baru selalu diarahkan ke server yang paling tidak sibuk.

Algoritma load balancing apa yang paling cocok untuk skenario ini? Jelaskan alasannya.


Bagaimana load balancer akan mengetahui server mana yang paling tidak sibuk?

Presentasikan hasil kerja dan diskusi kelompok Anda di depan kelas.
E. Eksperimen (Nilai Proyek I)

Pilih salah satu dari tugas berikut:

Rancangan Implementasi Load Balancing untuk Situs E-commerce (Simulasi Konseptual):
Anda diminta merancang solusi load balancing untuk sebuah situs e-commerce yang memiliki tiga web server (IP: 192.168.1.10, 192.168.1.11, 192.168.1.12) dan satu load balancer (VIP: 203.0.113.100). Situs ini mengalami beban lalu lintas yang tinggi dan membutuhkan session persistence untuk keranjang belanja pengguna.

Rekomendasikan jenis load balancer (hardware/software/cloud) yang akan Anda gunakan dan mengapa.


Pilih algoritma load balancing yang paling cocok dan jelaskan alasannya, terutama untuk session persistence.


Jelaskan bagaimana Anda akan mengkonfigurasi health checks untuk web server.


Buat diagram sederhana yang menunjukkan alur lalu lintas dari klien ke server backend melalui load balancer.

Analisis Perbandingan DNS-based Load Balancing vs. Application Load Balancer:
Lakukan riset singkat tentang perbedaan antara DNS-based Load Balancing dan Application Load Balancer (seperti yang disediakan oleh penyedia cloud).

Buat tabel perbandingan yang mencakup:

Lapisan OSI tempat beroperasi.


Kelebihan dan kekurangan masing-masing.


Skenario penggunaan yang paling cocok.

Diskusikan mengapa Application Load Balancer seringkali lebih disukai untuk aplikasi web modern dibandingkan DNS-based Load Balancing.
Rangkuman

Load Balancing adalah teknik mendistribusikan lalu lintas atau beban kerja ke beberapa server untuk meningkatkan ketersediaan, skalabilitas, dan kinerja.


Load balancer menggunakan Virtual IP Address (VIP) sebagai titik akses tunggal bagi klien.


Algoritma distribusi meliputi Round Robin (berurutan), Weighted Round Robin (dengan prioritas), Least Connections (ke server paling tidak sibuk), Least Response Time (ke server tercepat), dan IP Hash (untuk session persistence).


Health Checks adalah fitur krusial yang memungkinkan load balancer mendeteksi dan mengisolasi server yang gagal.


Jenis-jenis load balancer meliputi Hardware Load Balancer (kinerja tinggi, mahal), Software Load Balancer (fleksibel, biaya rendah), DNS-based Load Balancing (untuk distribusi geografis, kurang granular), dan Cloud Load Balancer (mudah, skalabel, pay-as-you-go).


Pengujian melibatkan verifikasi distribusi lalu lintas, fungsionalitas health check, dan skalabilitas.


Pemecahan masalah umum meliputi server backend tidak menerima lalu lintas, layanan tidak tersedia melalui load balancer, distribusi beban tidak merata, dan masalah session persistence.
Ulangan Akhir Bab 1
A. Pilihlah salah satu jawaban yang tepat.

Tujuan utama dari load balancing adalah ....
a. Mengurangi jumlah server yang dibutuhkan.
b. Meningkatkan keamanan jaringan dengan memfilter konten.
c. Mendistribusikan beban lalu lintas untuk meningkatkan kinerja dan keandalan.
d. Menyembunyikan alamat IP server backend.
e. Mengenkripsi semua lalu lintas data.


Jika load balancer menggunakan algoritma yang mengarahkan permintaan ke server yang saat ini memiliki jumlah koneksi aktif paling sedikit, ini adalah algoritma ....
a. Round Robin
b. Weighted Round Robin
c. Least Connections
d. IP Hash
e. Least Response Time


Fitur load balancer yang secara otomatis mendeteksi jika sebuah server backend gagal dan menghentikan pengiriman lalu lintas ke server tersebut adalah ....
a. Session Persistence
b. Virtual IP Address
c. Health Checks
d. Traffic Shaping
e. Rate Limiting


Jenis load balancing yang paling cocok untuk mendistribusikan lalu lintas antar pusat data yang berbeda secara geografis adalah ....
a. Hardware Load Balancer
b. Software Load Balancer
c. DNS-based Load Balancing
d. Cloud Load Balancer (dalam satu region)
e. Proxy Server


Dalam konfigurasi load balancing, alamat IP tunggal yang diakses oleh klien adalah ....
a. Server Backend IP
b. Gateway IP
c. Virtual IP Address (VIP)
d. Public IP
e. Private IP


Jika Anda ingin memastikan bahwa pengguna yang sama selalu diarahkan ke server backend yang sama untuk menjaga sesi login mereka, Anda akan menggunakan algoritma load balancing jenis ....
a. Round Robin
b. Least Connections
c. IP Hash
d. Weighted Round Robin
e. Least Response Time


Berikut yang bukan merupakan keunggulan dari load balancing adalah ....
a. Meningkatkan ketersediaan.
b. Meningkatkan skalabilitas.
c. Mengurangi biaya bandwidth internet.
d. Meningkatkan kinerja.
e. Memungkinkan pemeliharaan server tanpa downtime.


Perangkat lunak load balancer open-source yang populer adalah ....
a. F5 BIG-IP
b. Citrix NetScaler
c. NGINX
d. AWS ELB
e. Cisco ASA


Jika load balancer menunjukkan bahwa semua server backend "unhealthy", konsekuensinya adalah ....
a. Load balancer akan mati.
b. Layanan akan tetap tersedia tetapi lambat.
c. Klien tidak dapat mengakses layanan melalui load balancer.
d. Load balancer akan beralih ke DNS-based load balancing.
e. Server backend akan secara otomatis restart.


Mengapa hardware load balancer seringkali lebih mahal dibandingkan software load balancer?
a. Karena mereka lebih sulit dikonfigurasi.
b. Karena mereka memiliki kinerja yang lebih rendah.
c. Karena mereka adalah perangkat khusus dengan kemampuan pemrosesan tinggi.
d. Karena mereka hanya mendukung algoritma Round Robin.
e. Karena mereka tidak memiliki fitur health checks.
B. Jawablah pertanyaan-pertanyaan berikut dengan benar.

Jelaskan secara rinci bagaimana load balancing dapat meningkatkan ketersediaan layanan dalam skenario kegagalan server.


Berikan contoh skenario di mana algoritma Weighted Round Robin akan lebih cocok daripada Round Robin sederhana, dan jelaskan alasannya.


Bagaimana Anda akan menggunakan health checks dan log server backend untuk mendiagnosis masalah di mana satu server backend tidak menerima lalu lintas dari load balancer?


Jelaskan perbedaan antara load balancing pada Layer 4 (Transport Layer) dan Layer 7 (Application Layer), dan berikan contoh fitur yang hanya mungkin pada Layer 7.


Anda telah mengimplementasikan load balancing untuk aplikasi web Anda, tetapi pengguna seringkali harus login ulang saat me-refresh halaman. Apa kemungkinan penyebab masalah ini dan bagaimana Anda akan memperbaikinya?

0 komentar: