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 Heartbeat | Deskripsi | Direkomendasikan 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 Heartbeat | Heartbeat 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:
- Lakukan live-migrate mesin virtual yang sedang berjalan ke kumpulan penyimpanan di luar klaster target, atau matikan VM secara bersih.
- 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:
- Di Konsol Web Vapor, buka Storage > O2CB Cluster.
- Klik Enter Maintenance pada setiap node.
- 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
- Pada node klaster mana saja, buka menu aksi klaster (⋮) di header atas dan klik Set Heartbeat Mode (global).
- Pada dialog konfirmasi, konfirmasikan perubahan mode dari
localkeglobal. - Vapor memperbarui
/etc/ocfs2/cluster.confdenganheartbeat_mode = globaldan mereplikasi perubahan ke seluruh anggota klaster.
Langkah 4: Tambahkan 3 Perangkat Wilayah Heartbeat
- Pada kartu Heartbeat Regions, klik Add Heartbeat .
- Masukkan jalur perangkat blok untuk LUN heartbeat bersama pertama Anda (misalnya
/dev/mapper/mpath-hb1atau/dev/sdb). - Klik Create.
- Jika perangkat blok masih mentah dan belum diformat ($\le 1\text{ GiB}$), Vapor secara otomatis menginisialisasinya dengan
mkfs.ocfs2 --global-heartbeatdan mengekstrak UUID wilayahnya.
- Jika perangkat blok masih mentah dan belum diformat ($\le 1\text{ GiB}$), Vapor secara otomatis menginisialisasinya dengan
- 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:
- Identifikasi jalur perangkat blok atau WWN dari datastore bersama Anda (misalnya
/dev/disk/by-id/wwn-0x60000...). - 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 - Perbarui superblock pada disk saat sistem berkas tidak terpasang (unmounted):bash(Konfirmasi dengan
sudo tunefs.ocfs2 --update-cluster-stack /dev/disk/by-id/<wwn-id>ysaat diminta). - Verifikasi bahwa tumpukan pada disk sekarang sudah cocok:bash(Catatan: Karena perintah ini memperbarui superblock disk bersama, menjalankan perintah ini di satu node akan secara otomatis memperbaruinya untuk semua anggota klaster).
sudo o2cluster -o /dev/disk/by-id/<wwn-id> # Output: o2cb,<cluster-name>,global
Langkah 6: Mulai Heartbeat & Keluar dari Mode Pemeliharaan
- Di Konsol Web Vapor, klik Sync to Kernel untuk mendaftarkan konfigurasi klaster dan node yang baru.
- Pilih Actions (⋮) > Start Heartbeat untuk memulai 3 wilayah heartbeat global di kernel.
- Klik Exit Maintenance pada setiap node.
- Vapor memulai kumpulan penyimpanan, memasang kembali sistem berkas bersama OCFS2, dan mengembalikan semua kumpulan penyimpanan virtualisasi ke status online.
- 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.confsecara 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.
- Register Cluster / Sync to Kernel: Membaca
- Menu Aksi (
⋮):- Start Heartbeat / Stop Heartbeat: Mengontrol runtime heartbeat global (hanya mode global).
- Set Heartbeat Mode: Beralih antara mode heartbeat
localdanglobal. - 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.conftetapi belum dimuat ke memori kernel langsung. Gunakan Sync to Kernel untuk mendaftarkannya secara online.
Menambahkan Node:
- Di bawah bagian Nodes, buka formulir Add Node.
- Masukkan Node Name (misalnya
n04atauhost-4), Node Number (indeks slot), IP Address, dan Port (default7777). - Klik Add Node.
- Vapor secara otomatis menyimpan node ke
/etc/ocfs2/cluster.confdan 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/mpathaatau/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:
- Klik Enter Maintenance pada header klaster.
- 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.
- Melepas (unmount) semua kumpulan penyimpanan OCFS2 aktif secara bersih.
- Menghentikan layanan heartbeat dan membatalkan pendaftaran node dari tumpukan O2CB.
- 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:
| Metode | Endpoint | Deskripsi |
|---|---|---|
GET | /storage/o2cb/clusters | Daftar semua klaster O2CB yang dikonfigurasi. |
POST | /storage/o2cb/clusters | Buat 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}/status | Kueri status kernel langsung dari klaster. |
POST | /storage/o2cb/clusters/{name}/register | Daftarkan klaster secara dinamis dan sinkronkan node ke kernel. |
POST | /storage/o2cb/clusters/{name}/unregister | Batalkan pendaftaran klaster dari memori kernel langsung. |
GET | /storage/o2cb/clusters/{name}/nodes | Daftar semua node anggota beserta status kernelnya. |
POST | /storage/o2cb/clusters/{name}/nodes | Tambah node anggota baru dan daftarkan otomatis online. |
DELETE | /storage/o2cb/clusters/{name}/nodes/{node} | Hapus node anggota. |
GET | /storage/o2cb/clusters/{name}/heartbeats | Daftar semua wilayah heartbeat yang dikonfigurasi. |
POST | /storage/o2cb/clusters/{name}/heartbeats | Tambah perangkat wilayah heartbeat. |
DELETE | /storage/o2cb/clusters/{name}/heartbeats/{device} | Hapus perangkat wilayah heartbeat. |
PUT | /storage/o2cb/clusters/{name}/heartbeat-mode | Atur mode heartbeat (local atau global). |
GET | /storage/o2cb/clusters/{name}/maintenance/preflight | Jalankan pemeriksaan pra-kegiatan sebelum mode pemeliharaan. |
POST | /storage/o2cb/clusters/{name}/maintenance/enter | Masuk ke mode pemeliharaan O2CB dengan aman. |
POST | /storage/o2cb/clusters/{name}/maintenance/exit | Keluar dari mode pemeliharaan dan pasang kembali datastore. |
Referensi CLI
Administrator dengan akses SSH atau konsol dapat memeriksa status O2CB menggunakan perintah CLI standar:
# 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.confsecara 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:bashsudo 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
globalheartbeat, namun sistem berkas pada disk masih bertanda modelocal. - 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.