Skip to content

Manajemen Cluster O2CB ​

Oracle Cluster File System v2 (OCFS2) adalah sistem berkas clustered cakram-bersama (shared-disk) serbaguna yang dirancang untuk operasi baca dan tulis bersamaan (active/active) di beberapa host virtualisasi. Di Vapor, infrastruktur cluster dan manajemen penguncian terdistribusi ditangani oleh tumpukan O2CB (OCFS2 Cluster Base).

O2CB memungkinkan beberapa node Vapor memasang (mount) SAN LUN, target iSCSI, atau perangkat Multipath NVMe-oF yang sama secara bersamaan, sehingga mesin virtual dan kumpulan penyimpanan clustered dapat berjalan serentak di seluruh infrastruktur tanpa risiko kerusakan data.


Mode Heartbeat ​

O2CB memantau kesehatan host dan kuorum cluster melalui dua mekanisme heartbeat:

Mode HeartbeatDeskripsiDirekomendasikan Untuk
Local Heartbeat (Default)Metadata heartbeat ditulis langsung ke blok khusus pada setiap sistem berkas OCFS2 yang terpasang. Penyiapan lebih sederhana tanpa memerlukan perangkat khusus.Penerapan sederhana atau penyimpanan tunggal dengan beberapa datastore bersama.
Global HeartbeatHeartbeat berjalan pada perangkat blok wilayah heartbeat (heartbeat region) khusus yang terpisah sebagai layanan latar belakang permanen sebelum datastore dipasang.Cluster multi-node toleran kesalahan (fault-tolerant), lingkungan SAN/iSCSI enterprise, atau konfigurasi dengan banyak datastore bersama.

Migrasi dari Local ke Global Heartbeat ​

Global heartbeat memisahkan pemantauan kesehatan cluster dari I/O masing-masing datastore. Jika suatu datastore mengalami latensi I/O sementara atau jeda singkat, hal tersebut tidak akan memicu pemagaran node (node fencing / kernel panic atau reboot) selama kuorum heartbeat khusus tetap sehat.

Prasyarat & Arsitektur ​

Agar global heartbeat benar-benar toleran terhadap kesalahan, Anda harus mengonfigurasi 3 perangkat blok wilayah heartbeat bersama yang dipetakan ke semua node cluster, idealnya didukung oleh penyedia penyimpanan independen atau kumpulan penyimpanan terdistribusi (misalnya, Wilayah 1 di Target Penyimpanan A, Wilayah 2 di Target Penyimpanan B, Wilayah 3 di Target Penyimpanan C):

  • Pemetaan Penyimpanan Bersama (Shared Storage Mapping): Setiap host dalam cluster harus melampirkan dan memetakan ketiga perangkat blok heartbeat. Setiap node menulis detak heartbeat-nya ke slot yang ditentukan di ketiga wilayah dan membaca heartbeat node lain dari wilayah tersebut.
  • Kuorum & Toleransi Kesalahan (Fault-Tolerance): O2CB menggunakan aturan kuorum mayoritas. Dengan 3 wilayah heartbeat di target penyimpanan independen, kegagalan pada salah satu server penyimpanan atau jalur jaringan tetap mempertahankan 2/3 kuorum aktif, sehingga mencegah pemagaran cluster (cluster fencing).
  • Ukuran Perangkat (Device Sizing): Perangkat heartbeat khusus hanya membutuhkan 500 MB hingga 1 GiB masing-masing. Disk berukuran besar tidak diperlukan.
  • Multipath / Transport: Petakan 3 perangkat blok heartbeat ke semua node cluster melalui antarmuka jaringan redundan (misalnya, multipath iSCSI, fabric SAN, atau NVMe-oF).
  • Ketersediaan Perangkat (Device Availability): Pastikan perangkat blok ditemukan dan dipetakan secara persisten pada setiap host saat proses boot.

Panduan Migrasi Langkah demi Langkah ​

Ikuti langkah-langkah berikut secara berurutan untuk mengubah cluster aktif dari mode heartbeat Local ke Global:

[Langkah 1: Hentikan VM] ──► [Langkah 2: Masuk Pemeliharaan] ──► [Langkah 3: Atur Mode Global]
                                                                          │
[Langkah 6: Keluar Maint] ◄── [Langkah 5: Perbarui Superblock] ◄── [Langkah 4: Tambah 3 Heartbeat]

Langkah 1: Tenangkan Beban Kerja / VM (Quiesce) ​

Sebelum mengubah parameter heartbeat di seluruh cluster, semua aktivitas I/O aktif pada datastore bersama harus dihentikan:

  1. Lakukan live-migrate mesin virtual yang sedang berjalan ke kumpulan penyimpanan di luar cluster target, atau matikan VM secara bersih.
  2. Pastikan tidak ada proses atau kontainer yang membuka file handle ke titik kait (mount point) OCFS2.

