DBAtlas · Veritabanı operasyon atlası

Redis Sentinel + Cluster ile yüksek erişilebilirlik

Belirti

Amaç: Redis için Sentinel ile otomatik failover'lı master-replica kur; yatay ölçek gerekiyorsa Redis Cluster moduna geç.

1. Master ve replica'ları yapılandır

Bir master ve en az iki replica çalıştırılır. Replica'lar REPLICAOF ile master'ı takip eder (redis.conf içinde 'replicaof <host> <port>' de yazılabilir). Kalıcılık için AOF veya RDB açılmalı ve requirepass/masterauth ile kimlik doğrulama önerilir.

Redis

# replica düğümlerinde çalışma anında:
REPLICAOF 10.0.0.10 6379
# kalıcı yapmak için redis.conf:
# replicaof 10.0.0.10 6379
# masterauth gizli
INFO replication

2. Sentinel'i monitor ve quorum ile yapılandır

Her Sentinel düğümünün sentinel.conf'unda izlenecek master ve quorum tanımlanır. quorum, master'ı 'down' saymak için gereken minimum Sentinel sayısıdır. Üretimde 3 ayrı sunucuda 3 Sentinel önerilir (split-brain'e karşı).

Redis

# sentinel.conf:
sentinel monitor mymaster 10.0.0.10 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

3. Sentinel süreçlerini başlat

Her düğümde Sentinel başlatılır. Sentinel'ler birbirini ve replica'ları otomatik keşfeder; yapılandırmayı çalışırken dosyaya yazar. Bu yüzden sentinel.conf yazılabilir olmalıdır.

Redis

redis-sentinel /etc/redis/sentinel.conf
# veya:
redis-server /etc/redis/sentinel.conf --sentinel

4. Sentinel üzerinden durum sorgula ve failover test et

SENTINEL komutlarıyla mevcut master ve replica'lar sorgulanır. Uygulamalar Sentinel'e 'get-master-addr-by-name' sorarak güncel master'ı öğrenmelidir. Planlı bir failover ile otomatik geçiş doğrulanır.

Redis

SENTINEL master mymaster
SENTINEL get-master-addr-by-name mymaster
SENTINEL replicas mymaster
# planlı geçiş:
SENTINEL failover mymaster

5. Alternatif: Redis Cluster ile veriyi bölümlere ayır

Tek master'ın belleği/verimi yetmiyorsa Redis Cluster kullanılır: veri 16384 hash slotuna bölünür ve birden çok master'a dağıtılır; her master'ın kendi replica'sı olur. Uygulama cluster-aware istemci kullanmalıdır. redis-cli --cluster create ile kurulur.

Redis

redis-cli --cluster create \
  10.0.0.11:6379 10.0.0.12:6379 10.0.0.13:6379 \
  10.0.0.21:6379 10.0.0.22:6379 10.0.0.23:6379 \
  --cluster-replicas 1

6. Cluster durumunu doğrula

Cluster kurulduktan sonra tüm slotların atandığı ve düğümlerin bağlı olduğu doğrulanır. cluster_state 'ok' olmalı ve 16384 slotun tamamı atanmış görünmelidir. Düğüm ve slot dağılımı CLUSTER komutlarıyla izlenir.

Redis

redis-cli --cluster check 10.0.0.11:6379
redis-cli -c -h 10.0.0.11 CLUSTER INFO
redis-cli -c -h 10.0.0.11 CLUSTER NODES
DBAtlas'ta aç →