Redis Sentinel

Redis Sentinel



Üretiminizde yalnızca bir Redis örneğinin olduğu ve herhangi bir nedenle bir noktada başarısız olduğu bir senaryo varsayalım. Uygulamanız verileri Redis veri deposunda önbelleğe alıyor ve artık tek veri kaynağınız öldü. Bu tür senaryoları kontrol etmenin bir yolu, kölelerin ana düğümü geri gelene kadar çoğaltabileceği ana-bağımlı mimarisini sürdürmektir. Redis kümeleri, ana çoğaltma yaklaşımıyla bir dereceye kadar yüksek kullanılabilirliği destekler. Redis Sentinel, Redis örneklerinin yüksek kullanılabilirliğini korumanın daha güvenilir bir yolunu sağlayan başka bir yaklaşımdır. Redis ana düğümünü arızalara karşı izler ve mevcut bir bağımlı düğümü yepyeni bir ana düğüme yükseltecek olan yük devretme sürecini hemen tetikler.







Ayrıca, Redis sentinel, istemcilerin bağlandığı ve en son Ana düğüm IP adresini istediği bir aracı görevi görür. Böylece, bağlı sentinel, ana düğüm adresini hemen sağlar.



Ek olarak, birden fazla nöbetçi belirli bir ana düğümün erişilebilir veya müsait olmadığı konusunda hemfikirse, bir ana düğüm hatası onaylanır. Bu, arıza tespit aşamasını tamamlar ve yük devretme işlemi hemen başlar. Bu nedenle, Redis sentinel, belirli özelliklere sahip dağıtılmış bir sistem olarak görülebilir.



Nöbetçilerin anlaşması, aşağıdaki bölümde tartışılacak olan bir nisap değerine dayanmaktadır.





Kimin Değeri

Quorum değeri, ana düğüm kapalıyken üzerinde anlaşmaya varılması gereken maksimum nöbetçi sayısıdır. Bu değer yalnızca ana düğümdeki bir hatayı tanımlamak için kullanılır. Yük devretme işlemi, lider olarak seçilen bir nöbetçi ile devam etmek için birden fazla mevcut nöbetçi düğümünün yetkilendirilmesiyle başlar.

Redis Sentinel'in Özellikleri

Nöbetçi, Redis veri deposu için yüksek kullanılabilirlik mekanizması sağlamasıyla bilinir. Bunun dışında daha birçok yetenek sıralanabilir.



  • Sentinel, Redis sisteminizdeki ana ve bağımlı düğümlerin durumunu sürekli olarak izler.
  • Redis bulut sunucularınızda bir arıza veya yanlış bir şey olduğunda, sentinel, sentinel API kullanarak yöneticiye veya bağlı uygulamalara bildirimde bulunabilir.
  • Yük devretme aşaması, bir kopyanın yeni ana öğe olarak yükseltilmesiyle nöbetçi tarafından yönetilir. Yeni ana kopyayı kullanmak üzere yapılandırılmış kalan kopyalar. Son olarak, ilgili istemcilere yeni ana düğüm adresi bildirilecektir.
  • Ayrıca, Redis sentinel, bağlı istemciler için istemcilerin mevcut ana örneğin adresini isteyebileceği ve ani bir çöküş meydana gelirse, nöbetçinin yeni ana düğüm adresini hemen göndermeye kararlı olduğu bir yapılandırma sağlayıcısıdır.

Bir sonraki bölümde, ana çoğaltma örnekleriyle Redis nöbetçilerini yapılandıracağız ve düğümleri izlemek için sentinel API'sini kullanacağız.

Sentinel Yapılandırması

İlk olarak, 7000 ve 7001 numaralı bağlantı noktalarında iki Redis örneği oluşturuyoruz. Bağlantı noktası 7000, ana düğüm olacak ve diğeri ana düğümü çoğaltacak. Her iki örnek de sırasıyla aşağıdaki yapılandırma dosyalarını kullanır:

Ana Düğüm Yapılandırması

Liman 7000
küme etkin hayır
küme-yapılandırma-dosyası nodes.conf
küme-düğüm-zaman aşımı 5000
ek olarak evet

Bağımlı Düğüm Yapılandırması

Liman 7001
küme etkin hayır
küme-yapılandırma-dosyası nodes.conf
küme-düğüm-zaman aşımı 5000
ek olarak evet

