High Availability Architecture
Menghilangkan single point of failure dengan redundansi, failover, VIP, replikasi database, dan pengujian chaos.
High Availability (HA) berarti layanan tetap tersedia meskipun satu komponen gagal. HA bukan sekadar menambah server; ia menghilangkan single point of failure (SPOF) dan menyiapkan failover.
Single point of failure
| Komponen | Jika gagal | Mitigasi |
|---|---|---|
| Satu app instance | Layanan mati | Multiple instance |
| Satu proxy | Semua trafik mati | Dua proxy + VIP/DNS |
| Database tunggal | Data tidak bisa diakses | Replica + failover |
| Redis tunggal | Cache/session hilang | Replica/Sentinel |
| Satu switch/jalur | Jaringan terputus | Redundansi jaringan |
| Backup di server yang sama | Hilang saat server rusak | Backup offsite |
Level HA
| Level | Deskripsi | Contoh |
|---|---|---|
| 99% | ~3,65 hari downtime/tahun | Single server |
| 99,9% | ~8,7 jam/tahun | Redundansi dasar |
| 99,99% | ~52 menit/tahun | Multi-node, failover otomatis |
| 99,999% | ~5 menit/tahun | Multi-region, sangat kompleks |
Biaya meningkat tajam seiring level HA. Pilih sesuai kebutuhan bisnis.
Failover proxy dengan Keepalived
Dua server Nginx dengan IP virtual (VIP):
Client
│
▼
VIP 192.168.1.100
├── nginx-1 (MASTER)
└── nginx-2 (BACKUP)Keepalived memindahkan VIP jika master gagal.
Konfigurasi sederhana di kedua node:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass rahasia
}
virtual_ipaddress {
192.168.1.100/24
}
}Node backup memakai state BACKUP dan priority lebih rendah.
VRRP membutuhkan jaringan yang mendukung multicast
Pastikan jaringan mengizinkan VRRP/multicast. Di cloud tertentu, fitur ini dibatasi.
Failover DNS
Alternatif tanpa VIP: dua alamat IP dengan health check DNS.
- DNS round robin — sederhana, tetapi failover bergantung TTL.
- DNS failover — provider memeriksa health dan mengubah record.
- Anycast — skala besar, kompleks.
DNS bukan mekanisme failover instan karena cache TTL. Untuk aplikasi kritis, gunakan load balancer dengan health check.
Database HA
Primary + replica
App ──write──▶ Primary
└──read────▶ Replica- Primary menangani write.
- Replica menangani read dan menjadi kandidat failover.
- Replikasi bisa asynchronous atau synchronous.
Failover
- Manual — promosikan replica, ubah koneksi app.
- Otomatis — Patroni/repmgr untuk PostgreSQL, Orchestrator untuk MySQL.
Risiko utama: split brain (dua primary). Gunakan quorum dan fencing.
Redis HA
| Mode | Fungsi |
|---|---|
| Replica | Read scaling dan cadangan |
| Sentinel | Failover otomatis |
| Cluster | Sharding dan HA |
Untuk session/cache, kehilangan Redis sementara bisa ditoleransi dengan fallback, tetapi session pengguna bisa hilang.
Load balancer HA
- Dua instance Nginx + Keepalived.
- Atau load balancer cloud terkelola.
- Health check ke backend.
- Jangan biarkan load balancer menjadi SPOF.
Backup dan HA bukan hal yang sama
HA menjaga layanan tetap hidup saat komponen gagal. Backup melindungi dari data loss, korupsi, atau kesalahan manusia. Keduanya diperlukan.
Menguji HA
- Matikan satu app instance — trafik tetap jalan.
- Matikan proxy master — VIP pindah.
- Hentikan database primary — failover berjalan.
- Putuskan jaringan sementara — cek perilaku.
- Restore backup di lingkungan terpisah.
Uji sebelum insiden
HA yang belum diuji hanya asumsi. Lakukan game day/chaos test secara berkala dan catat hasilnya.
Checklist HA
- Tidak ada SPOF pada jalur trafik.
- Minimal dua app instance.
- Proxy redundan.
- Database memiliki replica dan prosedur failover.
- Cache memiliki strategi fallback.
- Backup offsite dan teruji.
- Health check di semua lapisan.
- Monitoring dan alert.
- Runbook failover.
- HA diuji berkala.
Ringkasan
- HA menghilangkan SPOF dan menyiapkan failover.
- Redundansi harus mencakup app, proxy, database, dan jaringan.
- Database HA membutuhkan quorum dan pencegahan split brain.
- Backup tetap wajib meskipun sistem HA.
Selanjutnya
Optimalkan aplikasi di Performance Engineering & Resource Management.
Load Balancing Strategy & Multiple Instances
Menjalankan beberapa instance aplikasi, memilih algoritma load balancing, mengelola session, dan menjaga koneksi database.
Performance Engineering & Resource Management
Mengukur dan meningkatkan performa aplikasi: latency, throughput, profiling, load testing, dan alokasi resource.