Redis’in High Availability Çözümü: Sentinel

High Availability de nedir?

Matrix’in meşhur sahnesini hatırlamayan var mı? Avluda Neo ile (N) tane Ajan Smith’in sonsuza kadar süreceğini düşündüğümüz kavga sahnesinden bahsediyorum evet.

Neden High Availability’e İhtiyaç Duyarız?

Yazının başındaki örneğe geri dönelim. Amacımız Neo’yu yenmek. Bunun için de elimizdeki en iyi ajan olan Smith’i, o zamana kadar mükemmel analiz ettiğimiz Neo’nun karşısına tek başına gönderiyoruz, biliyoruz ki bütün yeteneği ve dayanıklılığıyla sorunsuz bir şekilde görevini yerine getirebilir.

Peki, elimizde 3 tane aynı yetenekte ajanımız olsaydı?

Böylece kaynağı tükenen ajan kenara çekilip dinlense, bir başkası onun yerine geçip sistemi savunmaya devam etse ve bu yükü devretme (failover) işlemi sistemli bir şekilde ilerlese. Sonsuza kadar — teoride — ayakta kalabilir miydik?

Redis’in Çözümü Nedir?

Redis, yukarıda da bahsettiğimiz üzere cluster desteğini altyapısal olarak destekliyor. Ancak bir sistemin cluster’ı desteklemesi demek, failover’ı da otomatik olarak yürütmesi anlamına gelmez.

Sentinel ne iş yapar?

Master uygulamada bir sorun olduğunu varsayarsak bu şu anlama gelir: Artık Redis’e yeni bir veri yazılamayacak!

Deneme — Yanılma

Önce topolojiyi görmekte fayda var:

  • N tane konumlandırılan redis-server kopyalarına tek bir noktadan ulaşabilmek

./redis/redis-entrypoint.sh

Sonuç

docker-compose up -d komutu ile uygulamayı çalıştırıp, stack ayağa kalktıktan sonra docker exec -it redis01 sh komutunu çalıştırıp container içerisine girmenizi ve redis-cli info replication komutunu çalıştırmanızı tavsiye ediyorum. Böylece master’a bağlı kaç adet slave’in olduğunu ve istatistikleri öğrenebilirsiniz. Ya da redis01 yerine redis02 veya redis03 yazarak aynı istatistikleri slave ağzından dinleyebilirsiniz.

Software Development Manager (at) Rasyotek. Former trainer & consultant. Family member of C# and Python. Newbie on Unix. Articles are mostly about coding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store