Saya ditugaskan untuk membuat cluster Proxmox VE yang terdiri dari dua node dan menggunakan Ceph sebagai shared storage. Setelah konfigurasi selesai, kemudian saya ditugaskan untuk melakukan pengujian dengan mematikan salah satu node untuk mengetahui kondisi VM, quorum Proxmox, dan quorum Ceph.
Eksperimen ini juga menguji solusi sementara berupa penghapusan Ceph Monitor pada pveceph2 dan penggunaan pvecm expected 1. Hasilnya menunjukkan bahwa quorum Proxmox/Corosync, quorum Ceph Monitor, dan redundansi data Ceph merupakan tiga hal berbeda yang harus ditangani secara terpisah.
Catatan: Konfigurasi dua node, satu Ceph Monitor, serta pool
size 2/min_size 1pada artikel ini digunakan untuk eksperimen. Konfigurasi tersebut bukan rekomendasi untuk lingkungan produksi.
Lingkungan Pengujian
| Komponen | Konfigurasi |
|---|---|
| Proxmox VE | 9.2.10 |
| Kernel | 7.0.14-12-pve |
| Ceph | Squid 19.2.5 |
| Node 1 | pveceph1 |
| Node 2 | pveceph2 |
| OSD | 3 OSD pada setiap node, total 6 OSD |
| Pool | pvecephpool |
| Replikasi pool | size 2, min_size 1 |
| VM pengujian | Alpine Linux pada pveceph1 dengan disk di pvecephpool |
Pada konfigurasi ini, size 2 membuat Ceph menyimpan dua salinan data. Sementara itu, min_size 1 mengizinkan I/O tetap berjalan ketika hanya tersedia satu salinan. Konfigurasi ini membantu pengujian dua node, tetapi meningkatkan risiko kehilangan data ketika penulisan berlangsung tanpa redundansi. Dokumentasi Proxmox Ceph juga memperingatkan bahwa replicated pool dengan min_size 1 dapat menyebabkan kehilangan data atau PG menjadi tidak lengkap jika salinan terakhir bermasalah.
1. Membuat Cluster Proxmox Dua Node
Pembuatan cluster dapat dilakukan melalui GUI Proxmox.
Membuat cluster pada pveceph1
- Login ke GUI
pveceph1. - Buka Datacenter → Cluster.
- Klik Create Cluster.
- Masukkan nama cluster.
- Pilih jaringan Corosync yang akan digunakan pada bagian Cluster Network.
- Klik Create.
- Setelah cluster terbentuk, klik Join Information, lalu salin informasi yang ditampilkan.
Menggabungkan pveceph2
- Login ke GUI
pveceph2. - Buka Datacenter → Cluster.
- Klik Join Cluster.
- Tempel informasi dari
pveceph1. - Masukkan password
rootmilikpveceph1. - Pastikan alamat jaringan Corosync sudah sesuai.
- Klik Join.
Node yang akan bergabung sebaiknya belum memiliki VM atau konfigurasi penting karena konfigurasi cluster pada node tersebut akan disesuaikan dengan cluster tujuan. Langkah GUI ini sesuai dengan panduan Proxmox VE Cluster Manager.
Periksa halaman Datacenter → Cluster setelah proses selesai. Pastikan
pveceph1danpveceph2terlihat berstatus online.

2. Menginstal dan Mengonfigurasi Ceph
Menginstal Ceph pada kedua node
Lakukan langkah berikut pada pveceph1 dan pveceph2:
- Pilih nama node pada panel kiri.
- Buka menu Ceph.
- Klik Install Ceph atau ikuti wizard instalasi yang muncul.
- Pilih Ceph Squid dan repository yang sesuai.
- Selesaikan instalasi paket.
Pada node pertama, lanjutkan dengan inisialisasi konfigurasi Ceph. Tentukan Public Network dan Cluster Network sesuai jaringan yang sudah disiapkan. Node kedua menggunakan konfigurasi Ceph yang sudah tersimpan pada cluster, sehingga tidak perlu membuat cluster Ceph baru.
Periksa halaman konfigurasi Ceph.

