Redis Cluster, veriyi birden fazla sunucuya dağıtarak daha yüksek performans ve daha güvenli bir yapı sağlar. Amaç, Redis’i tek sunucudan çıkarıp sharding, yüksek erişilebilirlik ve otomatik failover özelliklerine sahip bir küme hâline getirmektir.
Bu yazıda Redis Cluster’ın ne olduğunu netleştirelim ve sıfırdan bir kurulum yapalım.
Redis Cluster Nasıl Çalışır?
Redis Cluster veriyi 16384 hash slot’a böler ve bu slotları farklı sunuculara dağıtır.
- Redis daha fazla RAM ve CPU kullanabilir.
- Tek node çökse bile sistem ayakta kalır.
- Veriler otomatik olarak master–replica yapısında korunur.
Cluster’ın çalışması için en az 3 master + 3 replica, yani toplam 6 node önerilir.
Kurulum İçin Hazırlık
Cluster’ı test ortamında kuracağız. Sonra gerçek sunucu kurulumuna da geçeceğiz.
mkdir -p ~/redis-cluster<br>cd ~/redis-cluster
mkdir 7000 7001 7002 7003 7004 7005Her Node İçin redis.conf dosyası oluşturalım. Bunun için 7000 klasörünün içine bir config dosyası oluşturalım.
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 doğru çalışıyor mu test edelim. Komutu farklı portlardan çalıştırsan bile cluster seni otomatik olarak doğru node’a yönlendirir.
redis-cli -c -p 7000 set user:1 "Ali"
redis-cli -c -p 7001 get user:1Production (Gerçek Sunucu) Redis Cluster Kurulumu
Gerçek bir ortamda Redis Cluster kurarken her node’un ayrı bir sunucuda çalışması gerekir. Böylece hem veri dağılımı sağlıklı olur hem de bir master node düştüğünde replica devreye girerek sistemi ayakta tutar. En basit ve stabil yapı, 3 fiziksel ya da sanal sunucu üzerinde 3 master + 3 replica şeklinde kurulan yapıdır.
Sunucuya Redis’i kuralım
Ubuntu / Debian için
apt update<br>apt install redis-server -yCentOS / AlmaLinux için
dnf install redis -yKurulumdan sonra her sunucuda cluster modunu aktif hâle getirmemiz gerekiyor. Bunun için /etc/redis/6379.conf dosyasını açalım. İçerisine Redis’in cluster modunda çalışmasını sağlayan temel ayarları ekleyelim.cluster-enabled yes ile cluster modunu aktif ediyoruz.
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 yesSon aşamada ise tüm node’ları birbirine bağlayarak cluster’ı oluşturmamız gerekiyor. Bunun için herhangi bir sunucudan redis-cli --cluster create komutunu çalıştırıyoruz. Komutun içerisine tüm node’ların IP ve port bilgilerini tek tek yazıyoruz:
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 1Bu komutu çalıştırdıktan sonra Redis, yazdığın IP ve portlara göre tüm node’ları birbirine bağlar ve 3 master + 3 replica olacak şekilde otomatik bir dağıtım yapar. Ardından hash slot’lar master’lar arasında eşit biçimde paylaşılır ve replica’lar da ilgili master node’lara atanır.
Eğer Redis’i sadece tek sunucuda kullanmak ya da Plesk ortamında devreye almak istiyorsak Plesk Panelde Üzerinde Redis Kurulumu Nasıl Yapılır? rehberine göz atmak yararlı olabilir.
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’ı kurduktan sonra node ekleyebilir miyim?
Yeni bir node’u çalıştırdıktan sonra redis-cli --cluster add-node komutu ile kümeye dahil edebilirsiniz.
Cluster modunda multi-key komutlar nasıl çalışır?
MGET, MSET, SUNION gibi komutlar yalnızca aynı hash slot içindeki key’lerde sorunsuz çalışır. Eğer farklı slot’lardaysa hata alırsınız.. Bu problemi çözmek için key’leri “hash tag” yöntemini kullanarak aynı slot’a düşürebilirsiniz.user:{100}:name → {100} kısmı slot belirler.
Cluster config dosyalarını manuel düzenlemeli miyim?
nodes-*.conf dosyalarını Redis otomatik yönetir. Bu dosyalara elle müdahale etmek cluster yapısını bozabilir. Sadece redis.conf üzerinde değişiklik yapılmalıdır.
