Một số khái niệm
Redis Sentinel là một hệ thống giám sát và tự động hóa cao cấp (high availability) được tích hợp với Redis, một cơ sở dữ liệu NoSQL dạng key-value lưu trữ trong bộ nhớ. Sentinel hoạt động như một cụm các tiến trình giám sát các instance Redis, phát hiện sự cố (như master fail), và tự động thực hiện failover (chuyển đổi sang node khác làm master) để đảm bảo hệ thống không bị gián đoạn. Đây là giải pháp lý tưởng cho các hệ thống cần độ tin cậy cao và khả năng phục hồi tự động. Với việc triển khai Sentinel, bạn có thể đảm bảo Redis hoạt động liên tục, đặc biệt trong các kịch bản yêu cầu xử lý dữ liệu thời gian thực với Tính sẵn sàng cao, Giám sát, Failover tự động, Cân bằng tải
1. Chuẩn bị môi trường
Hệ điều hành: Ubuntu 22.04 Máy chủ:
server-1
: 192.168.65.11 (Leader)server-2
: 192.168.65.12 (Replica)server-3
: 192.168.65.13 (Replica)
Cài đặt các gói cần thiết:
sudo apt install -y lsb-release curl gpg
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update -y
sudo apt install -y redis redis-sentinel
2. Cấu hình Redis
Cấu hình Redis trên từng server
Chỉnh sửa tệp /etc/redis/redis.conf
cho từng server:
-
Server 1 (Master):
vi /etc/redis/redis.conf
Thêm:
bind 0.0.0.0 masterauth truongitt # Mật khẩu để xác thực cụm requirepass truongitt # Mật khẩu để kết nối từ client
-
Server 2 và Server 3 (Replica):
vi /etc/redis/redis.conf
Thêm:
bind 0.0.0.0 masterauth truongitt requirepass truongitt replicaof 192.168.65.11 6379
Khởi động lại dịch vụ Redis:
systemctl restart redis-server
Truy cập và kiểm tra Redis
Kết nối vào Redis trên từng server:
redis-cli
auth truongitt
Thêm và kiểm tra key:
SET truongitt_xinchao '[{"name": "truongitt"}, {"name": "itt"}, {"name": "cntt"}]' GET truongitt_xinchao
Thực hiện các lệnh trên trên cả ba server để xác nhận dữ liệu đồng bộ.
3. Cấu hình Redis Sentinel
Chỉnh sửa tệp /etc/redis/sentinel.conf
trên cả ba server:
vi /etc/redis/sentinel.conf
Thêm nội dung sau:
protected-mode no
sentinel monitor mymaster 192.168.213.11 6379 2 # 2 server xác nhận fail mới bầu master mới
sentinel auth-pass mymaster truongitt
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
Khởi động và kiểm tra trạng thái Sentinel:
systemctl status redis-sentinel
tail -n 100 /var/log/redis/redis-sentinel.log
Chạy Sentinel thủ công để debug (nếu cần):
redis-server /etc/redis/sentinel.conf --sentinel
Kiểm tra trạng thái Sentinel từ port 26379:
redis-cli -p 26379 SENTINEL masters
redis-cli -p 26379 SENTINEL master mymaster
redis-cli -p 26379 SENTINEL slaves mymaster
4. Kiểm tra HA với Sentinel
Dừng dịch vụ Redis trên server 1 để kiểm tra failover:
systemctl stop redis-server
Kiểm tra trạng thái master mới từ server 2:
redis-cli -p 26379 SENTINEL master mymaster
Kết quả sẽ hiển thị server 2 hoặc server 3 được bầu làm master mới nếu đủ hai server xác nhận server 1 fail (theo sentinel monitor mymaster ... 2
).
5. Chúc mừng
Chúc mừng bạn đã hoàn thành cấu hình Redis với Redis Sentinel HA mô hình này đảm bảo khả năng chịu lỗi cao nhờ cơ chế failover tự động của Sentinel, với dữ liệu được đồng bộ giữa các node server redis đơn giản hóa giám sát và tối ưu hóa hệ thống để duy trì hiệu suất ổn định !!!