Membuat Ceph Monitor
Pada konfigurasi awal eksperimen, MON dibuat pada kedua node:
- Buka Ceph → Monitor.
- Klik Create.
- Pilih
pveceph1, kemudian buat MON. - Ulangi untuk
pveceph2.
Jika wizard konfigurasi sudah otomatis membuat MON pada pveceph1, cukup buat MON tambahan pada pveceph2.
Dengan dua MON, quorum membutuhkan keduanya aktif atau 2 dari 2 MON. Artinya, konfigurasi ini belum dapat menoleransi kegagalan satu MON. Ceph merekomendasikan sedikitnya tiga MON untuk produksi dan jumlah MON ganjil agar mayoritas tetap dapat terbentuk ketika satu MON gagal.
Periksa halaman Ceph → Monitor yang menampilkan MON
pveceph1danpveceph2dalam kondisi aktif serta berada dalam quorum.

Membuat enam OSD (Sesuaikan dengan kebutuhan)
Setiap node pada lab ini memiliki tiga disk khusus OSD.
- Pilih node yang akan dikonfigurasi.
- Buka Ceph → OSD.
- Klik Create: OSD.
- Pilih disk kosong yang akan digunakan.
- Pastikan disk yang dipilih tidak berisi data penting.
- Klik Create.
- Ulangi hingga tersedia tiga OSD pada setiap node.
Peringatan: Pembuatan OSD akan menghapus isi disk yang dipilih. Periksa nama dan kapasitas disk sebelum menekan Create.
Periksa halaman Ceph → OSD atau tampilan CRUSH yang menunjukkan enam OSD berstatus
updanin, masing-masing tiga OSD di bawahpveceph1danpveceph2.

Membuat pool Ceph
- Buka Ceph → Pools.
- Klik Create.
- Isi nama pool dengan
pvecephpool. - Buat pool terlebih dahulu dengan Size
3dan Min. Size2. - Pilih CRUSH rule yang menempatkan replika pada host berbeda.
- Aktifkan opsi penambahan storage jika tersedia, lalu klik Create.

Setelah pvecephpool berhasil dibuat, ubah konfigurasinya menjadi size 2/min_size 1:
- Pilih pool
pvecephpool, lalu klik Edit. - Ubah Size dari
3menjadi2. - Ubah Min. Size dari
2menjadi1. - Simpan perubahan.
- Pilih pool internal
.mgr, lalu klik Edit. - Ubah Size dan Min. Size pada
.mgrmenjadi2dan1. - Simpan perubahan dan tunggu proses penyesuaian PG selesai.

Catatan: Pada eksperimen ini, konfigurasi
2/1tidak langsung diterapkan ketika membuat pool. Pool dibuat lebih dahulu dengan nilai3/2, kemudianpvecephpooldan pool internal.mgrdiedit menjadi2/1. Jika hanyapvecephpoolyang diubah,.mgrmasih menggunakan3/2dan Ceph dapat tetap menampilkan peringatan karena cluster hanya memiliki dua host OSD. Pool.mgrtidak perlu dihapus; cukup sesuaikan nilai replikasinya.
Jika pool belum muncul sebagai storage Proxmox, buka Datacenter → Storage → Add → RBD, lalu pilih pvecephpool sebagai pool. Aktifkan jenis konten Disk image sesuai kebutuhan.
3. Membuat VM Pengujian pada Ceph
- Klik Create VM.
- Tempatkan VM pada
pveceph1. - Gunakan ISO Alpine Linux atau sistem operasi ringan lainnya.
- Pada bagian disk, pilih
pvecephpoolsebagai storage. - Selesaikan instalasi, kemudian jalankan VM.
- Pastikan status VM Running sebelum pengujian dimulai.
Sebelum mematikan node, pastikan status Ceph normal, kedua MON berada dalam quorum, dan seluruh OSD berstatus up serta in.
Periksa halaman Hardware VM yang menunjukkan disk berada di
pvecephpooldan pastikan VM berstatus Running.

