Redis Cluster, veriyi birden çok sunucu üzerinde paylaştırarak performansı artıran ve sistemi daha dayanıklı bir hâle getiren bir çözüm sunar. Amaç, Redis’i tek sunucu bağımlılığından çıkararak sharding, yüksek erişilebilirlik ve otomatik failover imkânlarıyla çalışan bir küme mimarisi oluşturmaktır. Buradan itibaren Redis Cluster’ın çalışma mantığını ele alıp sıfırdan bir kurulum yapacağız.
Redis Cluster Nasıl İşler
Redis Cluster, tüm veriyi 16384 hash slot’a bölerek her slotu ayrı sunuculara dağıtır. Böylece Redis CPU ve işlem gücünden yararlanabilir. Herhangi bir node arızalansa bile küme yapısı hizmet vermeye devam eder. Veri bütünlüğü ise otomatik master–replica düzeniyle korunur.
Cluster’ın çalışması için en az 3 master + 3 replica, yani toplam 6 node önerilir.
Redis Cluster İçin Gerekli Hazırlıklar
Kurulum adımlarını ilk olarak test ortamında gerçekleştireceğiz. Sonrasında bu işlemleri gerçek sunucu üzerinde tekrarlayacağız.
mkdir -p ~/redis-cluster<br>cd ~/redis-cluster
mkdir 7000 7001 7002 7003 7004 7005Her node’un kendi redis.conf dosyasına sahip olması gerekir. Bu nedenle 7000 dizini altında 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
Key Yazma ve Okuma ile Cluster Testi
Sistemin sağlıklı işlediğini doğrulamak için bir key denemesi yapacağız. Komutu farklı portlarda kullansan bile cluster otomatik olarak doğru node’u seçer.
redis-cli -c -p 7000 set user:1 "Ali"
redis-cli -c -p 7001 get user:1Gerçek Sunucularda Redis Cluster Yapılandırma
Production ortamında Redis Cluster hazırlarken, her bir node’un farklı bir sunucu üzerinde konumlandırılması gerekir. Bu yapı, veri dağılımını doğru şekilde sağlar ve bir master node düştüğünde replica otomatik olarak sistemi çalışır durumda tutar. En temel ve stabil tercih, 3 ayrı sunucu üzerinde 3 master + 3 replica şeklinde kurulan mimaridir.
Sunucuya Redis’i kuralım
Ubuntu / Debian için
apt update<br>apt install redis-server -yCentOS / AlmaLinux için
dnf install redis -yKurulum tamamlandıktan sonra her sunucuda cluster modunu devreye almamız gerekir. Bunun için /etc/redis/6379.conf dosyasını açıyoruz. İçine Redis’in cluster modunda çalışmasını sağlayacak temel ayarları ekliyoruz. cluster-enabled yes satırıyla cluster modunu aktif hâle getiriyoruz.
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 sonunda tüm node’ların birbirine bağlanması ve cluster’ın oluşturulması gerekiyor. Bu aşamada herhangi bir sunucudan redis-cli –cluster create komutunu çalıştırıyoruz. Komutun içine tüm node’ların IP ve portlarını sırayla 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 1Komut çalıştırıldıktan sonra Redis, yazdığın IP ve portlara göre tüm node’ları birbirine bağlar ve otomatik olarak 3 master + 3 replica dizilimi oluşturur. Daha sonra hash slot’lar master node’lar arasında eşit şekilde dağıtılır ve replica’lar kendi master node’larına atanır.
Redis’i tek makinede kullanmayı veya Plesk ortamında çalıştırmayı planlıyorsan, Plesk Panelde Redis Desteği Nasıl Etkinleştirilir? rehberine bakmak yararlı olacaktır.
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ışır hâle getirdikten sonra redis-cli –cluster add-node komutunu kullanarak kümeye dahil edebilirsiniz.
Cluster modunda multi-key komutlar nasıl çalışır?
MGET, MSET, SUNION gibi komutlar sadece aynı hash slot’a ait key’lerde sorunsuz çalışır. Farklı slot’lardaysa hata oluşur. Bu sorunu çözmek için key’leri “hash tag” yöntemiyle aynı slot’a yönlendirebilirsiniz.
user:{100}:name → {100} bölümü slot’u belirler.
Cluster config dosyalarını manuel düzenlemeli miyim?
nodes-*.conf dosyaları Redis tarafından otomatik olarak yönetilir. Bu dosyalara manuel müdahale edilmesi cluster yapısını bozabilir. Yalnızca redis.conf üzerinden değişiklik yapılmalıdır.