Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Redis Sentinel ile Yüksek Erişilebilirlik (High Availability) Kurulumu ve Failover Senaryoları

nexter

Üye
Katılım
14 Mart 2026
Mesajlar
28
Merhaba arkadaşlar, bugün sizlere Redis'in tek nokta arızası (SPOF) sorununu ortadan kaldıran, yüksek erişilebilirlik sağlayan Redis Sentinel kurulumunu ve failover senaryolarını adım adım anlatacağım. Özellikle üretim sunucularında Redis kullanan arkadaşlar için bu rehber hayati önem taşıyor. Sentinel, master Redis sunucusu down olduğunda otomatik olarak bir slave'i yeni master yapar ve uygulamalarınızın kesintisiz çalışmasını sağlar.

🔍 Redis Sentinel Nedir ve Neden Gereklidir?

Redis, performansıyla hepimizin vazgeçilmezi. Ancak tek bir Redis instance'ı çalıştırmak, o sunucuda yaşanacak bir donanım arızası, bakım ya da network problemi durumunda tüm uygulamanızı çökertebilir. İşte Redis Sentinel, dağıtık sistemlerde gözetim (monitoring), bildirim (notification) ve otomatik failover yönetimi sağlayan bir sistemdir. Temel olarak master-slave replikasyonu üzerine kurulur ve master'ın sağlığını sürekli kontrol eder.

Benim sunucularda genelde kullandığım yöntem, en az 3 Sentinel instance'ı (tercihen farklı sunucularda) ve bir master, iki slave'den oluşan bir topolojidir. Bu sayede quorum (çoğunluk) sağlanır ve güvenilir failover yapılabilir.

⚙️ Temel Redis Replikasyonunun Kurulması

Öncelikle, Sentinel'in yöneteceği bir master ve en az bir slave Redis sunucunuzun çalışıyor olması gerekir. Master sunucunuzdaki /etc/redis/redis.conf dosyasında bağlantı için gerekli ayarı yapalım.

NGINX:
# Master Redis'te (varsayılan zaten böyledir)
bind 0.0.0.0
protected-mode no # Veya güvenlik için belirli IP'leri allowlist yapın

Slave sunucunuzdaki /etc/redis/redis.conf dosyasına ise master'ı işaret etmesini söyleyelim.

NGINX:
# Slave Redis'te
replicaof <MASTER_IP_ADRESI> 6379
masterauth <MASTER_PAROLASI> # Eğer master'da requirepass ayarı varsa

Her iki sunucuda da Redis'i restart ettikten sonra, master'a bağlanıp INFO replication komutu ile replikasyon durumunu kontrol edebilirsiniz. Slave'in connected_slaves kısmında bağlı olduğunu görmelisiniz.

🛡️ Redis Sentinel Konfigürasyonu ve Kurulumu

Şimdi asıl işimize, Sentinel kurulumuna geçelim. Sentinel, aynı Redis sunucusu paketi içinde gelir. Her Sentinel için ayrı bir konfigürasyon dosyası oluşturacağız. Örneğin: /etc/redis/sentinel-26379.conf

NGINX:
port 26379
daemonize yes
pidfile /var/run/redis-sentinel-26379.pid
logfile "/var/log/redis/sentinel-26379.log"

# İzleyeceğimiz master grubunu tanımlıyoruz.
# 'mymaster' isimli bir grubumuz var.
# 2: Failover için gereken minimum Sentinel sayısı (quorum).
sentinel monitor mymaster <MASTER_IP_ADRESI> 6379 2
sentinel auth-pass mymaster <MASTER_PAROLASI>
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000

Bu ayarlarda şu ayara çok dikkat etmelisiniz: down-after-milliseconds. Bu, bir master'ın "down" olarak işaretlenmesi için geçen süredir. 5000 milisaniye (5 saniye) makul bir değerdir. quorum değeri olan 2 ise, "master down" kararının verilebilmesi için en az 2 Sentinel'in aynı fikirde olması gerektiğini söyler.

Aynı konfigürasyonu, diğer iki sunucuda da (IP adreslerini ve portlarını değiştirerek, örn: 26380, 26381) kurmalısınız. Sentinel'leri başlatalım:

Bash:
redis-sentinel /etc/redis/sentinel-26379.conf
# veya systemctl ile bir service dosyası oluşturup yönetebilirsiniz.

Tüm Sentinel'ler çalıştıktan sonra, herhangi birine bağlanıp durumu sorgulayabilirsiniz:

Bash:
redis-cli -p 26379
sentinel master mymaster
sentinel slaves mymaster
sentinel sentinels mymaster

⚠️ Failover Senaryosu ve Testi

En kritik kısma geldik: Failover'ın nasıl çalıştığını test etmek. Master Redis sunucunuzun prosesini durdurarak veya sunucuyu kapatarak bir arıza simülasyonu yapalım.

Bash:
# Master sunucuda Redis'i durduralım
sudo systemctl stop redis-server
# veya
sudo killall redis-server

5 saniye (down-after-milliseconds değeri) sonra Sentinel'ler master'ı +sdown (subjective down) olarak işaretleyecek. Daha sonra diğer Sentinel'lerle iletişime geçip, quorum sağlandığında master +odown (objective down) olacak.

Ardından Sentinel'ler arasından bir lider seçilir ve bu lider, en uygun slave'i (replica offset'i en güncel olan) yeni master olarak seçer. Eski master geri geldiğinde ise yeni master'ın slave'i olarak konfigüre edilir.

Failover tamamlandıktan sonra, Sentinel konfigürasyon dosyaları otomatik olarak güncellenir! Yeni master'ın IP'sini görebilirsiniz.

🔗 Uygulama Tarafında Bağlantı Yönetimi

Uygulamanızın Redis'e bağlanırken artık tek bir IP kullanmaması gerekir. Redis istemci kütüphanelerinin çoğu Sentinel desteği sunar. Bağlantı bilgisi olarak Sentinel'lerin adreslerini ve "mymaster" isimli servisi vermelisiniz. İstemci, önce Sentinel'lere sorarak anlık master'ın kim olduğunu öğrenir ve ona bağlanır.

Örneğin, PHP'de Predis kütüphanesi ile:

PHP:
$sentinels = [
    'tcp://SENTINEL1_IP:26379',
    'tcp://SENTINEL2_IP:26380',
    'tcp://SENTINEL3_IP:26381'
];
$options = ['replication' => 'sentinel', 'service' => 'mymaster'];
$client = new Predis\Client($sentinels, $options);

🎯 Son Kontroller ve Optimizasyon Önerileri

Kurulum bittikten sonra mutlaka şunları kontrol edin:
- Tüm Sentinel'ler birbirini görüyor mu? (sentinel sentinels mymaster)
- Slave'ler, master ile senkronize durumda mı? (INFO replication)
- Logları (/var/log/redis/sentinel-.log) düzenli olarak takip edin.
- Sentinel proseslerinin otomatik başlaması için systemd service dosyalarını oluşturun.
- Sentinel'leri, Redis master/slave'lerinizden farklı sunuculara koymak en iyi uygulamadır.

Umarım bu detaylı rehber, üretim ortamlarınızın dayanıklılığını artırmanıza yardımcı olur. Sentinel kurulumu ilk bakışta karmaşık gelebilir ama bir kere oturttuğunuzda rahat edersiniz. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı bir yaklaşımınız veya eklemek istediğiniz bir ipucu var mı? Failover testlerinde yaşadığınız ilginç durumları paylaşabilirsiniz. Sorusu olan aşağıya yazsın, elimden geldiğince yardımcı olmaya çalışırım.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri