Belajar OpenVPN - Multi-Server & Cluster
Episode 17 of 23

Belajar OpenVPN - Multi-Server & Cluster

Episode ini membahas penskalaan horizontal: banyak instance OpenVPN untuk segmentasi dan kapasitas, scripting learn-address untuk sinkronisasi alamat, sampai high availability dengan keepalived dan HAProxy di depan banyak server.

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

Pendahuluan

Episode 11 memperkenalkan cara menumbuhkan kapasitas: instance ganda dan round-robin DNS. Episode 17 ini mematangkannya menjadi arsitektur multi-server dan cluster yang layak untuk production — dengan failover nyata, bukan sekadar sebaran beban.

Kalian akan belajar menjalankan banyak instance OpenVPN untuk segmentasi dan kapasitas, memakai scripting learn-address untuk menjaga tabel alamat tetap sinkron antar server, dan menempatkan keepalived serta HAProxy di depan banyak server untuk high availability dengan failover otomatis.

Ini adalah episode di mana OpenVPN berubah dari satu service menjadi infrastruktur. Setelah episode ini, kalian bisa membangun VPN yang tetap online meskipun satu server mati.

Multi-Instance dan Segmentasi

Banyak Instance, Banyak Tujuan

Menjalankan banyak instance OpenVPN bukan sekadar soal kapasitas — ini soal segmentasi. Contoh umum: satu instance untuk karyawan, satu instance untuk partner eksternal, dan satu instance khusus site-to-site. Setiap instance punya port, protokol, atau subnet sendiri:

Aktifkan beberapa instance
systemctl enable openvpn-server@staff
systemctl enable openvpn-server@partner
systemctl enable openvpn-server@s2s
systemctl start openvpn-server@staff
systemctl start openvpn-server@partner
systemctl start openvpn-server@s2s

Setiap instance punya konfigurasi sendiri di /etc/openvpn/server/, CA atau kebijakannya sendiri, dan subnet VPN yang terpisah. Jika satu instance diserang atau rusak, yang lain tidak terpengaruh.

Distribusi Koneksi Antar Instance

Untuk mendistribusikan client antar instance, gabungkan management interface dan scripting. Tiap instance bisa memanggil script saat ada client baru masuk dan mengarahkannya ke instance dengan beban paling rendah. Pola ini meniru connection broker yang dibahas di episode 11, kini diwujudkan nyata.

learn-address untuk Sinkronisasi

Mengapa Sinkronisasi Diperlukan

Ketika banyak server berbagi satu subnet VPN virtual, konflik bisa terjadi: dua server mengalokasikan alamat yang sama, atau server tidak tahu bahwa sebuah subnet dirutekan melalui server lain. learn-address menjawabnya dengan memanggil script setiap kali ada perubahan alamat.

Deklarasi learn-address
learn-address /etc/openvpn/scripts/learn-address.sh
script-security 2

learn-address /etc/openvpn/scripts/learn-address.sh memanggil script pada setiap operasi add, update, atau delete terhadap alamat yang dikenal server. Informasi ini bisa dipakai untuk mencegah duplikasi alamat atau menyebarkan tabel ke node lain.

Membangun Direktori Alamat Terpusat

Script learn-address.sh bisa menulis ke direktori terpusat — misalnya Redis atau file NFS bersama — sehingga semua server membaca informasi yang sama. Ketika satu server menambahkan alamat, server lain langsung tahu. Ini adalah fondasi dari cluster yang benar-benar sadar alamat.

High Availability dengan Keepalived

Virtual IP untuk Failover

Keepalived memberikan sebuah virtual IP (VIP) yang bisa berpindah otomatis antar server ketika salah satunya mati. Client tetap memakai alamat yang sama; infrastruktur di belakangnya yang berubah:

Konfigurasi keepalived VRRP
vrrp_instance VPN {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    virtual_ipaddress {
        203.0.113.10
    }
}

virtual_router_id 51 dan priority 100 menentukan urutan master dan backup. Server dengan priority tertinggi memegang VIP; ketika dia mati, backup mengambil alih dalam hitungan detik. Client tidak perlu tahu apa pun tentang perpindahan ini.

Persistensi Sesi dan Koneksi

Permasalahan VPN berbeda dari web service: sesi client terikat ke server tertentu lewat state koneksi. Untuk memudahkan failover, batasi masa berlaku sesi dan buat client otomatis reconnect — OpenVPN melakukannya secara default dengan --connect-retry.

Pastikan pula firewall ikut berpindah: rule iptables harus diterapkan pada server yang menjadi master, atau dijalankan lewat script yang dipicu oleh transisi VRRP. Keepalived bisa menjalankan script notify pada saat transisi state.

Load Balancing dengan HAProxy

HAProxy sebagai Frontend UDP

HAProxy terkenal untuk HTTP, tapi versi modern mendukung proxy UDP — persis yang dibutuhkan OpenVPN. HAProxy menerima koneksi di satu frontend dan membaginya ke banyak backend server:

Frontend UDP untuk OpenVPN
frontend openvpn-udp
    bind :::1194
    mode tcp
    use_backend vpn_servers
 
backend vpn_servers
    balance leastconn
    server vpn1 10.0.0.11:1194 check
    server vpn2 10.0.0.12:1194 check

balance leastconn mengarahkan koneksi baru ke server dengan koneksi paling sedikit. Health check otomatis membuat server yang down dikeluarkan dari pool, dan client reconnect berpindah ke server yang sehat.

Keterbatasan Layer 4

Proxy UDP di HAProxy bekerja di layer 4: ia meneruskan paket tanpa membuka isinya. Ini sempurna untuk OpenVPN, tetapi berarti session affinity tidak ada — setiap reconnect bisa jatuh ke server berbeda. Untuk penggunaan normal dengan reconnect otomatis, ini bukan masalah besar.

Arsitektur Gabungan

Menyatukan Semua Lapisan

Arsitektur production lengkap menyusun lapisan demi lapisan: HAProxy sebagai pintu masuk untuk mendistribusikan beban, keepalived memberi VIP pada HAProxy itu sendiri, dan di belakangnya banyak instance OpenVPN yang berbagi direktori alamat terpusat lewat learn-address.

Setiap lapis memiliki tanggung jawab tunggal dan bisa diskalakan sendiri-sendiri. Kegagalan di satu lapis tidak meruntuhkan keseluruhan — inilah nilai sebenarnya dari arsitektur cluster.

Penutup

Inti yang harus dibawa pulang:

  • Banyak instance memisahkan segmentasi dan membagi kapasitas.
  • learn-address menyinkronkan tabel alamat antar server.
  • Keepalived menyediakan virtual IP dengan failover otomatis.
  • HAProxy mendistribusikan koneksi UDP ke banyak backend.
  • Health check otomatis mengeluarkan server yang rusak dari pool.
  • Arsitektur berlapis membuat kegagalan tidak meruntuhkan keseluruhan.

Di episode 18 selanjutnya kita akan membahas performance tuning dan benchmarking — mengoptimalkan buffer dengan sndbuf dan rcvbuf, menyesuaikan MTU dengan tun-mtu, fragment, dan mssfix, sampai mengukur throughput dan latensi dengan iperf3. Setelah episode ini, kalian bisa membuktikan angka performa server VPN kalian.

Belajar OpenVPN - Multi-Server & Cluster | Belajar OpenVPN