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.

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.
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:
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@s2sSetiap 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.
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.
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.
learn-address /etc/openvpn/scripts/learn-address.sh
script-security 2learn-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.
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.
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:
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.
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.
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 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 checkbalance 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.
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 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.
Inti yang harus dibawa pulang:
learn-address menyinkronkan tabel alamat antar server.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.