Redis Cluster, veriyi birden fazla sunucuya dağıtarak performansı yükselten ve yapıyı daha güvenli hâle getiren bir mimari sunar. Hedef, Redis’i tek bir sunucu üzerinde çalıştırmak yerine sharding, yüksek erişilebilirlik ve otomatik failover özellikleri ile desteklenen bir kümeye dönüştürmektir. Bu bölümde Redis Cluster’ın ne anlama geldiğini açıklayıp sıfırdan bir kurulum gerçekleştireceğiz.
Redis Cluster Nasıl Çalışır?
Redis Cluster, veri kümesini toplam 16384 hash slot’a ayırır ve bu slotları birden çok node’a dağıtarak çalışır. Böylece Redis Redis daha fazla RAM ve CPU kullanabilir. Bir node’un çökmesi genel erişimi etkilemez. Veriler ise otomatik master–replica yapısıyla sürekli korunur.
Cluster’ın çalışması için en az 3 master + 3 replica, yani toplam 6 node önerilir.
Kuruluma Başlamadan Önce Yapılması Gerekenler
Cluster’ı önce bir test ortamında oluşturacağız. Ardından aynı adımları gerçek sunucu kurulumunda da uygulayacağız.
mkdir -p ~/redis-cluster<br>cd ~/redis-cluster
mkdir 7000 7001 7002 7003 7004 7005Her node için ayrı bir redis.conf dosyası oluşturacağız. Bunun için 7000 dizininin içine bir config dosyası ekleyelim.
nano 7000/redis.confİçine şunu ekleyelim
port 7000bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
protected-mode noSonra aynı dosyayı diğer portlara göre uyarlayalım. 7001 ve diğer 7002, 7003, 7004, 7005 portları için de ekleyelim.
port 7001
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes<br>daemonize yes
protected-mode noNode’ları Başlatalım
Her node’u sırayla çalıştıralım.
redis-server 7000/redis.conf
redis-server 7001/redis.conf
redis-server 7002/redis.conf
redis-server 7003/redis.conf
redis-server 7004/redis.conf
redis-server 7005/redis.confÇalıştıklarını kontrol etmek için aşağıdaki komutu çalıştıralım.
ps aux | grep redisCluster’ı Oluşturalım
Şimdi tüm node’ları bir cluster hâline getirelim ve kontrol edelim.
redis-cli --cluster create \
127.0.0.1:7000 \
127.0.0.1:7001 \
127.0.0.1:7002 \
127.0.0.1:7003 \
127.0.0.1:7004 \
127.0.0.1:7005 \
--cluster-replicas 1Komut senden onay isterse yes yazıp devam edelim.
redis-cli -c -p 7000 cluster info
Örnek Bir Key Yazıp Okuyalım
Cluster’ın doğru çalışıp çalışmadığını kontrol edelim. Komutu farklı portlardan girsen bile cluster seni otomatik olarak ilgili node’a yönlendirir.
redis-cli -c -p 7000 set user:1 "Ali"
redis-cli -c -p 7001 get user:1Production Sunucularında Redis Cluster Nasıl Kurulur
Production senaryosunda Redis Cluster kurulumunda, tüm node’ların ayrı ayrı sunucularda çalışması önemlidir. Böylece veri dağılımı düzgün gerçekleşir ve bir master node düşse bile replica sistemi çalışır hâlde tutar. En çok tercih edilen ve en kararlı yapı, 3 fiziksel veya sanal sunucuda 3 master ile 3 replica’dan oluşan yapılandırmadır.
Sunucuya Redis’i kuralım
Ubuntu / Debian için
apt update<br>apt install redis-server -yCentOS / AlmaLinux için
dnf install redis -yKurulum sonrası her node’da cluster modunun açılması gerekir. Bunun için /etc/redis/6379.conf dosyasını düzenleyerek işe başlayalım. Cluster çalışmasını sağlayan gerekli ayarları dosyaya ekleyeceğiz. cluster-enabled yes ifadesiyle cluster modu etkinleşmiş olur.
nano /etc/redis/6379.confport 6379<br>bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
appendonly yesKurulumun son kısmında tüm node’ların birbirine bağlanıp cluster’ın oluşturulması şarttır. Bunun için herhangi bir sunucuda redis-cli –cluster create komutunu çalıştırıyoruz. Komutta her node’un IP ve port bilgisini tek tek belirtiyoruz.
redis-cli --cluster create \
10.0.0.1:6379 \
10.0.0.2:6379 \
10.0.0.3:6379 \
10.0.0.1:6380 \
10.0.0.2:6380 \
10.0.0.3:6380 \
--cluster-replicas 1Komut çalışınca Redis, tanımladığın IP ve port bilgilerine göre tüm node’ları bağlayarak otomatik olarak 3 master + 3 replica düzenini oluşturur. Daha sonra hash slot dağılımı master node’lar arasında eşit biçimde yapılır ve replica’lar ait oldukları master node’lara atanır.
Redis’i yalnızca tek sunucuda kullanmak veya Plesk’te devreye almak istersen, PHP İçin Plesk Panelde Redis Kurulumu rehberine göz atmak işe yarayabilir.
Komut sırasında “yes” yazarak onay verdiğinde cluster resmen oluşturulur ve tüm node’lar ortak bir küme hâlinde çalışmaya başlar.
Sık Sorulan Sorular
Cluster kurulduktan sonra node eklemek mümkün mü?
Yeni bir node’u başlattıktan sonra redis-cli –cluster add-node komutu ile cluster içine ekleyebilirsiniz.
Multi-key komutları cluster modunda nasıl davranır?
MGET, MSET, SUNION gibi komutlar yalnızca aynı hash slot içindeki key’lerde doğru şekilde çalışır. Key’ler farklı slot’lardaysa hata alırsınız. Bunu aşmak için “hash tag” kullanıp key’leri aynı slot’a düşürebilirsiniz.
user:{100}:name → {100} kısmı slot bilgisini belirleyen bölümdür.
Cluster config dosyalarını elle düzenlemeli miyim?
nodes-*.conf dosyalarının yönetimi Redis tarafından yapılır. Manuel değişiklik cluster’ı bozabilir. Düzenleme yapmanız gereken dosya yalnızca redis.conf olmalıdır.