Sesi 10: Layer 4 dan Layer 7: Satpam Buta vs Satpam Pintar
Bagaimana jika satpam di pintu masuk hanya boleh melihat warna baju pengunjung tanpa boleh bertanya keperluannya? Apa yang jadi jauh lebih cepat, dan apa yang jadi mustahil dilakukan?
1. Lapisan Keputusan: Koneksi vs Isi Pesan
Ketika request masuk ke sistem, Load Balancer harus memutuskan rute tujuan. Di lapisan model OSI mana keputusan itu diambil menentukan kecepatan, konsumsi resource, dan fleksibilitas perutean (routing).
MODEL OSI LOAD BALANCING
┌──────────────┐
│ 7. APLIKASI │ ──► L7: Membaca HTTP/HTTPS, Header, Path, Cookie, Payload
├──────────────┤
│ 6. PRESENTASI│
├──────────────┤
│ 5. SESI │
├──────────────┤
│ 4. TRANSPORT│ ──► L4: Hanya melihat IP Pengirim, IP Tujuan, & Port (TCP/UDP)
├──────────────┤
│ 3. JARINGAN │
└──────────────┘
2. Layer 4: TCP Passthrough (Cepat tapi Buta)
Cara Kerja:
- L4 Load Balancer hanya memeriksa paket pada level transport (IP address dan TCP/UDP port, misal
:443atau:80). - Begitu koneksi TCP handshake terbentuk (SYN, SYN-ACK, ACK), LB langsung mem-forward paket biner data langsung ke server backend tanpa membuka enkripsi TLS atau membaca isi request HTTP.
Kelebihan:
- Kecepatan Maksimal & Throughput Tinggi: LB tidak perlu CPU mahal untuk parsing teks HTTP atau dekripsi SSL.
- Resource Ringan: 1 mesin L4 (misal HAProxy mode TCP atau IPVS/LVS) bisa menangani ratusan ribu hingga jutaan paket per detik.
- Protokol Agnostik: Bisa untuk database (PostgreSQL
:5432, MySQL:3306), Redis (:6379), streaming video (RTSP/RTMP), atau game server (UDP).
Kekurangan:
- Buta Isi: Tidak bisa tahu URL path (
/api/v1/paymentvs/static/img.png), tidak bisa baca HTTP Header, tidak bisa baca cookie. - Semua traffic masuk ke pool server yang sama secara seragam.
3. Layer 7: Application Routing & TLS Termination (Pintar tapi Berat)
Cara Kerja:
- L7 Load Balancer bertindak sebagai full reverse proxy.
- LB menyelesaikan koneksi TCP dan melakukan TLS Termination (dekripsi SSL/HTTPS menggunakan sertifikat di LB).
- LB membaca HTTP method (
GET,POST), header, cookie, dan URL path sebelum memilih server backend.
Fitur Utama L7:
- Path-Based Routing:
-
/api/checkout──► diarahkan keCluster Backend Payment-/images/*──► diarahkan keCluster Storage / CDN Origin-/ws──► diarahkan keCluster WebSocket Server - Header & Host Routing:
- Host
mobile.tokomu.comvsdesktop.tokomu.comdiarahkan ke backend berbeda. - SSL/TLS Offloading: - Server backend di jaringan privat (LAN) tidak perlu membuang CPU untuk enkripsi/dekripsi HTTPS; komunikasi antar-LB dan backend berjalan via HTTP polos berkecepatan tinggi.
- WAF & Security Inspection: - Memfilter SQL Injection, XSS, dan rate-limiting per API endpoint.
Konsekuensi:
- Biaya CPU Tinggi: Dekripsi TLS dan parsing string HTTP memakan CPU ratusan kali lebih banyak dibanding L4.
4. Perbandingan L4 vs L7
| Aspek | Layer 4 (Transport) | Layer 7 (Application) |
|---|---|---|
| Data yang Dilihat | IP & Port TCP/UDP | HTTP URL, Path, Headers, Cookies |
| Enkripsi TLS | Passthrough (Tidak dibuka) | Termination (Didekripsi di LB) |
| Kinerja / Throughput | Ekstrem cepat (Jutaan pps) | Lebih rendah (CPU-intensive) |
| Fleksibilitas Routing | Rendah (Hanya ke 1 backend pool) | Sangat tinggi (Microservices routing) |
| Protokol | TCP, UDP, MySQL, Redis, gRPC | HTTP, HTTPS, WebSocket, gRPC |
5. Sticky Session: Penyelamat Hari Ini, Pembunuh Besok
Sticky Session (Session Affinity) adalah mekanisme L7 di mana load balancer menyuntikkan cookie atau membaca cookie session user agar user tertentu selalu diarahkan ke server backend yang sama.
┌────────────────────────┐
│ L7 Load Balancer │
└───────────┬────────────┘
Cookie: │ Cookie:
SRV=A │ SRV=B
┌─────────────┴─────────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Server A │ │ Server B │
│ Session User│ │ Session User│
│ #123 │ │ #456 │
└─────────────┘ └─────────────┘
Mengapa Digunakan?
- Dipakai ketika aplikasi legacy menyimpan session data di RAM lokal server (
in-memory session).
Mengapa Berbahaya? (Jebakan Jangka Panjang):
- Load Imbalance: Jika beberapa super-user aktif menempel di Server A, Server A akan jebol sementara Server B menganggur.
- Downtime Merusak User Experience: Begitu Server A crash atau di-drain untuk update, semua session user di Server A hilang seketika (ter-logout paksa).
- Menghalangi Autoscaling: Server tidak bisa dimatikan dengan aman saat sepi karena masih ada koneksi yang "lengket".
Solusi Sejati: Jadikan aplikasi Stateless dan simpan session di Redis cluster terpusat (dibahas lengkap di Sesi 12).
6. Istilah Kunci
Layer 4 (L4): Routing tingkat transport (TCP/UDP, IP & Port).Layer 7 (L7): Routing tingkat aplikasi (HTTP, URL path, headers).TCP Passthrough: Meneruskan koneksi biner tanpa dekripsi atau inspeksi payload.TLS Termination: Membuka enkripsi HTTPS di load balancer.Path-Based Routing: Mengarahkan traffic ke cluster berbeda berdasarkan URL path.Sticky Session / Session Affinity: Mengunci user ke server tertentu via cookie.