1One Redis Instance (Redis Standalone)

Redisin en basit çalışma şeklidir. Tek makine ya da sunucu üzerinde kuruludur. Konfigurasyonu ve deployu kolaydır. Kapasitesi kurulu olduğu makine ya da sunucunun kaynaklarına bağlıdır. Slave node olmadığı için Redisin çökmesi durumunda veriler kullanılamaz hale gelir. Hata toleransı yoktur.

2- Master-Slave Replication

Master-Slave Replication topolojisinde, replication master node yazılan verinin kopyasının slave node yazılması ve bir kopyasının orada da saklanması işlemidir. Yüksek kullanılabilirlik sağlar. Bu yaklaşımda okuma isteği daha hızlı gerçekleşir. Bir master’a birden fazla slave eklenebilir. Fakat Master bozulursa, tüm mimari SPOOF’a (Tek hata noktası) eğilimlidir. MS mimarisi, verileriniz büyüdüğünde ölçeklendirmeye yardımcı olmaz. Masterın monitör edilebileceği bir yapı olmadığından bir arıza ya da kapanma durumunda problem olmaktadır.

3- Redis Sentinel

Redis 2.6 versiyonu ile birlikte Redis Sentinel 1, Redis 2.8 versiyonu ile de Sentinel 2 adı verilen şuanki geçerli versiyon yayımlanmıştır. Bu topolojide instanceları yönetmek daha kolaydır. Sentinel arka planda çalışan farklı bir uygulamadır. Redis Sentinel, Master-Slave replikasyonun benzeridir fakat burada sentinel adı verilen bir yapı vardır. Sentinel tüm nodeları dinler ve master node bir sorun olduğunda hangi slave node’un master olacağına karar verir. Burada 2 port kullanılır. 1. port client ile haberleşme için, 2. port ise node’ların iletişimi için sentineller tarafından kullanılır. Genelde 1. port 6379, sentinel portu ise +20000 yani 26379’dur. Sentinel yapısı ise oldukça kullanışlı bir yapıdır. Sentineller Redis örneklerini(instance) izlerler. Eğer master down olur veya mastera erişilemezse ve sentineller down-after-milliseconds parametresinde verilen değere göre master node takip eder cevap yoksa master down olmuş sayar. Yeterli sayıda sentinel bunu farkederse ve erişim sorunu sayısı sistem kurulurken belirlenen karar yeter sayısı (quorum)’a ulaşınca, master’ı masterlıktan azlederler ve kendi aralarında bir oylama yapıp, oy çokluğuyla bir slave’i master yaparlar. Diğer slave yada slave’ler yeni masterı kabul ederler. Bir sistemde min 3 ve üstü tek sayılarda sentinel olmalıdır. Örneğin 3 sentinel oluşturacaksak quorum sayısını 2, 5 sentinel olacaksa 3 veya 4 yapabiliriz.

4- Redis Cluster

Redis cluster kurulabilmesi için Redis 3.0 ve üstü versiyona sahip olmanız gerekir. Her bir master node için en az 1 slave node sahip olmanı gerekir ve Redis Cluster için 3 master, 3 slave olmak üzere en az 6 node olmalıdır. Node sayısını tutacağınız datanın büyüklüğüne göre artırabilirsiniz. Her bir node 2 adet TCP bağlantısı açar. Bunlardan birincisi clientların node erişimi için kullanılır, ikincisi ise nodeların birbiri arasındaki iletişimi sağlayan bağlantıdır. Redis cluster yapısında, saklamak istediğiniz datalar parçalanarak master nodelara dağıtılır. 16384 hashslot kaç adet master varsa ona bölünüp her bir master node dağıtılır. Yukarıdaki şekildeki gibi bir cluster yapımız olduğunu düşünürsek örneğin 300 bin adet veri için her bir master node’da ortalama 100 bin veri tutulur. Siz clustera kayıt eklerken cluster otomatik olarak verileri master nodelar arasında paylaştırır. Ardından her bir master node yazılan data masterın ilgili slave node replica edilir.

Herbir node’ın performansı artar. Yazma işlemi daha hızlı olur ve yazılımızda yatay büyüme sağlanmış olur. Cluster ile otomatik sharding (partitioning) yapılır. Büyük datalar için kullanımı idealdir.

Ayrıca Redis Cluster kurmak için birden fazla makinenin/sunucunun olması zorunlu değildir. Örneğin 1 makineye Redis kurup 6001, 6002,… 6006 gibi port belirleyip onlar üzerinde çalışacak şekilde de redis cluster kurabilirsiniz, 3 makineye Redis kurup her bir makineye 1 master, 1 slave olacak şekilde ayarlayıp onlar üzerinde çalışacak şekilde de redis cluster kurabilirsiniz ya da 6 makineye kurup her bir makine de bir node çalışacak şekilde redis cluster kurabilirsiniz. Cluster/node yönetiminin zorlaşmaması ve veri güvenliğinin sağlanması açısından imkan varsa yukarıdaki gibi bir redis cluster yapısı için 3 adet makine kullanmanızı öneririm.

Redis Kullanım Senaryolarına İlişkin

  • Test için kullanacak, yüksek kullanılabilirlik ya da verilerin güvenliği öncelik değilse 1. topolojiyi kullanmak idealdir.
  • Yüksek kullanılabilirliğe ihtiyacı olup, ölçeklemeye ihtiyaç yoksa ve RAM miktarından daha az data tutulacaksa 3. topolojiyi kullanmak idealdir.
  • Ölçeklemeye ithiyaç varsa, tutacağınız veri miktarı büyükse ve otomatik failover yapısına ihtiyaç varsa 4. topolojiyi kullanmak idealdir.