Episode ini membahas membuat WireGuard tahan gagal: keepalived dengan VRRP untuk memindahkan IP virtual antar server, injeksi rute via BGP dengan BIRD dan GoBGP, pembaruan endpoint dinamis saat failover, serta strategi backup dan recovery.

Server WireGuard yang mati berarti semua client terputus. Untuk deployment yang kritis, satu server saja tidak cukup. Solusinya adalah arsitektur high availability: dua atau lebih server WireGuard dengan mekanisme pemindahan kendali otomatis saat salah satu gagal.
Episode 19 membahas pola HA untuk WireGuard: keepalived dengan VRRP untuk memindahkan IP virtual, injeksi rute via BGP dengan BIRD dan GoBGP, pembaruan endpoint dinamis, serta strategi backup dan recovery.
Prinsip yang harus diingat: high availability bukan berarti tidak ada kegagalan, melainkan kegagalan yang tidak dirasakan pengguna. Fokus kita di episode ini adalah memperkecil waktu pemulihan dan menghilangkan langkah manual yang bisa dilupakan saat panik.
Keepalived menerapkan protokol VRRP untuk membuat IP virtual yang bisa berpindah antar server. Client selalu menunjuk ke IP virtual ini, dan ketika server utama mati, IP virtual pindah ke server cadangan dalam hitungan detik.
vrrp_instance wg_vip {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
203.0.113.50/32 dev eth0
}
}Di server cadangan, ganti state MASTER menjadi BACKUP dan priority menjadi lebih rendah, misalnya 90. Selama proses, jalankan keepalived di kedua server.
Kedua server harus berbagi kunci privat WireGuard yang sama, karena client sudah mengenal kunci publik dari IP virtual tersebut. Sinkronkan /etc/wireguard/privatekey dan wg0.conf dari server utama ke cadangan, misalnya lewat rsync atau vault.
Sinkronisasi kunci juga mencakup kunci publik peer yang sama di kedua server, sehingga tidak ada peer yang hilang saat failover. Pastikan juga file wg0.conf di kedua sisi identik, kecuali bagian yang memang sengaja berbeda.
rsync -avz /etc/wireguard/ server2:/etc/wireguard/Dengan BGP, kalian bisa mengumumkan subnet tunnel ke router jaringan, sehingga rute menuju client selalu menunjuk ke server yang aktif. BIRD adalah daemon BGP yang ringan dan populer untuk tugas ini:
protocol bgp wg_peering {
local as 64512;
neighbor 192.168.10.1 as 64513;
export where net = 10.9.0.0/24;
}Konteks: export where net = 10.9.0.0/24 mengumumkan subnet tunnel ke router upstream. Ketika server mati, rute ditarik dan trafik dialihkan ke server lain yang mengumumkan subnet yang sama.
GoBGP adalah implementasi BGP dalam Go yang mudah diotomasi lewat gRPC. Untuk kalian yang lebih nyaman dengan API daripada file konfigurasi, GoBGP bisa dipakai untuk mengumumkan dan menarik rute secara dinamis saat failover.
Kombinasi VRRP dan BGP sering dipakai bersamaan: VRRP memindahkan IP virtual untuk endpoint client, sementara BGP memastikan jaringan upstream tahu rute mana yang harus dituju. Keduanya bekerja di lapisan yang berbeda dan saling melengkapi.
Client menyimpan endpoint IP virtual atau alamat server utama. Jika memakai IP virtual, tidak ada yang perlu diperbarui di client — IP virtual yang berpindah. Alternatif lain adalah skrip yang memperbarui endpoint client saat failover:
Pendekatan IP virtual dan update endpoint dinamis tidak saling eksklusif; beberapa deployment memakai keduanya sebagai lapisan cadangan. Yang penting adalah setiap mekanisme punya jalur aktivasi yang teruji, agar tidak ada ambiguitas saat kegagalan benar-benar terjadi.
wg set wg0 peer <PUBLIK_CLIENT> endpoint 203.0.113.60:51820Perintah wg set wg0 peer ... endpoint bisa dijalankan dari skrip failover untuk mengarahkan peer ke server cadangan. Ini berguna ketika IP virtual tidak tersedia di lingkungan tertentu.
High availability tidak berarti apa-apa tanpa data yang bisa dipulihkan. Siapkan arsip terenkripsi berisi kunci privat dan seluruh konfigurasi, seperti yang kita bahas di episode 12:
/etc/wireguard/ seluruh server, dienkripsi dan disimpan di luar.Simulasi rutin: matikan server utama dan ukur berapa lama client kembali terhubung. Idealnya failover terjadi dalam hitungan detik dan tidak memerlukan intervensi manual. Catat hasilnya sebagai tolok ukur yang harus dijaga.
Dokumentasikan hasil uji failover itu — termasuk waktu pemulihan dan masalah yang muncul — lalu jadikan dasar perbaikan. Arsitektur HA yang tidak pernah diuji hanyalah arsitektur yang belum terbukti.
Episode 19 menuntaskan topik high availability: keepalived dengan VRRP memindahkan IP virtual, BGP lewat BIRD dan GoBGP mengumumkan rute, pembaruan endpoint dinamis, serta backup dan uji failover yang teratur.
Inti yang harus dibawa pulang:
wg set ... endpoint memperbarui endpoint client secara live.Di episode 20 selanjutnya kita membahas automation dan IaC — mengelola WireGuard dengan Ansible dan Terraform, serta alat manajemen terpusat seperti wg-dashboard, Firezone, Netmaker, Tailscale, dan Headscale.