Protokol — Server ↔ Server (Cluster)
Protokol RPC peer, dipakai hanya dalam mode cluster. Node berbagi satu status lock lewat konsensus Raft — setiap perubahan status lock (acquire, release, expiry) hanya diterapkan setelah proposal leader → replikasi mayoritas → commit, sehingga mutual exclusion tetap terjaga bahkan saat partisi atau failover. Lihat Cara Kerja untuk penjelasan konsepnya.
Alur — dari satu acquire hingga di-commit
Klien
Leader
Follower 1
Follower 2
A · acquire (key)
AppendEntries (Grant)
AppendEntries (Grant)
OK
mayoritas tercapai → commit, diterapkan di semua node
A · acquired (token)
permintaanresponsRPC konsensus (Raft)
Leader mengubah command lock menjadi command yang direplikasi, membawanya dalam RPC AppendEntries, dan meng-commit setelah mayoritas termasuk dirinya sendiri mencatatnya (dengan 3 node, leader ditambah follower 1 sudah cukup — tidak perlu menunggu sisanya). Respons ke klien baru dikirim setelah commit, jadi begitu kamu menerima respons, lock itu sudah tertulis di mayoritas.
Aturan Port & Alamat
- RPC peer memakai port Raft khusus = port klien + 1000 (mis.
5225→6225). Diturunkan otomatis tanpa key konfigurasi terpisah, dan hanya listen dalam mode cluster. Firewall kamu perlu membuka kedua port. - Konfigurasi (
cluster_self/cluster_peers) selalu berisi alamat klien. Hanya dial ke peer yang menambahkan +1000 ke port — alamat redirectM(moved) yang diberikan ke klien selalu alamat klien polos. - Peran dibedakan murni lewat port — tidak ada langkah dalam protokol untuk membedakan klien dari peer. Lihat Koneksi & Auth untuk urutan koneksi dan aturan auth/TLS.
Daftar Isi
- Server-ke-Server
- Parameter Raft
- Konfigurasi (Env Var)
- Prosedur Rolling Restart
Lihat Juga
- Penjelasan sederhana pemilihan leader, commit mayoritas, dan skenario kegagalan — Cara Kerja
- Cara klien menemukan leader —
M· Moved, Aturan Pencocokan Respons - Konfigurasi deployment nyata (Docker, Kubernetes, dll.) — Deployment Server Ticketing