Bài 14: Redis Sentinel
Giới thiệu về Redis Sentinel:
Redis Sentinel là gì?
- Redis Sentinel là một hệ thống quản lý Redis, cung cấp các dịch vụ giám sát (monitoring), thông báo (notification), và failover tự động (automatic failover) cho các triển khai Redis. Nó giúp tăng tính sẵn sàng và khả năng chịu lỗi của các cụm Redis.
Lợi ích của Redis Sentinel:
Monitoring (Giám sát): Theo dõi trạng thái của các master và replica để phát hiện sự cố.
Notification (Thông báo): Thông báo cho quản trị viên hoặc các hệ thống khác khi phát hiện sự cố.
Automatic Failover (Chuyển đổi dự phòng tự động): Tự động chuyển đổi một replica thành master mới khi master gặp sự cố.
Configuration Provider (Cung cấp cấu hình): Cung cấp thông tin cấu hình cho các client kết nối tới Redis Cluster.
Cách hoạt động của Redis Sentinel:
Monitoring:
- Sentinel giám sát các master và replica bằng cách gửi các lệnh PING định kỳ để kiểm tra xem chúng có đang hoạt động hay không.
Notification:
- Khi phát hiện một master không phản hồi, Sentinel sẽ gửi thông báo đến các quản trị viên hoặc hệ thống giám sát khác để cảnh báo về sự cố.
Automatic Failover:
- Khi một master được phát hiện là không khả dụng, Sentinel sẽ chọn một replica phù hợp để thăng cấp (promote) thành master mới, cập nhật cấu hình và thông báo cho các client về master mới.
Configuration Provider:
- Các client có thể yêu cầu Sentinel cung cấp thông tin về cấu hình hiện tại của cluster, bao gồm danh sách các master và replica.
Cấu hình và quản lý Redis Sentinel:
Bước 1: Cài đặt và cấu hình Redis Sentinel:
Cài đặt Redis Sentinel:
- Redis Sentinel được bao gồm trong gói cài đặt Redis. Đảm bảo bạn đã cài đặt Redis trên các máy chủ Sentinel.
Cấu hình Sentinel:
Tạo một file cấu hình Sentinel (
sentinel.conf) trên mỗi máy chủ Sentinel và thêm các thiết lập cơ bản:port 26379 sentinel monitor mymaster 192.168.1.100 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 10000Giải thích các thiết lập:
port 26379: Cổng mà Sentinel sẽ lắng nghe.sentinel monitor mymaster 192.168.1.100 6379 2: Định nghĩa một master với tênmymaster, IP192.168.1.100, cổng6379và cần ít nhất 2 Sentinel đồng ý rằng master không khả dụng để bắt đầu failover.sentinel down-after-milliseconds mymaster 5000: Thời gian (millisecond) mà Sentinel sẽ đợi trước khi coi master là không khả dụng.sentinel parallel-syncs mymaster 1: Số lượng replica có thể đồng bộ song song với master mới sau khi failover.sentinel failover-timeout mymaster 10000: Thời gian tối đa (millisecond) để hoàn thành quá trình failover.
Bước 2: Khởi động Redis Sentinel:
Khởi động Sentinel trên mỗi máy chủ:
redis-server /path/to/sentinel.conf --sentinel
Bước 3: Kiểm tra trạng thái của Sentinel:
Sử dụng lệnh
redis-cliđể kiểm tra trạng thái:redis-cli -p 26379 sentinel master mymasterKiểm tra thông tin về các replicas:
redis-cli -p 26379 sentinel replicas mymaster
Ví dụ thực tiễn:
Cấu hình và quản lý Redis Sentinel để tăng tính sẵn sàng:
Scenario: Bạn có một hệ thống Redis với một master và hai replicas, và bạn muốn sử dụng Redis Sentinel để tự động failover khi master gặp sự cố.
Bước 1: Cài đặt Redis và Sentinel trên tất cả các máy chủ:
Cài đặt Redis và Sentinel:
sudo apt update sudo apt install redis-server
Bước 2: Cấu hình Redis trên các máy chủ:
Máy chủ master (192.168.1.100):
Chỉnh sửa file
redis.conf:bind 192.168.1.100 port 6379
Máy chủ replica 1 (192.168.1.101):
Chỉnh sửa file
redis.conf:bind 192.168.1.101 port 6379 replicaof 192.168.1.100 6379
Máy chủ replica 2 (192.168.1.102):
Chỉnh sửa file
redis.conf:bind 192.168.1.102 port 6379 replicaof 192.168.1.100 6379
Bước 3: Cấu hình Sentinel trên các máy chủ Sentinel:
Tạo file cấu hình
sentinel.conftrên mỗi máy chủ Sentinel:Máy chủ Sentinel 1 (192.168.1.103):
port 26379 sentinel monitor mymaster 192.168.1.100 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 10000Máy chủ Sentinel 2 (192.168.1.104):
port 26379 sentinel monitor mymaster 192.168.1.100 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 10000Máy chủ Sentinel 3 (192.168.1.105):
port 26379 sentinel monitor mymaster 192.168.1.100 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 10000
Bước 4: Khởi động Redis và Sentinel trên tất cả các máy chủ:
Khởi động Redis trên master và các replicas:
sudo systemctl start redis-serverKhởi động Sentinel trên các máy chủ Sentinel:
redis-server /path/to/sentinel.conf --sentinel
Bước 5: Kiểm tra trạng thái của Sentinel:
Kiểm tra trạng thái của master:
redis-cli -p 26379 sentinel master mymasterKiểm tra thông tin về các replicas:
redis-cli -p 26379 sentinel replicas mymaster
Các tính năng bổ sung của Redis Sentinel:
1. Sentinel Monitor:
Mô tả:
- Sentinel liên tục giám sát các master và replicas để phát hiện sự cố.
2. Sentinel Failover:
Mô tả:
- Khi master gặp sự cố, Sentinel tự động chuyển đổi một replica thành master mới.
3. Sentinel Configuration Provider:
Mô tả:
- Sentinel cung cấp thông tin cấu hình hiện tại cho các client để chúng có thể kết nối lại với master mới sau khi failover.
4. Sentinel Notifications:
Mô tả:
- Sentinel gửi thông báo cho quản trị viên hoặc các hệ thống giám sát khác khi phát hiện sự cố hoặc khi hoàn thành failover.
Câu hỏi củng cố kiến thức:
Redis Sentinel là gì và lợi ích của nó là gì?
- Redis Sentinel là hệ thống quản lý Redis cung cấp các dịch vụ giám sát, thông báo, và failover tự động, giúp tăng tính sẵn sàng và khả năng chịu lỗi.
Lệnh nào dùng để khởi động Redis Sentinel?
redis-server /path/to/sentinel.conf --sentinel.
Làm thế nào để cấu hình Sentinel để giám sát một master?
- Sử dụng thiết lập
sentinel monitor <master-name> <master-ip> <master-port> <quorum>trong file cấu hìnhsentinel.conf.
- Sử dụng thiết lập
Làm thế nào để kiểm tra trạng thái của master và replicas thông qua Sentinel?
- Sử dụng lệnh
redis-cli -p <sentinel-port> sentinel master <master-name>vàredis-cli -p <sentinel-port> sentinel replicas <master-name>.
- Sử dụng lệnh
**Cấu hình nào trong Sentinel xác
định thời gian chờ trước khi coi một master là không khả dụng?**
sentinel down-after-milliseconds <master-name> <milliseconds>.
Kết luận:
- Redis Sentinel là một công cụ mạnh mẽ giúp quản lý và tăng tính sẵn sàng cho các triển khai Redis. Bằng cách giám sát các master và replicas, gửi thông báo khi có sự cố, và tự động failover khi cần thiết, Redis Sentinel đảm bảo rằng hệ thống Redis của bạn luôn hoạt động ổn định và đáng tin cậy. Việc cấu hình và triển khai Redis Sentinel yêu cầu một số bước cụ thể nhưng rất đáng để đầu tư để đảm bảo tính sẵn sàng và khả năng chịu lỗi của hệ thống Redis trong môi trường sản xuất.