Belajar Kubernetes Block Storage RWO - NetworkTopology, ReplicaPlacement & Multi-AZ
Episode 11 of 28

Belajar Kubernetes Block Storage RWO - NetworkTopology, ReplicaPlacement & Multi-AZ

Memahami cara Longhorn menempatkan replika: anti-affinity, tolerations, dan nodeSelector. Kalian juga akan mendalami replica scheduling berbasis topology.kubernetes.io zone/region untuk high availability multizone serta mensimulasikan label zone pada worker node.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Membuat 3 replika tidak otomatis membuat data HA — kalau ketiganya berdiam di node yang sama, satu keran mati berarti semuanya pergi. Episode 11 membahas di mana replika diletakkan: anti-affinity, node selector, toleration, dan terutama topology zone/region untuk HA lintas-zona.

Mengapa penting? Keputusan penempatan replika menentukan ke mana data pergi saat node sibuk atau mati. Dengan memahami topology, kalian bisa membangun arsitektur yang bertahan bukan hanya dari satu node, tapi dari seluruh zona yang mati.

Replica Scheduling Default

Anti-Affinity Bawaan

Longhorn menyebar replika volume ke node yang berbeda secara default melalui replicaAntiaffinity: hard. Ini pilihan bijak: jika satu node mati, minimal satu replika bertahan di node lain.

Mari cek setting:

Lihat volume & lokasi replika
kubectl -n longhorn-system get volumes -o jsonpath='{range .items[*]}{.metadata.name}{" -> "}{.spec.replicaZonesList}{"\n"}{end}'
kubectl -n longhorn-system get replicas.longhorn.io -o wide

Perhatikan kolom NODE pada replika — seharusnya berbeda-beda.

Tolerations & nodeSelector

Pada cluster dengan node khusus (misal node storage diberi label storage-node=true), pakai nodeSelector di volume:

yaml
volumeNodeSelector:
  - storage-node=true
 
volumeTolerations:
  - key: dedicated
    operator: Equal
    value: storage
    effect: NoSchedule

Setting ini bisa ditetapkan dalam StorageClass parameter atau per-volume di UI. Berguna ketika ingin mengunci data plane hanya pada node dengan disk khusus.

Topology / Region / Zone Handling

Label Topology Kubernetes

Kubernetes 1.17+ memberikan label standar pada node:

  • topology.kubernetes.io/zone
  • topology.kubernetes.io/region

Longhorn membacanya untuk scheduling replika.

Tambah label zone pada worker
kubectl label node worker-1 topology.kubernetes.io/zone=zone-a
kubectl label node worker-2 topology.kubernetes.io/zone=zone-b

Setting Anti-Affinity Zona

Di Longhorn, ada dua tingkat:

  • replicaSoftAntiAffinity: default true. Replika diusahakan tersebar di node/zone berbeda, tapi boleh terdorong bila ruang terbatas.
  • replicaZoneLevelAntiAffinity: default false. Jika diaktifkan, Longhorn hard menempatkan replika di zona berbeda — tidak boleh dua replika di zona sama.

Untuk Multi-AZ yang benar, aktifkan replicaZoneLevelAntiAffinity:

yaml
# via StorageClass parameter, di UI (Setting → replicaZoneLevelAntiAffinity), atau Helm values
replicaSoftAntiAffinity: "true"
replicaZoneLevelAntiAffinity: "true"

Dengan begitu, pada kluster dengan replika 3 di 3 zona, satu zona mati masih menyisakan dua replika di dua zona lain → volume tetap Healthy.

Multi-AZ: HA Geografis

Pola Arsitektur

100%

Dengan 3 worker di 3 zona berbeda dan volume 3-replica, Longhorn menempatkan satu replika tiap zona. Database tetap bisa menulis meski satu zona mati total.

Batasan

  • Multi-AZ membutuhkan minimal 3 worker di 3 zona.
  • Network antar zona lebih mahal (bandwidth & latency) — write ke 3 zona lebih lambat dibanding 1 node.
  • Biaya: 3 replika = 3× disk.

Untuk lab 2 node, cukup replicaSoftAntiAffinity tanpa zone-level hard.

Simulasi Topologi

Skenario Lab 3 Worker

  1. Label worker-1, worker-2, worker-3 dengan zone berbeda.
  2. Set replicaZoneLevelAntiAffinity: true.
  3. Buat volume 3 replika di StorageClass longhorn-ha.
  4. Amati di UI → volume → kartu Replica: satu per node, satu per zone.

Uji Zona Mati

Simulasikan zona A mati
kubectl drain worker-1 --delete-emptydir-data --ignore-daemonsets --force

Volume harus tetap Healthy (2/3 replika di zona lain), status Degraded hanya sesaat lalu rebuild ke node yang tersedia (jika ada rekaman tidak terpakai) atau menunggu node kembali.

Note

Rebuild membutuhkan node tujuan dengan ruang dan zona berbeda (karena hard anti-affinity). Jika node tambahan tidak ada, volume tetap degraded 2/3 sampai node kembali — membaiknya tetap aman selama kuorum (2) terpenuhi.

Penutup

Inti yang harus dibawa pulang:

  • Anti-affinity default menyebar replika ke node berbeda — jangan hilangkan tanpa alasan.
  • nodeSelector/tolerations mengontrol node mana yang boleh menampung replica.
  • Label topology.kubernetes.io/{zone,region} + replicaZoneLevelAntiAffinity memberi HA multizone.
  • Multi-AZ butuh ≥ 3 node, biaya bandwidth & latency lebih tinggi — pertimbangkan RTO di episode 16.

Di episode 12 selanjutnya kita akan mengaventurasi keamanan Longhorn: CSI, RBAC, dan akses UI — securityContext, least-privilege ServiceAccount, proteksi dashboard dengan Ingress + auth, serta kebersihan secret backup. Sampai jumpa di episode 12!

Belajar Kubernetes Block Storage RWO - NetworkTopology, ReplicaPlacement & Multi-AZ | Belajar Kubernetes Block Storage RWO