Langkah 2: Masuk ke Mode Pemeliharaan di Semua Node ​

Semua node dalam cluster harus melepas (unmount) datastore bersama dan membatalkan pendaftaran dari tumpukan kernel O2CB sebelum mode heartbeat dapat diubah:

  1. Di Konsol Web Vapor, buka Storage > O2CB Cluster.
  2. Klik Enter Maintenance pada setiap node.
  3. Vapor memverifikasi kunci aktif, melepas semua sistem berkas OCFS2 aktif dengan aman, menghentikan local heartbeat, dan membatalkan pendaftaran cluster dari memori kernel langsung.

Langkah 3: Alihkan Mode Heartbeat ke Global ​

  1. Pada node cluster mana saja, buka menu aksi cluster (⋮) di header atas dan klik Set Heartbeat Mode (global).
  2. Pada dialog konfirmasi, konfirmasikan perubahan mode dari local ke global.
  3. Vapor memperbarui /etc/ocfs2/cluster.conf dengan heartbeat_mode = global dan mereplikasi perubahan ke seluruh anggota cluster.

Langkah 4: Tambahkan 3 Perangkat Wilayah Heartbeat ​

  1. Pada kartu Heartbeat Regions, klik Add Heartbeat .
  2. Masukkan jalur perangkat blok untuk LUN heartbeat bersama pertama Anda (misalnya /dev/mapper/mpath-hb1 atau /dev/sdb).
  3. Klik Create.
    • Jika perangkat blok masih mentah dan belum diformat ($\le 1\text{ GiB}$), Vapor secara otomatis menginisialisasinya dengan mkfs.ocfs2 --global-heartbeat dan mengekstrak UUID wilayahnya.
  4. Ulangi langkah ini untuk Wilayah 2 dan Wilayah 3.

Langkah 5: Perbarui Metadata Tumpukan Cluster pada Disk di Datastore yang Ada ​

Ketika volume OCFS2 awalnya diformat dalam mode local heartbeat, superblock pada disk ditandai dengan local. Jika Anda mencoba memasang volume mode lokal saat tumpukan kernel O2CB yang berjalan dalam mode global, proses mount akan gagal dengan pesan: mount.ocfs2: Heartbeat mode is invalid while trying to join the group

Untuk memperbarui datastore yang ada agar sesuai dengan tumpukan global heartbeat yang baru:

  1. Identifikasi jalur perangkat blok atau WWN dari datastore bersama Anda (misalnya /dev/disk/by-id/wwn-0x60000...).
  2. Periksa tumpukan cluster saat ini pada disk vs yang sedang berjalan:
    bash
    sudo o2cluster -o /dev/disk/by-id/<wwn-id>
    # Output: o2cb,<cluster-name>,local
  3. Perbarui superblock pada disk saat sistem berkas tidak terpasang (unmounted):
    bash
    sudo tunefs.ocfs2 --update-cluster-stack /dev/disk/by-id/<wwn-id>
    (Konfirmasi dengan y saat diminta).
  4. Verifikasi bahwa tumpukan pada disk sekarang sudah cocok:
    bash
    sudo o2cluster -o /dev/disk/by-id/<wwn-id>
    # Output: o2cb,<cluster-name>,global
    (Catatan: Karena perintah ini memperbarui superblock disk bersama, menjalankan perintah ini di satu node akan secara otomatis memperbaruinya untuk semua anggota cluster).

Langkah 6: Mulai Heartbeat & Keluar dari Mode Pemeliharaan ​

  1. Di Konsol Web Vapor, klik Sync to Kernel untuk mendaftarkan konfigurasi cluster dan node yang baru.
  2. Pilih Actions (⋮) > Start Heartbeat untuk memulai 3 wilayah heartbeat global di kernel.
  3. Klik Exit Maintenance pada setiap node.
  4. Vapor memulai kumpulan penyimpanan, memasang kembali sistem berkas bersama OCFS2, dan mengembalikan semua kumpulan penyimpanan virtualisasi ke status online.
  5. Nyalakan atau migrasikan kembali mesin virtual ke kumpulan penyimpanan bersama.

Mengelola O2CB di Konsol Web Vapor ​

Di konsol web Vapor, navigasikan ke Storage > O2CB Cluster untuk mengelola dan memantau status cluster O2CB.

1. Status & Aksi Cluster ​

