Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Redis Sentinel — wysoka dostępność Redis na VPS

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS

Redis jest ultra-szybki, ale jednoserwerowy — gdy maszyna padnie, cache znika i aplikacja spada na zimną bazę danych. Redis Sentinel to wbudowany system wysokiej dostępności (HA): monitoruje mastera, automatycznie promuje replikę i powiadamia aplikacje o zmianie adresu. Oto jak go skonfigurować krok po kroku.

Architektura: master, replica, Sentinel

Typowy setup Redis Sentinel składa się z trzech warstw:

  • Master Redis — przyjmuje zapisy, replikuje dane do replik asynchronicznie.
  • Replica (1-2 szt.) — kopie mastera w trybie read-only. Po failoverze jedna zostaje promowana na nowego mastera.
  • Sentinel (min. 3 szt.) — osobny proces (port 26379) który monitoruje mastera i repliki. Sentinele głosują (quorum) czy master jest niedostępny, a następnie koordynują failover.

W produkcji minimalna topologia to: 3 serwery VPS, każdy z procesem Redis i procesem Sentinel. Jeden serwer pełni rolę mastera, dwa pozostałe — replik. Sentinel może działać na tych samych serwerach co Redis.

Konfiguracja repliki

Na serwerach repliki edytuj /etc/redis/redis.conf i wskaż mastera:

# /etc/redis/redis.conf na REPLICE (np. 10.0.0.11 i 10.0.0.12)

replicaof 10.0.0.10 6379        # IP mastera i port

# Opcjonalnie: replika read-only (domyślnie tak)
replica-read-only yes

# Uwierzytelnianie (jeśli master ma hasło)
masterauth TwojeHaslo123
requirepass TwojeHaslo123       # Takie samo na wszystkich węzłach
# Restart Redis na replice
sudo systemctl restart redis-server

# Sprawdź replikację
redis-cli -a TwojeHaslo123 info replication

W odpowiedzi na replikach powinieneś zobaczyć role:slave i master_link_status:up. Na masterze — role:master i listę podłączonych replik.

Konfiguracja sentinel.conf

Utwórz plik /etc/redis/sentinel.conf na każdym z 3 serwerów (konfiguracja identyczna):

# /etc/redis/sentinel.conf

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

# Monitorowanie mastera
# sentinel monitor <nazwa> <ip-mastera> <port> <quorum>
sentinel monitor mymaster 10.0.0.10 6379 2

# Hasło do mastera (jeśli ustawione)
sentinel auth-pass mymaster TwojeHaslo123

# Po ilu ms bez odpowiedzi uznać mastera za niedostępnego
sentinel down-after-milliseconds mymaster 5000

# Limit czasu na failover (ms)
sentinel failover-timeout mymaster 60000

# Ile replik jednocześnie synchronizuje się z nowym masterem
sentinel parallel-syncs mymaster 1
# Uruchomienie Sentinel
sudo redis-sentinel /etc/redis/sentinel.conf

# Lub przez systemd (utwórz /etc/systemd/system/redis-sentinel.service)
# ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf

# Sprawdź status
redis-cli -p 26379 sentinel masters
redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster

Parametry sentinel.conf — wyjaśnienie

Parametr Domyślna wartość Opis
quorum 2 (przy 3 Sentinelach) Min. liczba Sentineli zgadzających się że master jest DOWN
down-after-milliseconds 30000 ms Czas bez pingu po którym master uznawany za niedostępny
failover-timeout 180000 ms Maks. czas na zakończenie procesu failover
parallel-syncs 1 Ile replik jednocześnie synchronizuje dane z nowym masterem

Testowanie failover

Przetestuj failover bez przerywania działania serwera — użyj polecenia Sentinel:

# Wymuś failover (Sentinel sam wybierze nowego mastera)
redis-cli -p 26379 sentinel failover mymaster

# Obserwuj logi w czasie rzeczywistym
tail -f /var/log/redis/sentinel.log

# Sprawdź który węzeł jest teraz masterem
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Możesz też zasymulować awarię mastera przez redis-cli -p 6379 DEBUG sleep 30 (master przestaje odpowiadać na 30 sekund) i obserwować jak Sentinel reaguje.

Połączenie aplikacji przez Sentinel

Aplikacja nie łączy się bezpośrednio z IP mastera — odpytuje Sentinel o aktualny adres. Przykłady dla popularnych języków:

// Node.js (ioredis)
import Redis from 'ioredis';

