Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Giới thiệu về Redis Sentinel

Giới thiệu về Redis Sentinel

Redis Sentinel cung cấp giải pháp tính sẵn sàng cao (HA) đơn giản và tự động cho Redis. Nếu bạn đã quen với cách hoạt động của các cuộc bầu cử MongoDB, thì điều này không còn quá xa vời. Để bắt đầu, bạn có một bản sao chính cho N số lượng nô lệ. Từ đó, bạn có các daemon Sentinel đang chạy, có thể là trên các máy chủ ứng dụng của bạn hoặc trên các máy chủ mà Redis đang chạy. Những thứ này theo dõi sức khỏe của chủ nhân.

Nếu một Sentinel phát hiện ra rằng một master không phản hồi, nó sẽ phát một thông báo SDOWN (Chủ quan xuống) cho các lính gác khác. Sau đó, khi đạt đến số đại biểu mà một cái không hoạt động, nó sẽ phát một ODOWN (Khách quan giảm) và cái cái mới sẽ được bầu chọn. Vì bạn cần có túc số hoặc đa số, các lính canh đồng ý đạt được trạng thái ODOWN, nên cách tốt nhất là để một số lẻ Sentinel chạy để tránh bị ràng buộc.

Lưu ý:bạn nên sử dụng phiên bản Redis từ nhánh 2.8 trở lên để có hiệu suất tốt nhất với Sentinel.

Cách hoạt động

Sentinels xử lý chuyển đổi dự phòng bằng cách ghi lại các tệp cấu hình của các phiên bản Redis đang chạy. Hãy xem qua một tình huống:

Giả sử chúng ta có một chủ nhân “A” sao chép thành các nô lệ “B” và “C”. Chúng tôi có ba Sentinel (s1, s2, s3) đang chạy trên các máy chủ ứng dụng của chúng tôi, được viết cho Redis. Tại thời điểm này, “A”, chủ hiện tại của chúng tôi, đã ngoại tuyến. Các nhân viên phụ trách của chúng tôi đều xem “A” là ngoại tuyến và gửi tin nhắn SDOWN cho nhau. Sau đó, tất cả đều đồng ý rằng “A” đang ở trạng thái giảm, vì vậy “A” được đặt ở trạng thái ODOWN. Từ đây, một cuộc bầu chọn sẽ xảy ra để xem ai dẫn trước nhất và trong trường hợp này, “B” được chọn làm chủ mới.

Tệp cấu hình cho “B” được thiết lập để nó không còn là nô lệ của bất kỳ ai. Trong khi đó, tệp cấu hình cho “C” được viết lại để nó không còn là nô lệ của “A” mà là “B.”. Từ đây, mọi thứ tiếp tục diễn ra bình thường. Nếu “A” trực tuyến trở lại, các Sentinel sẽ nhận ra điều này và viết lại tệp cấu hình cho “A” trở thành nô lệ của “B” vì “B” là chủ hiện tại.

Cấu hình

Định cấu hình Sentinels không khó như người ta nghĩ. Trên thực tế, một trong những điều khó khăn nhất là chọn nơi đặt các quy trình Sentinel của bạn. Cá nhân tôi khuyên bạn nên chạy chúng trên máy chủ ứng dụng của mình nếu có thể. Có lẽ nếu bạn đang thiết lập điều này, bạn lo lắng về việc viết thư cho chủ nhân của bạn. Do đó, Sentinels cung cấp thông tin chi tiết về việc máy chủ ứng dụng của bạn có thể nói chuyện với máy chủ hay không. Tất nhiên, bạn cũng được hoan nghênh chạy Sentinels trên các máy chủ phiên bản Redis của mình.

Để bắt đầu với bước cấu hình, vui lòng tham khảo tệp ví dụ được tìm thấy tại đây. Đây là ví dụ sentinel.conf được tìm thấy với Redis 2.8.4 trên Ubuntu 14.04, nhưng sẽ hoạt động với bất kỳ phiên bản 2.8.x nào của Redis. Tôi đã tự do thêm hai dòng lên trên cùng mà tôi muốn sử dụng trong thực tế:

daemonize yes
logfile /var/log/redis/redis-sentinel.log

Điều này đặt quy trình sentinel ở chế độ daemonize và ghi lại tất cả các thông báo của nó vào một tệp nhật ký thay vì stdout.

Ở đây có rất nhiều tùy chọn cấu hình và hầu hết đều được nhận xét là rất tốt. Tuy nhiên, đối với bài đăng này, chúng tôi sẽ chỉ tập trung vào hai.

Phần quan trọng nhất là nói cho Sentinel biết nơi chủ nhân hiện tại của bạn cư trú. Điều này được tham chiếu trong dòng này:

sentinel monitor mymaster 127.0.0.1 6379 2

Điều này yêu cầu Sentinel giám sát “mymaster” (đây là một tên tùy ý, hãy đặt tên nó khi bạn thấy phù hợp) và một IP nhất định trên một cổng nhất định, cũng như có bao nhiêu Sentinel được yêu cầu để đáp ứng số đại biểu cho chuyển đổi dự phòng ( tối thiểu là 2). Các phần bạn có thể sẽ muốn thay đổi ở đây là địa chỉ IP của chính của bạn và cổng của nó, nếu nó không chạy trên cổng tiêu chuẩn 6379.

Tiếp theo, bạn có thể muốn thay đổi dòng sau:

sentinel down-after-milliseconds mymaster 30000

Đây là khoảng thời gian bạn muốn một trạm gác đợi trước khi nó tuyên bố một cái chính trong SDOWN. Mặc định là 30 giây, tôi thường muốn giảm mức này xuống 10 giây một chút. Bạn không muốn giảm mức này quá thấp; nếu không, bạn có thể gặp vấn đề với việc chuyển đổi dự phòng xảy ra quá thường xuyên.

Vui lòng xem qua một số tùy chọn khác. Một thứ có thể khiến nhiều người dùng quan tâm là tập lệnh thông báo, nếu bạn muốn theo dõi các chuyển đổi dự phòng khi chúng xảy ra.

Khi bạn đã định cấu hình sentinel.conf của mình khi bạn thấy phù hợp, hãy khởi động daemon bằng lệnh sau:

redis-server /path/to/sentinel.conf --sentinel

Thử nghiệm chuyển đổi dự phòng

Sau khi bạn có tất cả các vệ tinh trực tuyến, bạn có thể thực hiện quá trình chuyển đổi dự phòng một cách nhanh chóng để đảm bảo tất cả đều được định cấu hình chính xác.

Điều đầu tiên là đầu tiên. Kết nối với Sentinel của bạn qua redis-cli:

redis-cli -p 26379

Nếu bạn muốn nhận một số thông tin về sentinel, chỉ cần chạy lệnh sau:

127.0.0.1:26379> INFO

Điều này sẽ cung cấp cho bạn thông tin, chẳng hạn như ai là chủ nhân hiện tại, nó có bao nhiêu nô lệ và bao nhiêu lính canh đang theo dõi nó.

Để kiểm tra chuyển đổi dự phòng, chỉ cần thực hiện:

127.0.0.1:26379> SENTINEL failover mymaster

Điều này sẽ buộc ODOWN trên bản chính hiện tại và gây ra chuyển đổi dự phòng. Ngay sau đó, nếu bạn chạy lại lệnh “INFO”, bây giờ bạn sẽ thấy một trang cái mới được liệt kê.

Kết luận

Hy vọng rằng điều này sẽ hữu ích để làm sáng tỏ Redis và Sentinel. Nếu bạn có bất kỳ câu hỏi nào, vui lòng đăng dưới đây!