Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Redis kümesi düğüm hatalarını nasıl işler?


Redis kümesi düğüm hatalarını nasıl işler?


Redis küme, sürekli çalışma ve veri kullanılabilirliğini sağlamak için arıza algılama, çoğaltma promosyonu ve küme durumu yönetimi kombinasyonu yoluyla düğüm hatalarını işler. Veri kaybı risklerini en aza indirirken, anahtar alanın bütünlüğünü koruyarak kopyaları otomatik olarak tanıtarak birkaç düğümün arızalarından kurtulmak için tasarlanmıştır.

Küme İletişimi ve Arıza Tespiti

Redis küme düğümleri, Redis küme veriyolu adı verilen özel bir TCP tabanlı ikili protokol aracılığıyla iletişim kurar. Her düğüm, bu veriyolü kullanarak kümedeki diğer her düğümle bağlantıları korur, bu da sürekli sağlık kontrolleri ve durum yayılmasını sağlar. Düğümler periyodik olarak akranlarının operasyonel durumunu onaylamak ve kümenin durumu hakkında bilgi paylaşmak için ping paketleri gönderir. Bu iletişim, düğüm arızalarının algılanmasına yardımcı olarak küme bilgilerini etkili bir şekilde yaymak için bir dedikodu protokolü kullanır.

Düğümler aktif bir ping mekanizması kullanarak eşleri izler. Bir düğüm yapılandırılmış bir zaman aşımı süresi (node_timeout) içindeki pinglere yanıt vermezse, muhtemelen bir pfail durumuyla başarısız olduğu için işaretlenir. Bu, geçici bir başarısızlık göstergedir, yani düğümün ulaşılamaz veya aşağı olabileceği, ancak henüz doğrulanmadığı anlamına gelir. PFail koşulu devam ederse ve ana düğümlerin çoğunluğu tarafından onaylanırsa, düğüm arızalı olarak işaretlenir, bu da küme tarafından ulaşılamaz veya aşağı kabul edildiğini gösterir. Bu konsensüs tabanlı arıza tespit mekanizması, başarısız düğümlerin tanımlanmasında yanlış pozitiflerin önlenmesine yardımcı olur.

Ana düğüm arızalarını işleme

Bir ana düğüm başarısız olarak işaretlendiğinde, Redis Cluster yeni usta olmak için kopyalarından birini tanıtmak için bir yük devretme işlemi başlatır. Bu işlem, idari müdahale olmadan kümenin arıza dedektörü tarafından otomatik olarak tetiklenir. Tanıtılan çoğaltma, daha önce başarısız master tarafından yönetilen karma yuvaları servis etme sorumluluğunu üstlenerek, kümenin manuel yeniden yapılandırma olmadan talepleri sunmaya devam edebilmesini sağlar.

Yük devretme yalnızca en az bir çoğaltma varsa ve tanıtılacak şekilde ulaşılabilirse oluşur. Uygun bir çoğaltma yoksa, küme tutarsız veriler sunmayı önlemek için sorguları kabul etmeyi durduracağı bir hata durumuna girer. Bu, yüksek kullanılabilirliği korumak için her bir master için yapılandırılmış kopyaların önemini vurgulamaktadır.

Yük devir mekaniği ve güvenlik

Yük devretme sırasında, çoğaltma, değiştirdiği ana ile tamamen senkronize olmayı bekler ve veri kaybını önlemek için bekleyen tüm güncellemeleri işlediğini sağlar. Bunu, ana rolü üstlenmeden önce güncel bir veri kümesine sahip olması için çoğaltma ofsetini master ile eşleştirerek başarır.

Senkronize edildikten sonra, çoğaltma Üstatların çoğunluğundan yeni bir yapılandırma dönemi ister. Çağ, kümedeki yapılandırma değişikliklerini izlemek için kullanılan mantıksal bir zaman damgasıdır. Bir fikir birliği elde ettikten sonra, çoğaltma güncellenmiş yapılandırmayı tüm düğümlere yayınlar, Master'a tanıtımını ve eski ustanın kopyaya veya kaldırmaya indirgenmesini duyurur.

Eski Üstat, iyileştiğinde, bu yapılandırma güncellemesini alır ve bir master olarak hizmet vermeyi durdurur. Müşteri isteklerini yeni ustaya yönlendirir ve müşterilerin manuel müdahale olmadan küme ile etkileşime girmeye devam etmelerini sağlar.

