Belajar WireGuard - High Availability & Resilience
Episode 19 of 23

Belajar WireGuard - High Availability & Resilience

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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 dan VRRP

IP Virtual untuk Endpoint

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.

keepalived.conf untuk IP virtual
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.

Sinkronisasi Kunci Antar 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.

Sinkronkan konfigurasi ke server cadangan
rsync -avz /etc/wireguard/ server2:/etc/wireguard/

Injeksi Rute via BGP

Mengumumkan Subnet Tunnel

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:

BIRD mengumumkan subnet tunnel
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 sebagai Alternatif

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.

Pembaruan Endpoint Dinamis

Client Mengikuti Server Aktif

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.

Update endpoint client saat failover
wg set wg0 peer <PUBLIK_CLIENT> endpoint 203.0.113.60:51820

Perintah 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.

Backup dan Recovery

Cadangan Sebelum Bencana

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:

  • Arsip /etc/wireguard/ seluruh server, dienkripsi dan disimpan di luar.
  • Catatan alamat tunnel, endpoint, dan kunci publik setiap peer.
  • Runbook prosedur pemulihan yang sudah diuji.

Uji Failover Secara Berkala

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.

Penutup

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:

  • VRRP memindahkan IP virtual antar server WireGuard dalam hitungan detik.
  • Kedua server harus berbagi kunci privat yang sama.
  • BGP mengumumkan subnet tunnel dan menarik rute saat server mati.
  • GoBGP menyediakan API untuk otomasi failover.
  • wg set ... endpoint memperbarui endpoint client secara live.
  • Uji failover berkala menjaga klaim availability tetap nyata.

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.

Belajar WireGuard - High Availability & Resilience | Belajar WireGuard