4. Pengujian Pertama: Mematikan pveceph2
Node kedua dimatikan langsung melalui GUI:
- Pilih
pveceph2pada panel kiri. - Klik Shutdown.
- Konfirmasi proses shutdown.
- Tunggu hingga
pveceph2benar-benar tidak aktif.
Setelah itu, pemeriksaan dilakukan melalui GUI pveceph1.
Hasil pengujian
- VM Alpine pada
pveceph1tetap berstatus Running. - MON
pveceph2tidak aktif sehingga dua MON tidak dapat membentuk mayoritas. - Tiga OSD milik
pveceph2menjadidowndan PG kehilangan satu salinan data. - Cluster Proxmox kehilangan quorum karena hanya tersedia satu dari dua vote Corosync.
- Pembuatan VM baru tidak dapat dilakukan karena
pmxcfsmenjadi read-only ketika cluster Proxmox tidak quorate.
VM yang sudah berjalan dapat tetap aktif karena proses QEMU masih berjalan dan jalur data Ceph tidak selalu langsung berhenti ketika MON tidak memiliki quorum. Namun, kondisi tersebut tidak boleh dianggap sebagai jaminan ketersediaan. Perubahan peta cluster, koneksi baru, atau gangguan tambahan tetap dapat menyebabkan I/O berhenti.
VM tetap running (dapat di ping) namun tidak dapat diakses.

5. Menghapus MON pveceph2
Pengujian berikutnya bertujuan memastikan MON pada node yang mati tidak lagi menjadi bagian dari quorum Ceph. Sebelum menghapus MON, pveceph2 dinyalakan kembali dan ditunggu hingga cluster Proxmox serta Ceph kembali normal.
Menghapus MON melalui GUI
- Buka Ceph → Monitor dari node yang aktif.
- Pilih MON
pveceph2. - Klik Destroy.
- Periksa kembali nama MON pada dialog konfirmasi.
- Konfirmasi penghapusan.
Prosedur GUI tersebut juga dijelaskan pada dokumentasi Deploy Hyper-Converged Ceph Cluster.

Alternatif melalui CLI
Jika GUI tidak dapat digunakan, perintah berikut dapat dijalankan melalui menu Shell pada pveceph2 ketika node masih aktif dan quorum tersedia:
pveceph mon destroy pveceph2
Pada eksperimen ini yang dihapus hanya service MON. OSD pada pveceph2 tetap dipertahankan sebagai bagian dari pool.
Mengulangi pengujian shutdown
Setelah MON pveceph2 berhasil dihapus, node tersebut kembali dimatikan melalui GUI. Hasilnya:
- VM pada
pveceph1tetap Running. - MON tunggal
pveceph1dapat membentuk quorum 1 dari 1. - Error quorum MON yang sebelumnya terjadi tidak lagi menjadi penghambat.
- Ceph tetap menampilkan kondisi degraded atau undersized karena tiga OSD pada
pveceph2tidak tersedia. - Cluster Proxmox tetap tidak quorate karena Corosync masih hanya memiliki satu dari dua vote.
- Pembuatan VM atau perubahan konfigurasi tetap terblokir pada sisi Proxmox.
Penghapusan MON kedua hanya mengubah quorum Ceph. Langkah ini tidak memperbaiki quorum Proxmox dan tidak mengembalikan redundansi data Ceph.


Pengujian pembuatan VM gagal