Ağ bölümlerini ve bölünmüş beyin senaryolarını kullanma

Redis Cluster, ağ bölümleri sırasında bölünmüş beyin sorunlarından kaçınmak için çoğunluk tabanlı fikir birliği kullanır. Bir usta ancak kümedeki ustaların yarısından fazlası tarafından ulaşılamazsa başarısız olur. Çoğunlukla iletişim kuramayan ustalar, yazıları kabul etmeyi durduracak ve bölümler arasındaki farklı veri durumlarını önleyecektir.

Ancak, bir azınlık bölümü, yük devretmeden önce bir ustaya yazmaya devam eden müşteriler içeriyorsa, yazma kaybı potansiyeli vardır. Redis, bir zaman aşımından sonra ve çoğunluk tarafında, ulaşılamayan usta üzerinde hızla başarısız olarak azınlık tarafındaki yazıları reddederek bu riski azaltıyor.

Bu önlemlere rağmen, yük devretme pencereleri sırasında yazılar kaybolabilir, çünkü Redis ustalar ve kopyalar arasında eşzamansız çoğaltma kullanır. Komutlar ve çoğaltma güncellemeleri yazma yanıtları neredeyse aynı anda gönderildiğinden, yazma penceresi çok dardır, ancak imkansız değildir.

Arıza İşlemini Etkileyen Yapılandırma Seçenekleri

Redis Cluster, düğüm arızaları sırasında kullanılabilirliği ve davranışları etkileyen yapılandırma seçeneklerini içerir:

-`` Cluster-Require-Full-Coverage '' (Varsayılan Evet): Küme, düğüm arızaları nedeniyle anahtar alanın herhangi bir kısmının ortaya çıkarılması ve güçlü veri tutarlılığı sağladığı yazar.
-`` Küme Ilaz-Reads-When-Down '(Varsayılan No): Küme bir arıza durumunda olduğunda okumalara izin verilip verilmediğini kontrol eder. Bunun etkinleştirilmesi, kısmi arızalar sırasında bile düğümlerden okumalara izin verir, ancak eski verilerin sunulmasını riske atabilir.

Bu ayarlar, yöneticilerin uygulama gereksinimlerine göre kullanılabilirliği ve tutarlılığı dengelemesine olanak tanır.

Manuel Yük Devretme Desteği

Otomatik yük devretmeye ek olarak, Redis Cluster, çoğaltma düğümlerinde verilebilecek manuel yük devretme komutu sağlar. Bu, bir yöneticinin gerçek bir arıza olayı beklemeden master rollerini değiştirmek istediği bakım veya test senaryoları için kullanışlıdır.

Manuel yük devretme, mevcut ana üzerindeki istemcileri engelleyerek, çoğaltmanın tamamen yakalanmasını bekleyerek ve daha sonra kopyayı pürüzsüz bir atomik geçişle tanıtarak çalışır. Bu, rol değişikliği sırasında veri kaybı ve müşterilerde minimum aksaklık sağlamaz.

Özet

REDIS küme, öncelikle Redis küme veriyolu ve dedikodu protokolü yoluyla sürekli izlemeye dayanan bir arıza algılama ve yük devretme sistemi yoluyla düğüm arızalarını işler. Düğümler, ulaşılamayan ustaları tespit eder ve makbahların çoğunluğunun başarısızlık üzerinde anlaşmasını gerektiren bir fikir birliği sürecinden sonra kopyaları otomatik olarak tanıtmaktadır. Yük devretme, promosyondan önce kopyaların tamamen senkronize edilmesini sağlayarak veri kaybını en aza indirecek şekilde tasarlanmıştır. Ağ bölümleri, bölünmüş beyin koşullarını önlemek için çoğunluk tabanlı kararlar aracılığıyla yönetilir, ancak asenkron replikasyon nedeniyle dar bir yazma kaybı penceresi ortaya çıkabilir. Yapılandırma seçenekleri, arızalar sırasında tutarlılığa karşı kullanılabilirliğin ayarlanmasına izin verir ve manuel yük devretme komutları operatörlere bakım için kontrol sağlar.

Bu mimari, REDIS kümesinin ana düğüm arızalarından otomatik iyileşme ile yüksek kullanılabilirlik ve bölüm toleransı sağlamasını sağlar ve kümenin arıza senaryoları altında operasyonel ve tutarlı kalmasını sağlar.