const redis = new Redis({
  sentinels: [
    { host: '10.0.0.10', port: 26379 },
    { host: '10.0.0.11', port: 26379 },
    { host: '10.0.0.12', port: 26379 },
  ],
  name: 'mymaster',
  password: 'TwojeHaslo123',
  sentinelPassword: 'TwojeHaslo123',
});
# Python (redis-py)
from redis.sentinel import Sentinel

sentinel = Sentinel([
    ('10.0.0.10', 26379),
    ('10.0.0.11', 26379),
    ('10.0.0.12', 26379),
], socket_timeout=0.1, password='TwojeHaslo123')

master = sentinel.master_for('mymaster', socket_timeout=0.1)
slave  = sentinel.slave_for('mymaster', socket_timeout=0.1)

master.set('klucz', 'wartosc')
slave.get('klucz')
# PHP (predis)
$sentinel = new Predis\Client([
    ['scheme' => 'redis', 'host' => '10.0.0.10', 'port' => 26379],
    ['scheme' => 'redis', 'host' => '10.0.0.11', 'port' => 26379],
    ['scheme' => 'redis', 'host' => '10.0.0.12', 'port' => 26379],
], [
    'replication' => 'sentinel',
    'service'     => 'mymaster',
]);

Redis Sentinel vs Redis Cluster

Cecha Redis Sentinel Redis Cluster
Cel Wysoka dostępność (HA) HA + skalowanie horyzontalne
Dane Pełna kopia na każdej replice Podzielone między shardy (16384 slotów)
Min. węzły 3 (1 master + 2 repliki/Sentinel) 6 (3 master + 3 repliki)
Złożoność Niska — prosta konfiguracja Wyższa — klient musi obsługiwać MOVED/ASK
Kiedy używać Do ~100 GB danych, standardowe aplikacje Gdy dane nie mieszczą się na 1 serwerze

Dla większości projektów hostingowych — WordPress z Redis object cache, Next.js session store, kolejki zadań — Sentinel jest wystarczający i łatwiejszy w utrzymaniu. Redis Cluster ma sens dopiero przy setkach gigabajtów danych.

Najczęstsze pytania

Czym różni się Redis Sentinel od Redis Cluster? +
Redis Sentinel zapewnia wysoką dostępność dla pojedynczej instancji Redis (master + repliki) przez automatyczny failover — gdy master padnie, Sentinel promuje replikę na nowego mastera. Redis Cluster to natomiast poziome skalowanie: dane są shardowane (podzielone) między wiele węzłów master, każdy odpowiedzialny za podzbiór kluczy (slot hash). Sentinel = HA dla małych/średnich danych. Cluster = HA + sharding dla dużych zbiorów danych.
Ile procesów Sentinel potrzeba dla bezpiecznego quorum? +
Minimum 3 procesy Sentinel na 3 osobnych serwerach (lub co najmniej 3 osobnych maszynach wirtualnych). Quorum = liczba Sentineli, które muszą zgodzić się że master jest niedostępny. Przy 3 Sentinelach typowe quorum=2 — jeden może być offline, a system nadal działa. Nie używaj tylko 2 Sentineli — przy utracie komunikacji między nimi dochodzi do split-brain.
Jak aplikacja powinna łączyć się z Redis przez Sentinel? +
Aplikacja NIE łączy się bezpośrednio z adresem IP mastera — zamiast tego odpytuje Sentinel o aktualny adres mastera. Większość klientów Redis obsługuje to natywnie: podajesz listę adresów Sentinel i nazwę monitorowanego klastra (np. mymaster). Klient automatycznie odkrywa aktualnego mastera i przełącza się po failoverze. W Node.js (ioredis): new Redis(&#123; sentinels: [...], name: "mymaster" &#125;). W Python (redis-py): Sentinel([(host, port), ...]).master_for("mymaster").
Jak długo trwa automatyczny failover Redis Sentinel? +
Czas failoveru zależy od parametru sentinel down-after-milliseconds (domyślnie 30000 ms = 30 sekund). Tyle czasu Sentinel czeka zanim uzna mastera za niedostępnego. Następnie negocjuje z innymi Sentinelami (kilka sekund), promuje replikę i aktualizuje konfigurację. Łącznie: 30-60 sekund przy domyślnych ustawieniach. Zmniejszenie down-after-milliseconds do 5000 ms skraca failover do ~10 sekund, ale zwiększa ryzyko false positive.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.