 Autor: [Robert Zasilny](/autorzy/robert-zasilny) Ekspert bezpieczeństwa i compliance · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Redis Cluster — konfiguracja

# Redis Cluster — konfiguracja 6 węzłów, hash slots, sharding i failover

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Bazy danych

Pojedyncza instancja Redis ma limit: jeden rdzeń CPU, pojemność RAM jednego serwera i zero odporności na awarie. Redis Cluster rozwiązuje te problemy przez sharding danych na wiele masterów i automatyczny failover przez repliki. W tym przewodniku postawisz klaster 6 węzłów (3 master + 3 replica) na jednym lub wielu serwerach, skonfigurujesz hash sloty i przetestujesz automatyczne przełączanie awaryjne.

## Architektura Redis Cluster

Redis Cluster używa dwóch portów per węzeł: standardowego portu klienta (np. 7001) i portu komunikacji między węzłami (port klienta + 10000, np. 17001). Komunikacja klastrowa używa binarnego protokołu gossip — każdy węzeł wie o stanie wszystkich pozostałych.

Węzeł

Rola

Port klienta

Port klastra

Hash slots

node-1

Master 1

7001

17001

0–5460

node-2

Master 2

7002

17002

5461–10922

node-3

Master 3

7003

17003

10923–16383

node-4

Replica → Master 1

7004

17004

–

node-5

Replica → Master 2

7005

17005

–

node-6

Replica → Master 3

7006

17006

–

## Instalacja Redis i struktura katalogów

\# Ubuntu 22.04 / Debian 12
sudo apt update
sudo apt install -y redis-server

# Sprawdź wersję (wymagana 3.0+, zalecana 7.x)
redis-server --version

# Utwórz katalogi per węzeł
for port in 7001 7002 7003 7004 7005 7006; do
  sudo mkdir -p /etc/redis/cluster/${port}
  sudo mkdir -p /var/lib/redis/${port}
done

## Pliki konfiguracyjne węzłów

Utwórz plik konfiguracyjny dla każdego węzła. Poniższy skrypt generuje konfiguracje dla portów 7001–7006:

#!/bin/bash
# gen-cluster-configs.sh
for port in 7001 7002 7003 7004 7005 7006; do
cat > /etc/redis/cluster/${port}/redis.conf <<EOF
# Podstawowe ustawienia
port ${port}
bind 127.0.0.1
daemonize yes
pidfile /var/run/redis/redis-${port}.pid
logfile /var/log/redis/redis-${port}.log
dir /var/lib/redis/${port}

# Klaster
cluster-enabled yes
cluster-config-file /etc/redis/cluster/${port}/nodes.conf
cluster-node-timeout 5000

# Persistence (opcjonalna, dla dev możesz wyłączyć)
appendonly yes
appendfilename "appendonly-${port}.aof"

# Hasło (opcjonalne, zalecane na produkcji)
# requirepass TwojeHaslo
# masterauth TwojeHaslo
EOF
echo "Wygenerowano konfigurację dla portu ${port}"
done

sudo bash gen-cluster-configs.sh

# Utwórz katalog na logi
sudo mkdir -p /var/log/redis

# Uruchom wszystkie 6 węzłów
for port in 7001 7002 7003 7004 7005 7006; do
  redis-server /etc/redis/cluster/${port}/redis.conf
done

# Sprawdź czy nasłuchują
ss -tlnp | grep redis

## Tworzenie klastra — CLUSTER MEET i przypisanie slotów

Narzędzie `redis-cli --cluster create` automatycznie łączy węzły i rozdziela hash slots:

\# --cluster-replicas 1 = 1 replika per master
# Kolejność: mastery PIERWSZE, repliki PO
redis-cli --cluster create \\
  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 \\
  127.0.0.1:7006 \\
  --cluster-replicas 1

# Potwierdź "yes" gdy narzędzie wyświetli plan

# Sprawdź stan klastra
redis-cli -p 7001 cluster info
redis-cli -p 7001 cluster nodes

## Podstawowe operacje i hashtagi

Klient redis-cli w trybie cluster używa flagi `-c` — automatycznie przekierowuje komendy do właściwego węzła (MOVED redirect):

\# -c = cluster mode (automatyczne przekierowania)
redis-cli -c -p 7001

# Ustaw klucze — klaster automatycznie wybierze właściwy shard
SET user:1:name "Jan Kowalski"
SET user:2:name "Anna Nowak"
GET user:1:name

# Hashtagi — wymuszają ten sam slot dla wielu kluczy
# {user:1} to hashtag — CRC16 liczy TYLKO wartość w nawiasach
SET {user:1}:name "Jan"
SET {user:1}:email "jan@example.com"
SET {user:1}:age 30
# Wszystkie 3 klucze trafią do tego samego slotu!

