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 Kurulum Rehberi: Otomatik Failover ile Yüksek Erişilebilirlik Sağlama

thecoder

Üye
Katılım
14 Mart 2026
Mesajlar
15
Merhaba arkadaşlar, bugün sizlere Redis sunucularınız için yüksek erişilebilirlik (High Availability) sağlamanın en temel yöntemlerinden biri olan Redis Sentinel kurulumunu adım adım anlatacağım. Özellikle cache veya oturum (session) deposu olarak Redis kullanan uygulamalarınızda, tek bir Redis sunucusunun (master) arızalanması tüm sisteminizi durdurabilir. Sentinel tam da bu noktada devreye giriyor ve otomatik failover (yük devretme) ile kesintisiz hizmet sağlıyor. Benim üretim sunucularımda da güvenle kullandığım bu mimariyi sizlerle paylaşıyorum.

📦 Ön Gereksinimler ve Ortam Hazırlığı

Bu rehberde, 3 adet Ubuntu 22.04 sunucu üzerinde kurulum yapacağız. Senaryomuz şu şekilde:
Sunucu 1 (Master): 192.168.1.10
Sunucu 2 (Replica/Slave): 192.168.1.11
Sunucu 3 (Replica/Slave): 192.168.1.12

Her sunucuda hem Redis hem de Redis Sentinel çalışacak. Sentinel'ler birbirlerini izleyerek master'ın sağlık durumunu kontrol edecekler.

⚙️ Redis Kurulumu ve Temel Yapılandırma

İlk olarak tüm sunuculara Redis'i kuralım. Ben genelde resmi repo üzerinden kurulum yapmayı tercih ediyorum.

Bash:
sudo apt update
sudo apt install redis-server -y

Kurulum tamamlandıktan sonra, her sunucu için ana Redis konfigürasyon dosyasını (/etc/redis/redis.conf) düzenleyelim. Master sunucuda (192.168.1.10) aşağıdaki ayarları yapın:

NGINX:
# Bağlantı için tüm arayüzleri dinle
bind 0.0.0.0

# Koruma modunu kapat (şifre kullanacağız)
protected-mode no

# Güçlü bir parola belirleyin
requirepass SifremBuraya123
masterauth SifremBuraya123

# Sunucu 1 için özel ayar: Bu sunucu MASTER olacak
# replicaof ayarı yorum satırında kalacak veya olmayacak

Replica sunucularda (192.168.1.11 ve 192.168.1.12) ise aynı ayarları yaptıktan sonra, ek olarak kendilerini master'a bağlamalarını söylememiz gerekiyor. Replica sunucuların konfigürasyonuna şu satırı ekleyin:

NGINX:
# Master sunucunun IP'sini ve portunu belirt
replicaof 192.168.1.10 6379

Tüm sunucularda Redis servisini yeniden başlatalım:

Bash:
sudo systemctl restart redis-server
sudo systemctl enable redis-server

Master sunucuda, replikaların bağlanıp bağlanmadığını kontrol etmek için Redis CLI'ı kullanabiliriz:

Bash:
redis-cli -a SifremBuraya123 INFO replication

Çıktıda "connected_slaves:2" gibi bir ibare görmelisiniz.

🛡️ Redis Sentinel Kurulumu ve Yapılandırması

Şimdi asıl işin özüne gelelim. Sentinel, Redis ile birlikte gelen bir yazılım. Sentinel için ayrı bir konfigürasyon dosyası oluşturacağız. Tüm sunucularda /etc/redis/sentinel.conf dosyasını düzenleyelim.

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

# İzlenecek master grubunu tanımla
# 'mymaster' isimli grubu izle, master IP:PORT, QUORUM sayısı 2
sentinel monitor mymaster 192.168.1.10 6379 2

# Master'ın erişilemez sayılması için gereken süre (milisaniye)
sentinel down-after-milliseconds mymaster 5000

# Failover sonrası, yeni slave'lerin eş zamanlanma sayısı
sentinel parallel-syncs mymaster 1

# Failover işlemi için timeout (milisaniye)
sentinel failover-timeout mymaster 10000

# Master Redis parolasını belirt (ÇOK ÖNEMLİ!)
sentinel auth-pass mymaster SifremBuraya123

Buradaki en kritik ayarlardan biri quorum değeri. 3 Sentinel için bu değeri 2 yaptık. Bu, bir master'ın "down" olarak işaretlenebilmesi için en az 2 Sentinel'in aynı fikirde olması gerektiği anlamına gelir.

🚀 Sentinel Servisini Başlatma ve Test Etme

Sentinel'i sistem servisi olarak başlatalım. Önce bir systemd servis dosyası oluşturalım:

Bash:
sudo nano /etc/systemd/system/redis-sentinel.service

İçine şu içeriği yapıştırın:

INI:
[Unit]
Description=Redis Sentinel
After=network.target

[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf --daemonize no
ExecStop=/usr/bin/redis-cli -p 26379 shutdown

[Install]
WantedBy=multi-user.target

Servisi etkinleştirip başlatalım:

Bash:
sudo systemctl daemon-reload
sudo systemctl start redis-sentinel
sudo systemctl enable redis-sentinel

Kurulumun çalışıp çalışmadığını kontrol etmek için Sentinel CLI'ına bağlanalım:

Bash:
redis-cli -p 26379

Bağlandıktan sonra Sentinel durumunu sorgulayalım:

Kod:
sentinel master mymaster

Bu komut, master Redis sunucunuzun durumu, IP'si, kaç tane Sentinel'in onu izlediği gibi tüm detayları gösterecektir.

⚠️ Dikkat Edilmesi Gerekenler ve Optimizasyon Önerileri

Güvenlik: Bu rehberde basitlik için `bind 0.0.0.0` kullandık. Üretim ortamında mutlaka güvenlik duvarınızı (UFW/iptables) yapılandırarak sadece gerekli sunucuların 6379 (Redis) ve 26379 (Sentinel) portlarına erişebildiğinden emin olun.
Quorum Değeri: Sentinel sayınız değişirse quorum değerini `(Sentinel_Sayisi/2) + 1` formülü ile güncellemeyi unutmayın.
Uygulama Tarafı: PHP, Python, Node.js gibi dillerde Redis istemci kütüphanenizin Sentinel desteği olduğundan emin olun. Bağlantı için master'ın IP'si yerine Sentinel'lerin IP ve portlarını (örn: `['tcp://192.168.1.10:26379', 'tcp://192.168.1.11:26379']`) vermeniz gerekebilir.
Log Takibi: Sorun yaşarsanız ilk bakacağınız yer /var/log/redis/sentinel.log dosyasıdır. Failover olaylarının detayı burada yazar.

Sonuç olarak, Redis Sentinel kurulumu biraz emek istese de, sağladığı otomatik failover özelliği ile gece yarısı bir sunucu arızasında sizi uyandırmayacak kadar değerlidir. Bu kurulumu kendi ortamınıza uyarlarken sorun yaşarsanız veya siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz, aşağıdaki yorumlarda paylaşabilirsiniz. Herkese kesintisiz servisler!
 

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