Thời gian đọc: 10 phút
Redis Sentinel là một giải pháp mạnh mẽ được cung cấp bởi Redis để giám sát, quản lý và đảm bảo tính sẵn sàng cao (high availability – HA) của các cụm Redis. Nó cung cấp các tính năng như giám sát trạng thái của các máy chủ Redis, tự động phát hiện sự cố và chuyển đổi (failover), và thông báo cho các ứng dụng khách về thay đổi trong cụm Redis.
Redis Sentinel giúp quản lý việc chuyển đổi từ master-slave architecture (mô hình chủ – tớ) của Redis, đảm bảo rằng nếu Redis master gặp sự cố, một Redis slave sẽ được thăng cấp thành master mà không cần can thiệp thủ công.
Redis Sentinel liên tục giám sát các máy chủ Redis master và slave trong cụm. Nó kiểm tra xem các máy chủ có hoạt động bình thường hay không và phát hiện khi nào một trong số chúng gặp sự cố (như không thể truy cập được hoặc phản hồi chậm).
Khi Redis Sentinel phát hiện sự cố trên các máy chủ Redis, nó có khả năng thông báo cho các hệ thống khác hoặc quản trị viên biết về vấn đề. Điều này cho phép các biện pháp khắc phục sự cố hoặc cảnh báo được thực hiện kịp thời.
Khi Redis Sentinel xác định rằng master Redis không hoạt động, nó sẽ tự động chuyển đổi (failover) một trong các máy chủ slave Redis thành master mới. Các ứng dụng khách sẽ được chỉ dẫn để kết nối với master mới, đảm bảo rằng hệ thống có thể tiếp tục hoạt động mà không bị gián đoạn lớn.
Redis Sentinel còn có khả năng hướng dẫn các ứng dụng Redis client tự động cập nhật thông tin về master mới sau khi failover. Điều này giúp tránh tình trạng ứng dụng cố gắng kết nối với master cũ đã bị lỗi, đồng thời đảm bảo rằng dữ liệu vẫn nhất quán.
Redis Sentinel hoạt động dựa trên cơ chế quorum để ra quyết định. Mỗi cụm Sentinel sẽ theo dõi các Redis instance và trao đổi thông tin với nhau để đảm bảo tính nhất quán. Khi có sự cố xảy ra:
Redis Sentinel sử dụng mô hình phân tán để giám sát nhiều cụm Redis trên các máy chủ khác nhau. Mỗi Sentinel là một instance riêng biệt, và nhiều Sentinel có thể chạy trên các node khác nhau để đảm bảo tính tin cậy và khả năng chịu lỗi.
Redis Sentinel thường được sử dụng trong các hệ thống yêu cầu tính sẵn sàng cao và khả năng tự động phục hồi khi gặp sự cố, đặc biệt là khi hệ thống Redis được triển khai trong môi trường sản xuất với nhiều máy chủ và các dịch vụ phụ thuộc vào Redis để lưu trữ hoặc truy xuất dữ liệu.
Redis Sentinel là giải pháp hoàn hảo cho các hệ thống vừa và nhỏ cần đảm bảo dữ liệu và dịch vụ không bị gián đoạn khi xảy ra lỗi Redis master.
Redis Sentinel được tích hợp sẵn trong Redis, vì vậy bạn không cần cài đặt riêng biệt. Bạn chỉ cần cài đặt Redis và sau đó cấu hình Sentinel theo yêu cầu của bạn.
Để cấu hình Redis Sentinel, bạn cần tạo một tệp cấu hình cho Sentinel, thường có tên là sentinel.conf
. Tệp cấu hình này định nghĩa cách mà Sentinel sẽ hoạt động, bao gồm các thông số như địa chỉ máy chủ Redis master, ngưỡng quorum và thông tin liên lạc giữa các Sentinel.
Dưới đây là một ví dụ cấu hình cơ bản cho Redis Sentinel:
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster mypassword
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
port
: Cổng mà Sentinel sẽ lắng nghe. Mặc định là 26379.sentinel monitor
: Theo dõi Redis master với tên mymaster
, địa chỉ IP là 127.0.0.1
và cổng 6379
. Yêu cầu ít nhất 2 Sentinel đồng ý rằng master đã bị lỗi trước khi thực hiện failover.sentinel auth-pass
: Cung cấp mật khẩu để Sentinel có thể kết nối với Redis master. Đây là mật khẩu của Redis master mà Sentinel cần để xác thực.sentinel down-after-milliseconds
: Thời gian (tính bằng mili giây) mà Sentinel chờ trước khi coi master là không còn hoạt động. Trong ví dụ trên, thời gian là 5000 mili giây (5 giây).sentinel failover-timeout
: Thời gian (tính bằng mili giây) mà Sentinel chờ trước khi thực hiện failover. Trong ví dụ trên, thời gian là 10000 mili giây (10 giây).sentinel parallel-syncs
: Số lượng slave có thể đồng bộ hóa với master mới cùng một lúc trong quá trình failover.Sau khi bạn đã cấu hình tệp sentinel.conf
, bạn có thể khởi động Sentinel bằng cách sử dụng lệnh Redis redis-server
với tùy chọn --sentinel
:
redis-server /path/to/sentinel.conf --sentinel
Hoặc nếu bạn có Redis và Sentinel đã được cài đặt từ package, bạn có thể sử dụng dịch vụ khởi động hoặc cấu hình tương ứng để chạy Sentinel.
Sau khi khởi động Sentinel, bạn có thể kiểm tra trạng thái của Sentinel và các máy chủ Redis bằng cách sử dụng công cụ dòng lệnh của Redis:
redis-cli -p 26379 sentinel masters
Lệnh này sẽ liệt kê các master được Sentinel theo dõi. Bạn có thể kiểm tra trạng thái, xem các slave hiện tại, và các thông tin khác liên quan đến failover và giám sát.
Để đảm bảo rằng các ứng dụng của bạn luôn kết nối với master hiện tại, bạn cần cấu hình các Redis clients của mình để tự động lấy thông tin về master từ Sentinel. Hầu hết các thư viện Redis client hỗ trợ việc tích hợp với Redis Sentinel, và bạn chỉ cần cung cấp thông tin về Sentinel cho client.
Dưới đây là ví dụ cấu hình Redis client sử dụng Sentinel trong Node.js với thư viện ioredis
:
const Redis = require('ioredis');
const sentinel = new Redis({
sentinels: [
{ host: '127.0.0.1', port: 26379 },
{ host: '127.0.0.1', port: 26380 }
],
name: 'mymaster',
password: 'mypassword' // Nếu Redis được cấu hình với mật khẩu
});
sentinel.set('key', 'value')
.then(() => sentinel.get('key'))
.then(value => console.log(value))
.catch(err => console.error(err));
Bạn có thể quản lý và theo dõi nhiều Sentinel trong cụm Redis để đảm bảo tính sẵn sàng cao và khả năng chịu lỗi. Sentinel hoạt động tốt nhất khi có ít nhất 3 Sentinel, phân tán trên các máy chủ khác nhau, để đảm bảo quyết định về failover có thể được thực hiện với sự đồng thuận.
Redis Sentinel là một công cụ quan trọng trong việc duy trì tính sẵn sàng cao và tự động phục hồi cho các hệ thống Redis. Nó cung cấp các chức năng giám sát, thông báo, failover tự động và cấu hình máy khách, giúp bảo vệ các ứng dụng và dịch vụ khỏi sự gián đoạn do lỗi máy chủ Redis. Với cấu hình và quản lý đúng cách, Redis Sentinel giúp đảm bảo rằng hệ thống Redis của bạn luôn sẵn sàng hoạt động và có khả năng chịu lỗi tốt trong môi trường sản xuất.