Redis Cluster Sunucu Üzerinde Nasıl Yapılandırılır?

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.

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 7005

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

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

Gerç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 -y

CentOS / AlmaLinux için

dnf install redis -y

Kurulum 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.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 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 1

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

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.

Yorum yapın