Kartu bagian atas memberikan status waktu nyata dan kontrol operasional:

  • Identitas Cluster: Menampilkan nama cluster aktif, mode heartbeat, jumlah total node yang dikonfigurasi, dan wilayah heartbeat yang aktif.
  • Lencana Status:
    • Online (Hijau): Cluster terdaftar dan aktif di memori kernel.
    • Offline (Abu-abu): Cluster dihentikan atau belum didaftarkan.
    • Not in Kernel (Kuning): Cluster ada dalam berkas konfigurasi tetapi belum didaftarkan ke kernel.
  • Aksi Utama:
    • Register Cluster / Sync to Kernel: Membaca cluster.conf secara otomatis dan menyinkronkan seluruh node ke dalam memori kernel yang sedang berjalan.
    • Enter Maintenance / Exit Maintenance: Melepas (unmount) sistem berkas aktif dan membatalkan pendaftaran node secara bersih sebelum pemeliharaan host.
  • Menu Aksi (⋮):
    • Start Heartbeat / Stop Heartbeat: Mengontrol runtime heartbeat global (hanya mode global).
    • Set Heartbeat Mode: Beralih antara mode heartbeat local dan global.
    • Unregister Cluster: Menghapus objek cluster dari memori kernel.
    • Delete Cluster: Menghapus definisi cluster dari /etc/ocfs2/cluster.conf.

2. Manajemen Node ​

Bagian Nodes memungkinkan administrator melihat, menambah, dan menghapus anggota cluster:

+---------------------------------------------------------------------------------------------------+
| Node Name    Number    IP Address       Port     Status                          Actions          |
+---------------------------------------------------------------------------------------------------+
| reg2-1       1         10.99.16.20      7777     [Local] [✓ In Kernel]          —                |
| reg2-2       2         10.99.16.21      7777     [✓ In Kernel]                   [Remove]         |
| reg2-3       3         10.99.16.22      7777     [✓ In Kernel]                   [Remove]         |
| reg2-4       4         10.99.16.250     7777     [⚠ Not in Kernel]               [Remove]         |
+---------------------------------------------------------------------------------------------------+

Indikator Status Node: ​

  • Lencana Local: Menunjukkan bahwa node ini merupakan host Vapor lokal saat ini.
  • ✓ In Kernel (Lencana Hijau): Memastikan node terdaftar secara aktif dalam memori kernel Linux yang sedang berjalan.
  • ⚠ Not in Kernel (Lencana Kuning): Menunjukkan node ada di /etc/ocfs2/cluster.conf tetapi belum dimuat ke memori kernel langsung. Gunakan Sync to Kernel untuk mendaftarkannya secara online.

Menambahkan Node: ​

  1. Di bawah bagian Nodes, buka formulir Add Node.
  2. Masukkan Node Name (misalnya n04 atau host-4), Node Number (indeks slot), IP Address, dan Port (default 7777).
  3. Klik Add Node.
  4. Vapor secara otomatis menyimpan node ke /etc/ocfs2/cluster.conf dan langsung menjalankan pendaftaran online untuk menyinkronkan node ke memori kernel tanpa downtime.

Menghapus Node: ​

  • Klik Remove di sebelah node untuk menghapus entrinya dari berkas konfigurasi.

3. Wilayah Heartbeat (Mode Global) ​

Saat mode heartbeat global diaktifkan, bagian Heartbeat Regions memungkinkan administrator untuk:

  • Menambahkan jalur perangkat blok (misalnya /dev/mapper/mpatha atau /dev/sdb) untuk berpartisipasi dalam detak cluster.
  • Menghapus perangkat heartbeat yang sudah tidak digunakan atau dinonaktifkan.

Alur Kerja Mode Pemeliharaan (Maintenance Mode) ​

Sebelum melakukan pemeliharaan jaringan penyimpanan yang berdampak (seperti peningkatan firmware switch, rekonfigurasi multipath, atau penggantian HBA/NIC), masukkan host ke dalam Mode Pemeliharaan:

  1. Klik Enter Maintenance pada header cluster.
  2. Vapor melakukan pemeriksaan pra-kegiatan keamanan:
    • Mengidentifikasi semua sistem berkas OCFS2 yang terpasang.
    • Memverifikasi apakah ada disk virtual VM atau beban kerja aktif yang sedang menggunakan penyimpanan tersebut.
  3. Melepas (unmount) semua kumpulan penyimpanan OCFS2 aktif secara bersih.
  4. Menghentikan layanan heartbeat dan membatalkan pendaftaran node dari tumpukan O2CB.
  5. Setelah pekerjaan fisik selesai, klik Exit Maintenance untuk mendaftarkan ulang cluster, memulai heartbeat, dan memasang kembali datastore bersama.

Jangan pernah memaksa unmount saat VM masih aktif

Mematikan host secara tiba-tiba tanpa melepas sistem berkas OCFS2 aktif akan memicu pemagaran mandiri (self-fencing / kernel panic atau reboot darurat) O2CB untuk mencegah kerusakan data split-brain.


Referensi REST API ​

Vapor menyediakan REST API lengkap untuk manajemen cluster O2CB:

