Mengatasi titik gagal paling sensitif: memahami mengapa satu NFS server adalah single point of failure, memetakan opsi HA dari DRBD+Pacemaker hingga managed NFS-as-a-Service, dan menentukan kapan upgrade ke distributed storage seperti Rook-Ceph adalah pilihan yang benar

Sejauh ini, semua Pod aplikasi berputar di satu NFS server (single PVC). Nyaman untuk lab — tetapi satu kejadian kecil (kabel jaringan, disk penuh, node reboot) menghentikan mount semua worker. Episode 20 membahas high availability NFS server dengan jujur: kapan perlu, opsi apa yang bisa dipilih, dan kapan solusi "lebih besar" sebenarnya lebih salah daripada benar.
Arsitektur kita saat ini:
Worker 1 ──┐
Worker 2 ──┼──► NFS SERVER (satu Pod/Service) ──► PersistentVolume ──► Disk Node
Worker 3 ──┘ (single point of failure)Jika NFS server mati:
hard mount (episode 19) menggantung — proses aplikasi tidak kemana-mana.Ini tidak berarti arsitektur one-server salah untuk lab — tetapi keputusan ini harus sadar: kalian menukar kesederhanaan dengan toleransi.
Note
Test yang tegas: kubectl scale deploy nfs-server --replicas=0 lalu lihat dampaknya. Jika aplikasi berhenti berfungsi dan tidak ada rencana pemulihan dalam 5 menit, SPOF nyata — dan kalian memutuskan bahwa risiko itu tidak melebihi nilai kesederhanaan.
Pendekatan klasik di bare-metal: mereplikasi block secara sinkron antara dua node, dengan VIP dan failover otomatis:
Dua node NFS
├── DRBD (replikasi block sinkron)
├── Pacemaker/Corosync (manajemen resource & split-brain prevention)
├── Virtual IP (VIP): klien mount ke VIP, bukan ke IP node
└── STONITH (fencing): mematikan node yang membingungkanKelebihan: failover dalam hitungan detik, tanpa mengubah alamat mount (VIP).
Kekurangan di Kubernetes: menjalankan Pacemaker/DRBD di dalam cluster berarti menggandakan kompleksitas sistem sendiri (fencing, quorum, kernel module) — biasanya di luar scope "simple shared storage".
Gluster menawarkan HA terdistribusi, tetapi dalam praktik di stack ini: penyesuaian cache yang serius, kontrol peledakan saat terganggu, dan overhead operasi jauh melebihi manfaat untuk jumlah file media yang kita kelola. Untuk kepentingan ini, lewati Gluster dan lihat Rook-Ceph bila benar-benar butuh distributed storage.
Di managed Kubernetes, biasanya ada tawaran native:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: managed-nfs
provisioner: kubernetes.io/<cloud-nfs>
parameters:
server: nfs.gcp.internal # contoh
export: /share/laravelTidak ada yang perlu di-HA-kan — penyedia mengelolanya. Kapan pilihan ini unggul: tim kecil, menginginkan guarantee SLA dan tidak ingin memakai waktu untuk runbook NFS (lihat perbandingan biaya di episode 26).
Tip
Urutan keputusan HA yang masuk akal: (1) pastikan operasi NFS ditangani dengan jelas (satu halaman runbook); (2) bila ada kebutuhan SLA — utamakan data penting: backup berlapis (ep 21) dan NFS server yang sehat; (3) terakhir baru pertimbangkan DRBD/Rook — karena kompleksitas justru paling tinggi dan berisiko merusak yang sudah berjalan baik.
Jika kalian memilih jalur DRBD/Pacemaker, tiga prinsip wajib:
Verifikasi dari sisi klien:
mount | grep nfs
df -h /shared
pwd && touch /shared/sekali-tulis.txt && cat /shared/sekali-tulis.txtDengan mount hard, operasi yang menggantung saat failover akan melanjutkan otomatis setelah VIP pindah — itulah nilai hard + intr (episode 19, 25).
Ada batas ketika NFS dengan HA klasik bukan jawaban yang tepat lagi. Pindah ke Rook-Ceph (atau setara) ketika:
Ceph memberi: replication factor, self-healing, erasure coding, tiering. Biayanya: opers yang jauh lebih besar (lebih banyak komponen bergerak) dan tim harus mampu menyerapnya.
Lihat series belajar Rook-Ceph untuk jalan setapak menuju distributed storage bila kebutuhan kalian sudah di sana.
Warning
Kutukan medium: Jangan membangun DRBD/Ceph yang kompleks hanya karena NFS server kadang turun — solusi itu sering menjadi sumber downtime baru yang lebih parah. Evaluasi: apakah masalah yang kalian hadapi benar-benar HA, atau hanya butuh backup yang cepat (ep 21) dan NFS server yang lebih kuat saja.
Pada episode 20 ini, kalian memahami titik gagal dan jalur HA dengan kepala dingin:
Inti yang harus dibawa pulang:
hard menggantung saat server mati.hard.Di episode 21 selanjutnya kita akan melindungi data yang tersimpan di NFS ini: instalasi Velero, backup namespace + volume, restore yang teruji, dan strategi RPO/RTO yang dapat dijalankan tim kecil. Sampai jumpa di episode 21!