Redis Cluster kullanarak veriyi birden fazla sunucuya dağıtabilir ve hem performansı hem güvenilirliği etkili şekilde yükseltebilirsiniz. Buradaki temel hedef, Redis’i tek bir sunucuyla sınırlamadan sharding desteği, yüksek erişilebilirlik ve otomatik failover özellikleriyle çalışan bir küme yapısına taşımaktır. Bu içerikte Redis Cluster’ın nasıl çalıştığını açıklayıp sıfırdan kurulum adımlarına geçeceğiz.
Redis Cluster Çalışma Mantığı
Redis Cluster, veriyi 16384 hash slot’a ayırarak bu slotları farklı node’lara dağıtan bir mekanizmayla çalışır. Bu yapı sayesinde Redis daha geniş RAM ve CPU kaynaklarını kullanabilir. Bir node devre dışı kalsa bile küme çalışmaya devam eder. Veriler ise master ve replica ilişkisiyle otomatik olarak yedeklenir.
Cluster’ın çalışması için en az 3 master + 3 replica, yani toplam 6 node önerilir.
Kurulum İçin Hazırlık
Cluster yapılandırmasını önce test ortamında hazırlayacağız. Ardından aynı kurulum sürecini gerçek sunucuya taşıyacağız.
mkdir -p ~/redis-cluster<br>cd ~/redis-cluster
mkdir 7000 7001 7002 7003 7004 7005Node başına bir redis.conf üretmemiz gerekiyor. Bu adımda 7000 klasörünün içerisine bir yapılandırma 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
Redis Cluster’ı Key İşlemiyle Kontrol Edelim
Cluster’ın işleyişini test etmek adına bir key yazalım ve okuyalım. Hangi portu kullanırsan kullan, cluster seni doğru node’a kendi yönlendirir.
redis-cli -c -p 7000 set user:1 "Ali"
redis-cli -c -p 7001 get user:1Production Ortamında Redis Cluster Kurulumu
Gerçek bir ortamda Redis Cluster kurarken, her node’un ayrı bir sunucu üzerinde çalışması zorunludur. Bu sayede veri dağılımı daha sağlıklı olur ve bir master node arızalandığında replica devreye girerek sistemi aktif tutar. En sorunsuz ve kararlı kurulum modeli ise, 3 fiziksel veya sanal sunucuda 3 master ve 3 replica olacak şekilde oluşturulan 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 -yKurulumu bitirdikten sonra her sunucu üzerinde cluster modunu devreye sokmamız şarttır. Bu işlem için /etc/redis/6379.conf dosyasını açalım. Redis’in cluster modunda çalışmasını sağlayacak ayarları buraya ekleyelim. cluster-enabled yes komutu cluster modunu aktif eder.
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 adımda tüm node’ları birbirine bağlayarak cluster yapısını oluşturmalıyız. Bunun için herhangi bir sunucuda redis-cli –cluster create komutunu çalıştırıyoruz. Komut içine tüm node’ların IP ve port bilgilerini tek tek ekliyoruz.
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ığında Redis, verdiğin IP ve port bilgilerine göre tüm node’ları birbirine bağlayarak 3 master + 3 replica şeklinde otomatik bir dağılım oluşturur. Ardından hash slot’lar master node’lar arasında eşit biçimde paylaştırılır ve replica’lar ilgili master’a atanır.
Redis’i tek sunucuda kullanmak ya da Plesk üzerinde devreye almak istersen, Plesk Sunucularında PHP Redis Modülü Nasıl Kurulur? rehberine göz atmak faydalı 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.