6. Menggunakan pvecm expected 1 untuk Pengujian
Dalam pengujian ini, perintah berikut dijalankan melalui pveceph1 → Shell setelah dipastikan bahwa pveceph2 benar-benar mati:
pvecm expected 1
Perintah tersebut mengubah jumlah vote yang diharapkan menjadi satu sehingga pveceph1 kembali quorate. Setelah itu, pmxcfs dapat ditulis kembali dan pengujian melalui GUI dapat dilanjutkan. Pada lab ini, pembuatan VM baru digunakan hanya untuk membuktikan bahwa hambatan sebelumnya berasal dari quorum Proxmox.
Peringatan:
pvecm expected 1merupakan tindakan pemulihan sementara, bukan konfigurasi permanen untuk cluster dua node. Jalankan hanya setelah node lain dipastikan benar-benar mati atau sudah di-fence. Jangan menjalankannya pada dua sisi yang terpisah karena dapat menyebabkan split-brain dan perubahan konfigurasi yang saling bertentangan. Dokumentasi Proxmox menempatkan perintah ini sebagai workaround ketika quorum hilang dan memperingatkan agar perubahan yang memengaruhi cluster tidak dilakukan dalam kondisi vote dipaksa. Untuk produksi, QDevice direkomendasikan sebagai vote ketiga pada cluster dua node.

