Skip to content

Manajemen Klaster O2CB

Oracle Cluster File System v2 (OCFS2) adalah sistem berkas terklaster cakram-bersama (shared-disk) serbaguna yang dirancang untuk operasi baca dan tulis bersamaan (active/active) di beberapa host virtualisasi. Di Vapor, infrastruktur klaster 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 terklaster dapat berjalan serentak di seluruh infrastruktur tanpa risiko kerusakan data.


Mode Heartbeat

O2CB memantau kesehatan host dan kuorum klaster 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.Klaster 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 klaster 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 klaster, 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 klaster 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 klaster (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 klaster 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 klaster 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 klaster, semua aktivitas I/O aktif pada datastore bersama harus dihentikan:

  1. Lakukan live-migrate mesin virtual yang sedang berjalan ke kumpulan penyimpanan di luar klaster 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 klaster 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 klaster dari memori kernel langsung.

Langkah 3: Alihkan Mode Heartbeat ke Global

  1. Pada node klaster mana saja, buka menu aksi klaster () 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 klaster.

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 Klaster 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 klaster 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 klaster).

Langkah 6: Mulai Heartbeat & Keluar dari Mode Pemeliharaan

  1. Di Konsol Web Vapor, klik Sync to Kernel untuk mendaftarkan konfigurasi klaster 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 klaster O2CB.

1. Status & Aksi Klaster

Kartu bagian atas memberikan status waktu nyata dan kontrol operasional:

  • Identitas Klaster: Menampilkan nama klaster aktif, mode heartbeat, jumlah total node yang dikonfigurasi, dan wilayah heartbeat yang aktif.
  • Lencana Status:
    • Online (Hijau): Klaster terdaftar dan aktif di memori kernel.
    • Offline (Abu-abu): Klaster dihentikan atau belum didaftarkan.
    • Not in Kernel (Kuning): Klaster 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 klaster dari memori kernel.
    • Delete Cluster: Menghapus definisi klaster dari /etc/ocfs2/cluster.conf.

2. Manajemen Node

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

+---------------------------------------------------------------------------------------------------+
| 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 klaster.
  • 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 klaster.
  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 klaster, 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 klaster O2CB:

MetodeEndpointDeskripsi
GET/storage/o2cb/clustersDaftar semua klaster O2CB yang dikonfigurasi.
POST/storage/o2cb/clustersBuat definisi klaster O2CB baru.
GET/storage/o2cb/clusters/{name}Dapatkan detail konfigurasi klaster dan node.
DELETE/storage/o2cb/clusters/{name}Hapus konfigurasi klaster O2CB.
GET/storage/o2cb/clusters/{name}/statusKueri status kernel langsung dari klaster.
POST/storage/o2cb/clusters/{name}/registerDaftarkan klaster secara dinamis dan sinkronkan node ke kernel.
POST/storage/o2cb/clusters/{name}/unregisterBatalkan pendaftaran klaster 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 klaster di memori kernel
sudo o2cb cluster-status <nama-klaster>

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

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

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

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

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

# Memperbarui tumpukan klaster sistem berkas pada disk agar cocok dengan klaster 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 klaster sedang offline.
  • Solusi: Klik tombol Sync to Kernel di UI Vapor atau jalankan sudo o2cb register-cluster <nama-klaster> melalui CLI.

2. Persyaratan Firewall Jaringan

  • Semua node klaster 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: Klaster 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.