# Sprawdź do którego slotu trafia klucz
redis-cli -p 7001 cluster keyslot "user:1:name"
redis-cli -p 7001 cluster keyslot "{user:1}:email"

## Resharding — przenoszenie hash slotów

Dodajesz nowy węzeł lub równoważysz obciążenie? Przenieś hash sloty między masterami bez przestoju:

\# Sprawdź ID węzłów
redis-cli -p 7001 cluster nodes

# Przenieś 1000 slotów z mastera (ID: abc123) do innego (ID: def456)
redis-cli --cluster reshard 127.0.0.1:7001 \\
  --cluster-from abc123 \\
  --cluster-to def456 \\
  --cluster-slots 1000 \\
  --cluster-yes

# Sprawdź rozkład slotów po reshard
redis-cli --cluster check 127.0.0.1:7001

# Automatyczne rebalansowanie (równa dystrybucja)
redis-cli --cluster rebalance 127.0.0.1:7001 --cluster-use-empty-masters

## Test failover — symulacja awarii mastera

\# Sprawdź aktualny stan klastra
redis-cli -p 7001 cluster nodes | grep master

# Zasymuluj awarię mastera na porcie 7001
redis-cli -p 7001 DEBUG SLEEP 30
# lub zabij proces:
# redis-cli -p 7001 shutdown nosave

# W innym terminalu — obserwuj failover
watch -n 1 "redis-cli -p 7002 cluster nodes"

# Po ~15s replika (port 7004) powinna stać się masterem
# Po przywróceniu węzła 7001 — stanie się repliką

# Manualny failover (graceful, bez utraty danych)
redis-cli -p 7004 cluster failover

## Najczęstsze pytania

Ile węzłów potrzeba do Redis Cluster? +

Minimalna konfiguracja to 3 węzły master (każdy z innym zakresem hash slots). Dla HA (wysokiej dostępności) każdy master powinien mieć przynajmniej 1 replikę — łącznie 6 węzłów. Redis Cluster wymaga quorum: przy padnięciu mastera jego replika przejmuje rolę tylko gdy większość masterów (2 z 3) zgadza się że master jest niedostępny. Z 3 masterami możesz stracić 1 bez utraty danych.

Czym są hash slots w Redis Cluster? +

Redis Cluster dzieli przestrzeń kluczy na 16384 hash slotów (0–16383). Klucz jest przypisany do slotu według CRC16(key) mod 16384. Każdy master odpowiada za zakres slotów, np. master-1 obsługuje 0–5460, master-2 5461–10922, master-3 10923–16383. Dzięki temu możesz przenosić sloty między masterami (resharding) bez przestoju całego klastra. Hashtags — klucze w nawiasach klamrowych &#123;user:1&#125;name i &#123;user:1&#125;email — trafiają do tego samego slotu.

Czy Redis Cluster obsługuje multi-key operacje? +

Tak, ale tylko gdy wszystkie klucze trafiają do tego samego hash slotu. Polecenia MGET, MSET, pipeline działają normalnie gdy klucze mają ten sam hashtag — np. &#123;session&#125;:user1 i &#123;session&#125;:user2 trafiają do tego samego slotu. Operacje KEYS, SCAN, SORT z STORE wymagają ostrożności w trybie cluster. Transakcje MULTI/EXEC działają tylko w obrębie jednego slotu.

Jak działa automatyczny failover w Redis Cluster? +

Gdy master przestaje odpowiadać, inne węzły oznaczają go jako PFAIL (possible failure). Gdy większość masterów zgadza się — status zmienia się na FAIL. Replika tego mastera inicjuje kampanię wyborczą — wysyła FAILOVER\_AUTH\_REQUEST do pozostałych masterów. Jeśli zbierze kworum głosów, promuje się na nowego mastera i przejmuje hash sloty. Cały proces trwa domyślnie 15–30 sekund (cluster-node-timeout \* 2).

## 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.

Contabo

VPS z dużą ilością RAM — Redis Cluster potrzebuje minimum 3 węzłów z pamięcią

VPS RAM

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

Mikrus

Tani VPS do testowania Redis Cluster w środowisku dev przed produkcją

Dev/Test

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

LH.pl

Hosting z Redis Object Cache dla WordPress — zarządzany, bez konfiguracji klastra

Managed Redis

[Aktywuj rabat →](/out/lh-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/lh-pl)

## Powiązane strony

-   [Memcached vs Redis — porównanie](/baza-wiedzy/memcached-vs-redis-hosting)
-   [MySQL Replication — master-slave](/baza-wiedzy/mysql-replication-master-slave)
-   [Nginx load balancer — konfiguracja](/baza-wiedzy/nginx-load-balancer-konfiguracja)
-   [Wszystkie artykuły](/baza-wiedzy/)