MetodeEndpointDeskripsi
GET/storage/o2cb/clustersDaftar semua cluster O2CB yang dikonfigurasi.
POST/storage/o2cb/clustersBuat definisi cluster O2CB baru.
GET/storage/o2cb/clusters/{name}Dapatkan detail konfigurasi cluster dan node.
DELETE/storage/o2cb/clusters/{name}Hapus konfigurasi cluster O2CB.
GET/storage/o2cb/clusters/{name}/statusKueri status kernel langsung dari cluster.
POST/storage/o2cb/clusters/{name}/registerDaftarkan cluster secara dinamis dan sinkronkan node ke kernel.
POST/storage/o2cb/clusters/{name}/unregisterBatalkan pendaftaran cluster dari memori kernel langsung.
GET/storage/o2cb/clusters/{name}/nodesDaftar semua node anggota beserta status kernelnya.
POST/storage/o2cb/clusters/{name}/nodesTambah node anggota baru dan daftarkan otomatis online.
DELETE/storage/o2cb/clusters/{name}/nodes/{node}Hapus node anggota.
GET/storage/o2cb/clusters/{name}/heartbeatsDaftar semua wilayah heartbeat yang dikonfigurasi.
POST/storage/o2cb/clusters/{name}/heartbeatsTambah perangkat wilayah heartbeat.
DELETE/storage/o2cb/clusters/{name}/heartbeats/{device}Hapus perangkat wilayah heartbeat.
PUT/storage/o2cb/clusters/{name}/heartbeat-modeAtur mode heartbeat (local atau global).
GET/storage/o2cb/clusters/{name}/maintenance/preflightJalankan pemeriksaan pra-kegiatan sebelum mode pemeliharaan.
POST/storage/o2cb/clusters/{name}/maintenance/enterMasuk ke mode pemeliharaan O2CB dengan aman.
POST/storage/o2cb/clusters/{name}/maintenance/exitKeluar dari mode pemeliharaan dan pasang kembali datastore.

Referensi CLI ​

Administrator dengan akses SSH atau konsol dapat memeriksa status O2CB menggunakan perintah CLI standar:

bash
# Memeriksa status cluster di memori kernel
sudo o2cb cluster-status <nama-cluster>

# Mendaftarkan konfigurasi ke dalam kernel yang sedang berjalan
sudo o2cb register-cluster <nama-cluster>

# Membatalkan pendaftaran cluster dari kernel
sudo o2cb unregister-cluster <nama-cluster>

# Memeriksa node aktif di configfs kernel
ls -la /sys/kernel/config/cluster/<nama-cluster>/node/

# Memulai dan menghentikan layanan heartbeat global
sudo o2cb start-heartbeat <nama-cluster>
sudo o2cb stop-heartbeat <nama-cluster>

# Memeriksa tumpukan cluster pada disk vs tumpukan yang berjalan
sudo o2cluster -o /dev/disk/by-id/<device>
sudo o2cluster -r

# Memperbarui tumpukan cluster sistem berkas pada disk agar cocok dengan cluster yang berjalan
sudo tunefs.ocfs2 --update-cluster-stack /dev/disk/by-id/<device>

Pemecahan Masalah & Praktik Terbaik ​

1. Mengatasi Ketidaksesuaian Node "Not in Kernel" ​

  • Penyebab: Node ditambahkan ke /etc/ocfs2/cluster.conf secara langsung atau saat tumpukan cluster sedang offline.
  • Solusi: Klik tombol Sync to Kernel di UI Vapor atau jalankan sudo o2cb register-cluster <nama-cluster> melalui CLI.

2. Persyaratan Firewall Jaringan ​

  • Semua node cluster yang berpartisipasi harus dapat berkomunikasi dua arah melalui port TCP 7777. Pastikan aturan firewall mengizinkan lalu lintas antarmuka penyimpanan:
    bash
    sudo ufw allow 7777/tcp
    # atau firewalld:
    sudo firewall-cmd --permanent --add-port=7777/tcp && sudo firewall-cmd --reload

3. Ketidakcocokan Mode Heartbeat saat Mount ​

  • Gejala: mount.ocfs2: Heartbeat mode is invalid while trying to join the group
  • Penyebab: Cluster yang berjalan berada dalam mode global heartbeat, namun sistem berkas pada disk masih bertanda mode local.
  • Solusi: Jalankan sudo tunefs.ocfs2 --update-cluster-stack /dev/disk/by-id/<device> saat volume dalam kondisi tidak terpasang (unmounted).

4. Aturan Pemagaran (Fencing) dan Kuorum ​

  • OCFS2 menggunakan algoritma kuorum mayoritas. Jika komunikasi antar node terputus, partisi minoritas akan secara otomatis memagari diri sendiri (reboot darurat) untuk melindungi integritas data. Pastikan tautan jaringan redundan (Bonds / Multipath) dikonfigurasi pada antarmuka penyimpanan.