AWS üzerinde, 1GB ramli toplamda 3 adet (1 master 2 slave olmak üzere) redis sunucum mevcut.
Kayıt ettiğim veri anlamsız şekilde bazen 15 bazen 30 saniyede otomatik siliniyor. Persistent olarak AOF-RDB (ikisini aynı anda kullanıyorum) yapılandırmaları yaptıktan sonra bu durumu farkettim.
Bu konuda tecrübesi olanlar yardımcı olabilirse sevinirim.
Master sunucumun conf ayarlarını aşağıya ekliyorum hocam. Slave sunucularda da slaveof şeklinde ek parametre var onun dışında slavelar da bu ayarlarda + sentinel da aynı şekilde.
Tekrar bir deneme yaptım TTL kontrolü şeklinde bir kaç saniye sonra yine gitti.
Replica set kurulumu ile alakalı bir sorun mu diye düşündüm. Set ettiğimde slave sunuculara da anında yazılıyor
Çok teşekkür ederim. Henüz bende sorunu çözemedim çok iyi olur @ozgurozturknet hocam.
kendimce düşündüğüm şeyler şunlardı;
Sentinel tarafında sorun oluşup clusterdaki veriler silinir mi?
Redis tarafında sorun oluşup clusterdaki veriler silinir mi?
Master ve Slave nodelar da appendOnly açık. AOF-RDB tarafından kaynaklı bir sorun mu? (bu tüm node sunucular kendi kendine kalıcılık sağlarken bi tutarsızlık mı oluyor)
Bir tane sıfırdan server kurup sentinel’sız kurulum yaptım veriler kaybolmadı.
Sentinel kurduğumda ise bu sorunu orda da yaşadım.
Sorun sentinel’da gibi duruyor sanki. Sizce hocam?
Selam, bu durumla daha önce Google Cloud ile çalışırken karşılaşmıştım. Redis’e gebersen de keyleri silme diye ayar çekmiştik yine de siliyordu. Redis her ne kadar olgunlaştım artık dese de bence hızlı erişmek için ancak backup’lı olarak kullanılmalı. Yaptığımız uygulamayı önce Redis’e bak yoksa DB’den al davranışını gösterecek şekilde değiştirmiştik.
Merhaba hocam @ozgurozturknet
Bu işi farklı yollarla çözsem de içim rahat etmedi peşine düşmek istedim.
Docker kullanarak bu sorunun çözüldüğünü gördüm fakat ek bir şey sormak istiyorum.
Kendi bilgisayarımda çalışırken docker run ile Buradaki ayarlar ile; https://github.com/marcel-dempers/docker-development-youtube-series/tree/master/storage/redis/clustering kurup sorunsuz birbirlerine bağlayıp çalıştırabiliyordum hatta docker exec ile container isimleri ile bağlanabiliyordum fakat bunu 4 nodelu docker swarm üzerinde managerdan stack-compose ile deploy ettiğimde sorunlarla karşılaştım. Sadece manager üzerinde tüm containerların ayağa kalkması, isimleri ile exec edememek(redis-0 yazıp bağlanmak yerine oluşturulan id ile bağlanabiliyorum), master sunucunun Screenshot by Lightshot down olması gibi…
Sanırım yapılandırmalarda bir yanlışlık yapıyorum çünkü bilgisayarımda swarm kullanmadan önce sorunsuz çalışıyordu.
Aslında birden fazla şey sordum şöyle maddeler halinde tekrar toparlayayım.
ŞURADAKİ linkte adam tek node üzerinde docker run ile containerları (redis clusterı) kuruyor. Tek node üzerinde sorunsuz bende çalıştırdım fakat bunu docker swarm üzerinde (4 node üzerinde) service olarak dağıtmak istiyorum amaç yani özetle bu, bunu soru olarak baz alabilirsiniz.
4 node üzerinde bu 3 redis- 3 sentinelı birbirleri ile --name ile haberleşecek şekilde dağıtmak istiyorum.
Mesela aşağıdaki şekilde dağıtamıyorum.
Yukarıda anlatmak istediğimde bunları yaparken Compose dosyamda da olduğu gibi alt alta yazıp stack ile dağıtmaya çalıştığımda tek node üzerinde (managerda) hepsi oluşuyordu dağıtmıyordu diğer bir örnek ise container isimleri ile erişemiyordum (redis cluster içerisinde master redis-0 diyelim, redis-1 redis.conf dosyası içerisine sen redis-0 'ın slave 'ısın dediğimde erişilmiyordu masterı görmüyordu haliyle redis clusterdaki master down oluyordu vs vs)
@Anilz biraz meşgulüm müsait olduğum anda bunu kendi sistemimde deneyeceğim. Ama sanırım sorunun service isimleriyle alakalı. GitHub - behoyh/redis-swarm-cluster şuradaki örneğe bir göz atar mısın?
Çok iyi olur hocam teşekkür ederim. Bende bu süreçte araştırmaya devam edeceğim.
Emin olmak için bir şey daha sormak istiyorum;
-v ${PWD}/redis-0:/etc/redis/ `
Şu kısımda adam redis-0 klasörünü /etc/redis’e mount ediyor değil mi hocam? Bunun docker service oluştururken karşılığı –mount {PWD}/redis-0:/etc/redis/ değil miydi? -v yerine --mount
Bunu yaptığımda da oluşturamadım. invalid argument “/redisconf/redis-0:/etc/redis/” for “–mount” flag: invalid field ‘/redisconf/redis-0:/etc/redis/’ must be a key=value pair