HA Redis với Replication và Sentinel

0
903

Xem cả loạt bài về Redis tại đây: https://hoctapit.com/category/linux/redis/

Bài viết tham khảo: http://blog.appconus.com/2017/03/17/redis-high-availibility-voi-sentinel-va-replication-2/

HA (High Availibity) là yêu cầu cần thiết cho bất cứ ứng dụng nào. Để làm điều đó với Redis thông thường người ta sử dụng Replication và Sentinel.

Redis Replication: nhiều thể hiện Redis được ghép với nhau, có 1 con là master, các con còn lại là slave. Mục đích để dữ liệu được phân tán ra các con, một con chết thì vẫn còn các con còn lại.

Redis Sentinel: Phương pháp bầu lại master trong replication. Khi con master chết lập tức 1 con slave nào đó sẽ được lên làm master để đảm bảo hệ thống vẫn hoạt động bình thường.

Với một nhu cầu thông thường, tốt nhất nên có 3 con Redis, đồng thời chạy Sentinel trên 3 con đó luôn.

 

Bước 1: Cài đặt Redis trên cả 3 con:

Cài đặt Redis từ source trên Centos – Install Redis from source Centos

Bước 2: Cấu hình Redis Replication

Trên Master: cài đặt như bài viết trên. Lưu ý phải bind IP của server 192.168.1.1 để export được redis ra ngoài, từ mỗi con phải telnet được port 6379 của 2 con còn lại.

Trên 2 con Slave:

Thêm dòng này vào cuối file config (IP là IP của con master)

Khởi động lại Redis

Test thử:

Trên con master gõ lệnh:

Nếu thấy nó báo role: master, connected 2 slaves là OK

Thử tạo 1 key trên master: redis-cli

Trên 1 con slave gõ thử lệnh: redis-cli

Là OK, dữ liệu đã được đồng bộ từ master sang.

Lưu ý trong 1 redis replication, chỉ có con master là ghi dữ liệu được, các con slave chỉ read only thôi nhé.

Bước 3: Cấu hình Redis-sentinel

  • Các sentinel sẽ luôn quan sát master server, khi master sập, các sentinels sẽ loan truyền nhau 1 tín hiệu sdowntao thấy đại ca chết rồi thì phải.
  • Khi đủ 1 số lượng n sentinel đồng ý rằng tao cũng thấy master sập rồi, tụi sentinels sẽ loan tiếp tín hiệu odownnó thực sự chết rồi đó.
  • Lúc này, tụi sentinels sẽ bầu chọn ra 1 slave để nâng cấp lên làm master mới, đồng thời cập nhật các cấu hình theo bộ máy chính quyền mới.
  • Khi thằng master kia sống lại, nó sẽ được tham gia vào băng nhóm với vai trò slave.

Trên con Master:

Vào thư mục chứa source Redis đã dùng để cài đặt ở bước 1 copy file sentinel.conf vào:

Mở file lên, xóa hết nội dung đi, rồi điền như sau:

Giải thích sơ qua:

Redis sentinel sẽ lắng nghe ở port 26379, theo dõi con master ở IP 192.168.1.1:6379

Tham số cuối cùng (2) là số lượng sentinel tối thiểu để tham gia việc bầu chọn (lúc xác định đại ca chết, và bầu đại ca mới), mymaster là cái tên thôi. Đại loại là 3 thằng bầu thằng nào có 2 phiếu thì lên đại ca.

Start sentinel lên:

Trên 2 con Slave:

Tương tự như trên, nhưng đổi IP Bind tương ứng với từng con.

Test thử:

Xem con nào đang là master:

Thử vào con master stop redis đi xem sao:

Giờ check lại xem thằng khác đã lên master chưa:

Check log của Sentinel để xem việc nó loan tin và bầu master mới như thế nào:

Giờ start lại redis trên con 192.168.1.1 ban nãy thì nó sẽ join lại vào replication ở role slave

 

 

 

LEAVE A REPLY

Please enter your comment!
Please enter your name here