Episode ini membawa Samba dari satu server ke cluster: CTDB (Clustered Trivial Database) untuk high availability dan scale-out, cara kerja failover lewat public IP, serta kasus nyata NAS enterprise multi-node dengan storage bersama seperti GPFS dan Ceph. Kalian memahami mengapa SMB locking harus dikelola cluster-wide.

Sampai episode 17, kalian punya satu server Samba yang hebat. Episode 18 menjawab pertanyaan yang muncul saat satu server tidak cukup — atau tidak boleh mati: bagaimana membuat beberapa server Samba bekerja sebagai satu entitas? Jawabannya adalah CTDB (Clustered Trivial Database), komponen yang mengubah kumpulan node Linux menjadi NAS enterprise dengan high availability dan scale-out. Ini topik yang membedakan administrator file server biasa dari arsitek storage.
File sharing itu mudah di-cluster selama klien hanya membaca. Masalah muncul saat locking: SMB mengizinkan klien mengunci file (oplock, byte-range lock). Kalau dua node Samba mengelola lock sendiri-sendiri, node A tidak tahu node B sedang mengunci file yang sama — dan dua klien bisa "percaya" mereka memegang hak eksklusif. Hasilnya: korupsi data.
CTDB menyatukan database lock dari semua node ke satu database terdistribusi (memakai teknologi record-based locking). Setiap node bertanya ke CTDB sebelum mengunci; keputusan lock bersifat cluster-wide. Ini persis analog dari cluster file system di level SMB — inilah mengapa CTDB disebut Clustered Samba.
Public IP 192.168.10.50
|
+-------------+-------------+
| | |
node1 node2 node3
smbd+ctdb smbd+ctdb smbd+ctdb
| | |
+---- shared storage (CephFS/GPFS) ----+smbd + ctdbd dan me-mount storage bersama (cluster filesystem: CephFS, GPFS, GFS2, atau GlusterFS).ctdbd menjaga heartbeats antar node dan mengelola failover.Kunci scale-out CTDB: semua node melihat filesystem yang sama. Tidak ada "file di node 1" vs "file di node 2" — ada satu namespace, diakses semua node. CTDB tidak menyalin data; ia hanya menyeragamkan lock dan failover. Tanpa storage bersama, kalian bukan cluster, melainkan beberapa server terpisah dengan IP berbeda.
[global]
workgroup = LAB
security = user
clustering = yes
idmap config * : backend = tdb
idmap config * : range = 3000-7999clustering = yes memberi tahu Samba bahwa ia berjalan di bawah CTDB — locking dan state dipindahkan ke cluster. Semua node harus memakai konfigurasi yang identik agar perilaku konsisten.
public_addresses = /etc/ctdb/public_addressesDaftar public IP per node:
192.168.10.50/24 node1
192.168.10.51/24 node2sudo systemctl enable --now ctdbVerifikasi status cluster:
sudo ctdb status
sudo ctdb ip
sudo ctdb nodesctdb status: daftar node, peran (leader), dan status OK/DISCONNECTED.ctdb ip: public IP dan node yang aktif memegangnya.ctdb nodes: daftar anggota cluster.Warning
CTDB tidak didukung untuk peran AD DC. Replikasi AD adalah mekanisme yang berbeda — menambahkan DC kedua adalah caranya, bukan clustering (episode 9). CTDB adalah solusi untuk file server yang melayani banyak klien; jangan mencampur kedua dunia ini. Untuk file server saja, CTDB sudah cukup tangguh.
Matikan satu node (atau sudo ctdb disable node1) dan perhatikan IP berpindah:
sudo ctdb ipSaat node1 down, public IP-nya diambil node lain dalam hitungan detik — koneksi klien yang memakai IP tersebut tetap berjalan (koneksi TCP aktif bisa terputus dan harus disambung ulang, tapi layanan tidak mati). Ini esensi high availability: downtime dihitung detik, bukan jam.
CTDB meng-skala dengan menambah node (sampai batas scalability storage) — setiap node menambah kapasitas koneksi dan CPU untuk melayani klien, sementara data tetap satu namespace di storage bersama. Untuk NAS enterprise multi-node:
ctdb status dan beban tiap node (episode 20).Tip
Jangan berpikir CTDB = "replikasi data". Data tinggal di storage bersama; yang direplikasi adalah lock dan state. Artinya storage bersama adalah titik kritis — pastikan storage itu sendiri highly available (Ceph dengan replikasi, GPFS dengan quorum). Cluster Samba di atas storage tunggal yang rapuh hanyalah memindahkan titik kegagalan, bukan menghilangkannya.
clustering = yes tidak aktif di semua node, atau versi Samba berbeda.public_addresses salah format atau heartbeats terganggu — cek ctdb status.Inti yang harus dibawa pulang:
clustering = yes di smb.conf semua node; ctdb status/ctdb ip untuk memantau.Di episode 19 selanjutnya kita akan membahas Samba di Docker/Kubernetes — image samba seperti linuxserver dan dperson, mount volume untuk state, StatefulSet K8s, serta pola yang benar: container stateless dengan service yang terekspos. Modernisasi deployment tanpa kehilangan esensi Samba!