Berikut adalah cara Redis Cluster menangani kegagalan node:
Kegagalan Otomatis
Ketika simpul utama Klaster Redis gagal, klaster akan secara otomatis mempromosikan salah satu simpul replika untuk master tersebut menjadi master baru. Proses failover ini terjadi secara otomatis tanpa intervensi manual apa pun.
Langkah-langkah kunci dalam proses failover adalah:
1. Node lain dalam cluster mendeteksi bahwa node master telah gagal, baik melalui protokol gosip cluster atau dengan mencoba menyambung ke node.
2. Cluster kemudian mengadakan pemilihan di antara node replika untuk master tersebut. Replika dengan data terkini dipilih sebagai master baru.
3. Node replika terpilih dipromosikan menjadi master baru. Replika lainnya kemudian dikonfigurasi ulang untuk mereplikasi dari master baru.
4. Klien dialihkan ke node master baru menggunakan respons kesalahan `MOVED`, yang berisi pemetaan slot-ke-node baru.
Cakupan Slot
Agar tetap tersedia selama kegagalan node, Redis Cluster mengharuskan sebagian besar node master tersedia dan dapat berkomunikasi. Hal ini dikenal sebagai mempertahankan "cakupan slot".
Setiap node master di cluster bertanggung jawab atas subset dari 16.384 slot hash. Selama mayoritas master tersedia dan dapat melayani slot yang ditugaskan, cluster dapat terus beroperasi.
Jika terlalu banyak node master yang gagal sehingga master yang tersisa tidak dapat mencakup seluruh rentang slot hash, klaster akan menjadi tidak tersedia hingga node yang gagal pulih atau diganti.
Promosi Replika
Klaster Redis mengandalkan node replika untuk menyediakan ketersediaan tinggi. Ketika master gagal, salah satu node replikanya secara otomatis dipromosikan menjadi master baru.
Replika dengan data terkini dipilih sebagai master baru. Hal ini memastikan konsistensi data tetap terjaga selama proses failover.
Menangani Otak Terbelah
Redis Cluster menggunakan pendekatan berbasis kuorum untuk menangani partisi jaringan dan menghindari skenario "split-brain" yang mana cluster akan dibagi menjadi beberapa cluster independen.
Jika sebagian besar master tidak tersedia, node yang tersisa akan menolak permintaan klien hingga partisi terselesaikan. Hal ini memastikan konsistensi data tetap terjaga.
Dengan memanfaatkan failover otomatis dan mekanisme berbasis kuorum ini, Redis Cluster mampu memberikan ketersediaan dan ketahanan yang tinggi dalam menghadapi kegagalan node dan partisi jaringan.
Kutipan:[1] https://yifan-online.com/en/km/article/detail/16750
[2] https://stackoverflow.com/questions/63878562/two-failure-support-in-3-node-redis-cluster
[3] https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/
[4] https://redis.io/docs/latest/commands/cluster-nodes/
[5] https://github.com/lettuce-io/lettuce-core/issues/2318