Apa itu STONITH (Shoot The Other Node In The Head)?
STONITH (Shoot The Other Node In The Head) adalah layanan Linux yang digunakan untuk menjaga integritas node dalam klaster high-availability (HA). STONITH secara otomatis mematikan node yang tidak berfungsi dengan benar.
STONITH digunakan sebagai bagian dari strategi fencing dalam klaster. Fencing menyediakan mekanisme untuk memantau status sumber daya klaster dan node, lalu mengambil tindakan jika ada masalah. Karena itu, fencing sering disebut sebagai metode untuk membawa klaster ke kondisi yang diketahui, memastikan tidak ada sumber daya atau node yang berjalan dalam kondisi tak terduga yang bisa merusak sistem atau data.
Ada dua jenis fencing dalam klaster Linux:
- Fencing tingkat sumber daya memastikan bahwa sebuah sumber daya tidak bisa diakses oleh lebih dari satu node dalam satu waktu. Misalnya, mekanisme fencing bisa mencegah sebuah layanan berjalan di lebih dari satu node kecuali di node aktif.
- Fencing tingkat node memastikan bahwa sebuah node tidak menjalankan sumber daya apa pun. Ini bisa dilakukan dengan mematikan server atau mengubah statusnya, misalnya dengan merestartnya dan menjadikannya sebagai node sekunder.
STONITH digunakan untuk fencing tingkat node. Jika sebuah node gagal merespons atau menunjukkan perilaku yang tidak biasa, STONITH memastikan node tersebut tidak bisa menyebabkan kerusakan, terutama dalam skenario split-brain (di mana dua node sama-sama menganggap diri sebagai server aktif).
Sebagai contoh, jika sebuah node utama database mengalami gangguan dan otomatis failover ke node cadangan, node pertama mungkin masih mencoba menulis data ke penyimpanan bersama pada saat yang sama dengan node utama baru, yang bisa menyebabkan kerusakan data atau mempengaruhi integritasnya. Untuk mencegah ini, STONITH akan mematikan atau merestart node pertama dan mengaturnya sebagai server cadangan.
Bagaimana STONITH diterapkan?
STONITH sering diterapkan melalui perangkat keras klaster, sehingga dapat merespons kejadian tanpa harus melibatkan sistem operasi (OS). Meski STONITH berbasis perangkat keras sangat efektif, penggunaannya mungkin memerlukan komponen tambahan di setiap server, yang dapat meningkatkan biaya dan menyebabkan ketergantungan terhadap vendor tertentu.
Berbagai jenis perangkat keras bisa berfungsi sebagai perangkat STONITH, asalkan manajemen daya digunakan di semua node dalam klaster. Perangkat STONITH bisa berupa kartu akses jarak jauh seperti Dell Remote Access Card (DRAC) atau HPE Integrated Lights-Out (iLO). STONITH juga bisa diterapkan melalui perangkat yang mengelola daya di beberapa node, seperti blade power control, uninterruptible power supply (UPS), atau power distribution unit (PDU). Selain itu, STONITH dapat digunakan dengan perangkat yang mendukung Intelligent Platform Management Interface (IPMI).
STONITH juga bisa diterapkan dengan solusi berbasis disk, seperti layanan split-brain detection (SBD) atau storage-based death. SBD STONITH lebih mudah diterapkan karena tidak memerlukan perangkat keras khusus, meski dalam banyak kasus membutuhkan penyimpanan bersama dalam jumlah kecil. Dalam SBD STONITH, node dalam klaster Linux menggunakan mekanisme heartbeat atau layanan pesan untuk saling memperbarui status. Jika ada node yang bermasalah, node tersebut akan menonaktifkan dirinya sendiri.
Penyedia layanan cloud juga menawarkan fitur STONITH yang disesuaikan dengan platform mereka. Misalnya, Azure menyediakan dua opsi fencing untuk SUSE Linux Enterprise Server: agen fence Azure atau SBD STONITH. Agen fence Azure merestart node yang gagal melalui API Azure, sementara SBD STONITH bekerja serupa dengan implementasi on-premises, tetapi memerlukan setidaknya satu VM tambahan sebagai server target iSCSI untuk menyediakan perangkat SBD.