https://github.com/thuongtruong109/reluster
🚦 Minimal Redis HA Cluster simulator for Replication and Sharding
https://github.com/thuongtruong109/reluster
cluster container devops docker docker-compose high-availability redis redis-cluster redis-sentinel redis-slave replica-set replication sentinel
Last synced: about 2 months ago
JSON representation
🚦 Minimal Redis HA Cluster simulator for Replication and Sharding
- Host: GitHub
- URL: https://github.com/thuongtruong109/reluster
- Owner: thuongtruong109
- License: apache-2.0
- Created: 2025-09-20T14:47:50.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-10-01T11:37:36.000Z (9 months ago)
- Last Synced: 2025-12-01T01:56:21.835Z (7 months ago)
- Topics: cluster, container, devops, docker, docker-compose, high-availability, redis, redis-cluster, redis-sentinel, redis-slave, replica-set, replication, sentinel
- Language: Shell
- Homepage:
- Size: 21.2 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README

A complete, ready-to-run Redis Sentinel & Cluster playground with Docker Compose for
learning, testing, and deploying Redis in real-world scenarios.
## 📝 Overview
This project provides a **hands-on Redis lab** that covers both **Sentinel** and **Cluster** modes:
- ⚡ **Redis Sentinel** → High Availability & Automatic Failover
- 📦 **Redis Cluster** → Sharding + High Availability
🎯 **Goal**: Help developers, DevOps, and students **experiment, validate, monitor, and integrate Redis** into production-like environments.
## ✨ Features
- ✔ Quick Bootstrap – Start Sentinel & Cluster in seconds with Docker Compose
- ✔ Automation Scripts – Health checks, failover tests, rollback, backups, slot rebalancing, integrity, and security scan
- ✔ CI/CD Ready – GitHub Actions/GitLab CI for automated testing & deployment
- ✔ Configurable – Easily adjust number of nodes, replicas, memory limits, persistence
- ✔ Comprehensive Docs – Setup guides, architecture explanations, usage examples
- ✔ Realistic Workloads – Simulate traffic with redis-benchmark and custom scripts
- ✔ Data Persistence – RDB/AOF configurations for durability testing
- ✔ Backup & Restore – Automated backup scripts and restore procedures
- ✔ Failover Testing – Simulate node failures and observe automatic recovery
- ✔ Scaling – Add/remove nodes and reshard data with minimal downtime
- ✔ Monitoring Stack - Redis-Commander, Redis-Exporter, Prometheus, Grafana for real-time insights
## 👤 Who Is This For?
- 👨💻 Backend Developers – Learn caching, pub/sub, queues, session storage
- 🛠️ DevOps / SREs – Practice HA, failover recovery, monitoring, scaling
- 🎓 Students / Learners – Experiment with Redis concepts in a safe sandbox
- 🏗️ System Architects – Validate Redis as a distributed system building block
## 🏗️ Architecture
### 🔹 Sentinel Mode (HA + Replica Failover)
```mermaid
flowchart TD
S1["🛰️ Sentinel 1"]
S2["🛰️ Sentinel 2"]
S3["🛰️ Sentinel 3"]
M["🟥 Master (6379)"]
R1["🟦 Replica 1 (6380)"]
R2["🟦 Replica 2 (6381)"]
S1 --> M
S2 --> M
S3 --> M
M --> R1
M --> R2
```
```mermaid
flowchart LR
%% Before failover
subgraph Left["Before Failover"]
direction TB
Sentinel1(Sentinel) --> Master1
Sentinel2(Sentinel) --> Master1
Sentinel3(Sentinel) --> Master1
Master1([Master]) --> Slave1([Slave])
Master1 --> Slave2([Slave])
end
%% After failover
subgraph Right["After Failover"]
direction TB
Sentinel4(Sentinel) --> NewMaster
Sentinel5(Sentinel) --> NewMaster
Sentinel6(Sentinel) --> NewMaster
OldMaster([Master Down]) --> Slave2([Slave])
NewMaster([New Master]) --> Slave2
end
Left --> Right
```
### 🔹 Cluster Mode (Sharding + Replication)
```mermaid
flowchart LR
M1["🟥 Master #1 (Slots 0–5460)"] --> R1["🟦 Replica #1"]
M2["🟥 Master #2 (Slots 5461–10922)"] --> R2["🟦 Replica #2"]
M3["🟥 Master #3 (Slots 10923–16383)"] --> R3["🟦 Replica #3"]
```
## 🤝 Contributing
We welcome you to contribute and help improve Reluster 💚
Fork → Hack → Test → PR. Here are a few ways you can get involved:
- **🐛 Reporting Bugs:** If you come across any bugs or issues, please check out the [reporting bugs guide](https://github.com/thuongtruong109/reluster/issues) to learn how to submit a bug report.
- **✨ Suggestions:** Have ideas to enhance features? We'd love to hear them! Check out the [contribution guide](.github/CONTRIBUTING.md) to share your suggestions.
- **❓ Questions:** If you have questions or need assistance, open [discussions](https://github.com/thuongtruong109/reluster/discussions) or join our to connect with other users and contributors.
## 📝 License
Distributed under the [Apache 2.0](LICENSE) license. Copyright (c) 2025 Thuong Truong.