Her iki örnek de, her biri ile ilişkili yapılandırma dosyasını sağlayarak başlayacaktır. Redis örneklerini ayrı ayrı başlatmak için aşağıdaki komutu kullanabiliriz:

redis sunucusu redis.conf

7001 portunda başlayan Redis örneğine aşağıdaki gibi bağlanalım:

redis-cli -p 7001

Şimdi bu örneği port 7000'de çalışan master'ın bir replikası yapabiliriz. REPICAOF komutu şu şekilde kullanılabilir:

127.0.0.1 kopyası 7000

Beklendiği gibi, 7001 numaralı bağlantı noktasında çalışan örnek, 7000 numaralı bağlantı noktasında çalışan ana sunucunun çoğaltma düğümü oldu.

Şimdi, yukarıdaki ana örneği izlemek için üç Redis nöbetçisini yapılandırmaya hazırız. Aşağıda gösterildiği gibi 5000, 5001 ve 5002 portlarında üç sentinel örneği oluşturmak için üç konfigürasyon dosyamız olması gerekiyor.

Her biri sentinel.conf port numarasının değiştirilmesi dışında dosya aşağıdaki gibi görünür:

Liman 5000
nöbetçi monitör ana düğümü 127.0.0.1 7000 iki
sentinel aşağı-son-milisaniye masternode 5000
sentinel yük devretme zaman aşımı masternode 60000

Şimdi, üç nöbetçiyi çalıştırma zamanı. Yürütülebilir redis-sentinel dosyasını yol ile birlikte kullanabilirsiniz. sentinel.conf bir sentinel örneği oluşturmak için yapılandırma dosyası. Aksi takdirde, yolu belirterek redis-server yürütülebilir dosyasını yine de çağırabiliriz. sentinel.conf ve bayrak -nöbetçi .

Her nöbetçiyi aşağıdaki komutu kullanarak başlatalım:

redis sunucusu sentinel.conf --nöbetçi

İlk nöbetçi bağlantı noktası 5000'de başlatıldı. Benzer şekilde, diğer iki örneği de başlatabilirsiniz.

Şimdi, Redis sentinel kurulumumuz aşağıdaki resimde gösterildiği gibi çalışıyor ve çalışıyor:

Aşağıdaki bölümde, Sentinel API'si ve Redis ana düğümüyle ilgili bilgileri almak için onu nasıl kullanabileceğimiz hakkında daha fazla şey keşfedeceğiz.

Sentinel API'sı

Redis, ilişkili ana ve replikaları izlemek, bildirimlere abone olmak ve sentinel ayarlarını değiştirmek için ayrı bir sentinel API sağlar. Ayrıca, birkaç kullanım aşağıda listelenmiştir.

  • İzlenen Redis ana ve bağımlı örneklerinin durumunu kontrol edin
  • Diğer nöbetçiler hakkında ayrıntılar
  • Yük devretme durumunda nöbetçilerden push tarzı bildirimler alın

SENTINEL komutu, Redis nöbetçilerini ve izlenen düğümleri sorgulamak, güncellemek veya ayarlamak için ilişkili alt komutlarıyla birlikte kullanılabilir.

Ana Düğümün Durumunu Kontrol Edin

Ana düğüm sağlığını zaman zaman izlemek veya kontrol etmek çok önemlidir. Ana ayrıntıları almak için aşağıdaki sentinel API komutu kullanılabilir:

SENTINEL ustası < monitor_master_name >

izlenen_master_adı: Önceki adımda oluşturduğumuz sentinel yapılandırma dosyasında belirtilen ana düğümün adı.

Kurulumumuzdaki ana durumu sorgulamak için bu komutu kullanalım. Bizim durumumuzda, ana düğüm adı 'ana düğüm'.

SENTINEL MASTER ana düğümü

Birkaç bilgi parçası alındı ​​ve bunlardan birkaçı, köle sayısı, bayraklar ve diğer nöbetçiler gibi önemli.

bu bayraklar özellik olarak ayarlandı usta bu da ustanın sağlığının iyi olduğu anlamına gelir. Ana düğüm kapalı olduğunda, s_down veya o_down bayrağı gösterilecektir. Özellikler diğer nöbetçiler 2'ye ayarlanır; bu, Redis nöbetçisinin ana düğüm için diğer iki nöbetçiyi zaten tanıdığı anlamına gelir. ek olarak num-slaves özellik, ana düğüm için kullanılabilir çoğaltmaları görüntüler. Bu durumda, yalnızca bir kopyamız olduğu için 1'e ayarlanmıştır.

