Sunucu Üzerinde Redis Cluster Nasıl Oluşturulur?

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.

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 7005

Her 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 no

Sonra 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 no

Node’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 redis

Cluster’ı 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 1

Komut 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:1

Production 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 -y

CentOS / AlmaLinux için

dnf install redis -y

Kurulum 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.conf
port 6379<br>bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
appendonly yes

Kurulumun 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 1

Komut ç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.

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.

Yorum yapın