Prosedur Rolling Restart
Ada satu prinsip inti: mayoritas harus selalu tetap hidup. Dengan 3 node, kamu hanya bisa mematikan 1 sekaligus; dengan 5 node, hingga 2.
- Restart follower (node bukan-leader) dulu, satu per satu — leader terus melayani selama itu. Pastikan setiap node yang di-restart sudah mengejar lewat replikasi log peer/ snapshot sebelum lanjut ke node berikutnya.
- Terakhir, matikan leader. Node yang tersisa mendeteksi heartbeat yang hilang dan memilih leader baru dalam 0,5-1 detik. Request klien selama jendela itu mendapat
E no_leader, tapi klien resmi mencoba lagi secara transparan, sehingga aplikasi hanya melihat jeda singkat. - Nyalakan kembali leader lama — ia bergabung sebagai follower dan mengejar (tidak otomatis merebut kembali posisi leader).
Status lock tetap terjaga sepanjang proses selama mayoritas tetap hidup — lock yang diberikan atau di-release selama restart juga melalui commit, jadi tidak ada yang hilang.
Alur (3 Node)
Leader
Follower 1
Follower 2
① restart follower 1 — leader tetap melayani
mengejar lewat replikasi log/snapshot
② setelah mengejar, restart follower 2
mengejar lewat replikasi log
③ restart leader terakhir
Vote → leader baru terpilih dalam 0,5-1 detik
leader lama bergabung kembali sebagai follower dan mengejar
RPC konsensus (Raft)
Selama jendela singkat ketika leader sedang mati, klien mungkin menerima E no_leader, tapi klien resmi mencoba lagi secara transparan, sehingga hanya tampak sebagai jeda singkat bagi aplikasi.