Bağlı Replikalar Hakkında Bilgi Alın

Aşağıdaki SENTINEL alt komutunu kullanarak ana düğüme bağlı replikaları kontrol edebiliriz:

SENTINEL ÇOĞALTMALARI < monitor_master_name >

Bu örnekte, ana isim 'masternode' dur.

SENTINEL ana düğümü kopyalar

Beklendiği gibi, Sentinel, 7001 numaralı bağlantı noktasında çalışan bağımlı düğümü algıladı.

İlişkili Sentineller Hakkında Bilgi Alın

Benzer şekilde, aşağıdaki SENTINEL alt komutunu kullanarak mevcut ana düğümle ilişkili diğer nöbetçilerle ilgili ayrıntıları sorgulayabiliriz:

GÖZCÜLER < master_node_name >

Bu durumda, 'masternode' adlı ana düğüm ile ilgili bilgileri getiriyor olacağız.

SENTINEL nöbetçi ana düğümü

Ana Düğüm Adresini Alın

Daha önceki bölümde belirtildiği gibi, Redis sentinel, bağlı istemciler için bir yapılandırma sağlayıcısıdır. Bu nedenle, istenen istemcilere o anda çalışan ana düğüm IP adresini ve bağlantı noktasını sağlama yeteneğine sahiptir. Belirtilen bilgileri almak için aşağıdaki Sentinel API alt komutu kullanılabilir.

SENTINEL ADRES-MASTER-ADDR-AL < master_node_name >

Senaryomuz için yukarıdaki komutu şu şekilde uygulayalım:

sentinel-master-addr-ada göre masternode

Yalnızca birkaç sentinel API komutunu tartıştık. Sentinel-failover, sentinel info-cache, sentinel masters vb. gibi başka alt komutlar da mevcuttur. Ayrıca, yönetim amaçları için de birçok komut kullanılabilir. Aşağıdaki bölümde, Redis sentinel yük devretme sürecine odaklanacağız.

Sentinel Yük Devretme Süreci

Nöbetçimiz yapılandırıldığı için yük devretme aşamasını test edebiliriz. Ana düğümde bir arızayı simüle eden ana düğümümüzü 300 saniye uykuya gönderelim.

hata ayıklama uyumak 300

7000 numaralı bağlantı noktasında çalışan ana düğüm artık erişilemez olmalıdır. Böylece, ilişkili nöbetçiler, master'ın şu anda kullanılamadığını fark edeceklerdir. +düşmek Etkinlik. Ardından, bu ayarlanacak +odown burada 2 nöbetçi, ana düğümün çekirdek değerine göre kapalı olduğunu onaylar. Son olarak, yük devretme aşaması başlayacak ve ideal olarak replikanın yeni master'a yükseltilmesi gerekir.

Ana düğüm IP adresini ve portu tekrar kontrol edelim.

sentinel-master-addr-ada göre masternode

Beklendiği gibi, önceki replika yeni master'a yükseltildi, bu da nöbetçi yük devretme işleminin başarılı olduğu anlamına geliyor. Bu, tek ana kopya çifti için üç nöbetçi kurulumumuzun dağıtımını ve testini tamamlar.

Çözüm

Redis sentinel, belirli bir Redis ana çoğaltma örneğinin yüksek kullanılabilirliğini sağlamak için en güvenilir yaklaşımdır. Bir nöbetçi, insan müdahalesi olmadan otomatik yük devretmeyi izleme, bildirme ve başlatma yeteneğine sahiptir. Ayrıca, birden fazla nöbetçi birlikte, ana düğümün erişilemez olduğu ve çekirdek değerinin ana örneğin kullanılabilirliği kontrol edilirken üzerinde anlaşmaya varılması gereken maksimum nöbetçi sayısı olarak kullanıldığı konusunda hemfikirdir. Redis sentinel, ana düğümün ve ilişkili replikaların durumu hakkında bilgi almak ve ayrıca yönetim görevlerini gerçekleştirmek için kullanımı kolay bir API sunar.