Redis Cluster'ın düğüm hatalarını nasıl ele aldığı aşağıda açıklanmıştır:
Otomatik Yük Devretme
Bir Redis Cluster ana düğümü başarısız olduğunda, küme otomatik olarak bu ana sunucunun kopya düğümlerinden birini yeni ana düğüm olacak şekilde yükseltir. Bu yük devretme işlemi herhangi bir manuel müdahaleye gerek kalmadan otomatik olarak gerçekleşir.
Yük devretme sürecindeki önemli adımlar şunlardır:
1. Kümedeki diğer düğümler, küme dedikodu protokolü aracılığıyla veya düğüme bağlanmaya çalışarak ana düğümün başarısız olduğunu algılar.
2. Küme daha sonra söz konusu ana öğenin kopya düğümleri arasında bir seçim gerçekleştirir. En güncel verilere sahip kopya, yeni ana kopya olarak seçilir.
3. Seçilen kopya düğümü yeni ana düğüm olacak şekilde yükseltilir. Diğer kopyalar daha sonra yeni ana kopyadan çoğaltılacak şekilde yeniden yapılandırılır.
4. İstemciler, yeni yuvadan düğüme eşlemeyi içeren "MOVED" hata yanıtı kullanılarak yeni ana düğüme yönlendirilir.
Yuva Kapsamı
Düğüm arızaları sırasında kullanılabilir durumda kalabilmek için Redis Cluster, ana düğümlerin çoğunluğunun kullanılabilir olmasını ve iletişim kurabilmesini gerektirir. Buna "yuva kapsamının" korunması denir.
Kümedeki her ana düğüm, 16.384 karma yuvasının bir alt kümesinden sorumludur. Ana birimlerin çoğunluğu mevcut olduğu ve kendilerine atanan yuvalara hizmet edebildiği sürece küme çalışmaya devam edebilir.
Geriye kalan ana düğümlerin tam karma yuvası aralığını kapsayamayacak kadar çok sayıda ana düğüm arızalanırsa, başarısız düğümler iyileşene veya değiştirilene kadar küme kullanılamaz hale gelecektir.
Replika Promosyon
Redis Cluster, yüksek kullanılabilirlik sağlamak için çoğaltma düğümlerine güvenir. Bir ana öğe başarısız olduğunda, kopya düğümlerinden biri otomatik olarak yeni ana öğe olacak şekilde yükseltilir.
En güncel verilere sahip kopya, yeni ana kopya olarak seçilir. Bu, yük devretme işlemi sırasında veri tutarlılığının korunmasını sağlar.
Bölünmüş Beyinle Başa Çıkmak
Redis Cluster, ağ bölümlerini yönetmek ve kümenin birden çok bağımsız kümeye bölündüğü "bölünmüş beyin" senaryolarını önlemek için çekirdek tabanlı bir yaklaşım kullanır.
Ana sunucuların çoğunluğu kullanılamaz hale gelirse, geri kalan düğümler, bölüm çözümlenene kadar istemci isteklerini reddeder. Bu, veri tutarlılığının korunmasını sağlar.
Redis Cluster, bu otomatik yük devretme ve çekirdek tabanlı mekanizmalardan yararlanarak, düğüm arızaları ve ağ bölümleri karşısında yüksek kullanılabilirlik ve esneklik sağlayabilir.
Alıntılar:[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