Ringkasan Hasil Pengujian
| Kondisi | Quorum Proxmox | Quorum Ceph MON | Kondisi data Ceph | VM yang sudah berjalan | Perubahan konfigurasi/VM baru |
| Kedua node aktif, dua MON | Ada | 2/2 | Normal | Berjalan | Bisa |
pveceph2 mati, dua MON masih terdaftar | Tidak ada | Tidak ada, hanya 1/2 | Degraded, satu replika tersisa | Tetap berjalan pada pengujian | Tidak bisa |
pveceph2 mati, MON-nya sudah dihapus | Tidak ada | Ada, 1/1 | Degraded, satu replika tersisa | Tetap berjalan pada pengujian | Tidak bisa |
Kondisi sebelumnya + pvecm expected 1 | Ada secara paksa | Ada, 1/1 | Tetap degraded | Tetap berjalan pada pengujian | Dapat diuji melalui GUI |
Tabel tersebut menunjukkan bahwa MON Ceph dan quorum Corosync bekerja secara independen. Memperbaiki salah satunya tidak otomatis memperbaiki komponen lain.
Solusi Implementasi Dua Node
Menggunakan satu MON memang membuat Ceph memiliki quorum 1/1, tetapi seluruh cluster bergantung pada pveceph1. Jika MON tersebut mati, Ceph tidak memiliki MON lain untuk mengambil alih. Karena itu, konfigurasi ini hanya sesuai untuk membuktikan perilaku sistem dalam lab.
Untuk implementasi dua node yang mempertimbangkan biaya subscription Proxmox, rencana pengujian berikutnya adalah menambahkan satu VM atau server Linux independen. Perannya mirip witness, tetapi komponen yang digunakan berbeda untuk Proxmox dan Ceph.
1. QDevice untuk quorum Proxmox
Pada sisi Proxmox/Corosync, server independen menjalankan corosync-qnetd. Kedua node PVE kemudian menggunakan QDevice untuk memperoleh vote ketiga. Dengan demikian, satu node PVE yang masih aktif bersama QDevice dapat mempertahankan quorum. Proxmox secara resmi merekomendasikan QDevice untuk cluster dua node yang membutuhkan ketersediaan lebih baik pada panduan Proxmox VE Cluster Manager.
2. MON ketiga untuk quorum Ceph
Pada sisi Ceph tidak terdapat QDevice yang sama seperti Corosync. Solusinya adalah menjalankan Ceph Monitor ketiga pada server atau VM independen. Sebelum pengujian ini dilakukan, MON pveceph2 perlu dibuat kembali sehingga susunannya menjadi:
- MON
pveceph1; - MON
pveceph2; - MON ketiga pada host independen.
Dengan tiga MON, Ceph dapat mempertahankan quorum ketika satu MON mati karena masih tersedia dua dari tiga MON. MON ketiga adalah MON penuh yang menyimpan cluster map dan ikut melakukan voting, bukan sekadar QDevice. Prinsip mayoritas dan rekomendasi minimal tiga MON dijelaskan pada dokumentasi Adding/Removing Monitors.
Jika MON ketiga ditempatkan pada VM, disk dan proses boot VM tersebut tidak boleh bergantung pada pvecephpool yang sedang dilindungi. VM harus berjalan pada host, storage, dan jalur daya yang independen agar tidak terjadi ketergantungan melingkar.
Untuk lab atau lingkungan dengan sumber daya terbatas, satu server independen dapat diuji untuk menjalankan corosync-qnetd dan Ceph MON ketiga. Keduanya tetap merupakan service berbeda dan harus diuji secara terpisah. Kompatibilitas versi Ceph, prosedur pemeliharaan, serta dukungan vendor perlu dipastikan sebelum digunakan pada produksi.
3. MON ketiga tidak menambah replika data
Penambahan MON ketiga hanya mempertahankan quorum monitor. Ketika pveceph2 mati, tiga OSD di node tersebut tetap hilang dan pool size 2/min_size 1 hanya dapat melanjutkan I/O dengan satu salinan data jika PG masih aktif. Ceph tetap dapat menampilkan HEALTH_WARN, degraded, atau undersized.
Jika dibutuhkan redundansi storage yang benar-benar dapat menoleransi kegagalan satu host tanpa berjalan pada satu salinan, diperlukan host OSD ketiga atau desain storage lain yang sesuai. Backup eksternal juga tetap wajib karena replikasi Ceph bukan pengganti backup.
Pertimbangan Biaya Subscription
Jika pada lingkungan produksi menggunakan subscription Proxmox, setiap server fisik Proxmox VE harus dicakup sesuai jumlah CPU socket yang digunakan, dan seluruh node dalam satu cluster menggunakan tingkat subscription yang sama. Karena itu, menambahkan node PVE ketiga dapat meningkatkan biaya subscription. Ketentuan ini dapat dilihat pada Proxmox Subscription FAQ.
Alternatif berupa server Linux independen yang hanya menjalankan QDevice dan Ceph MON dapat menghindari penambahan node PVE ketiga. Namun, desain ini menggunakan MON eksternal yang dikelola secara manual.
Rencana Pengujian Berikutnya
Sesuai arahan yang ditugaskan pada saya, pengujian selanjutnya berfokus pada penambahan Ceph MON di luar cluster PVE agar jumlah MON menjadi 3 dan min_size menjadi 2 dan quorum Ceph tetap tersedia ketika salah satu node PVE mati. Host eksternal akan berperan mirip QDevice, tetapi menjalankan Ceph MON penuh.
Topologi yang akan diuji:
| Host | Cluster PVE | Service Ceph |
pveceph1 | Cluster pveceph | MON dan 3 OSD |
pveceph2 | Cluster pveceph | MON dan 3 OSD |
| PVE standalone atau Linux lain | Di luar cluster | MON eksternal tanpa OSD |
Tahapan pengujiannya adalah sebagai berikut:
- Menyiapkan PVE standalone atau server/VM Linux pada infrastruktur dan storage yang independen dari
pvecephpool. - Memasang paket Ceph yang kompatibel dengan Ceph Squid 19.2.5 pada host eksternal.
- Menyalakan
pveceph2dan membuat kembali MON pada node tersebut. - Menambahkan Ceph MON ketiga pada host eksternal.
- Memastikan ketiga MON berstatus aktif dan membentuk quorum
3/2.
Kesimpulan
Pada eksperimen ini, VM di pveceph1 tetap berjalan ketika pveceph2 dimatikan, tetapi pembuatan VM baru terblokir karena cluster Proxmox kehilangan quorum. Menghapus MON pveceph2 membuat MON tunggal pveceph1 memiliki quorum 1/1, sedangkan pvecm expected 1 memungkinkan pengujian lanjutan pada sisi Proxmox.
Kedua tindakan tersebut hanya solusi sementara untuk lab. Desain dua node yang lebih tepat membutuhkan QDevice untuk quorum Proxmox dan MON ketiga pada host independen untuk quorum Ceph. Jika targetnya juga mempertahankan redundansi data ketika satu node mati, MON ketiga saja tidak cukup—dibutuhkan OSD pada host ketiga atau arsitektur storage lain yang sesuai.

