Redis High Availibility với Sentinel và Replication

Bối cảnh

  • Bạn dùng redis để đệm dữ liệu cho 1 ứng dụng chat.
  • Một ngày đẹp trời, bạn đang đi nhậu với chiến hữu, sếp điện thoại kêu lên công ty gấp, server bị sập không truy cập được.
  • Bạn lật đật giã từ vũ khí và chạy lên công ty…
  • Server bị sập thì có vô vàn lý do: loại trừ lý do chủ quan là code cùi, code lỗi, thì còn các lý do khách quan mà không ai muốn nó xảy ra cả: server bảo trì, data center bị chập điện, rớt mạng, phần mềm trong máy xung đột, server bị virus…
  • Lúc này bạn sẽ nghĩ đến chuyện làm sao để nếu server có cúp điện thì hệ thống mình vẫn chạy bình thường. Google 1 hồi nó sẽ dẫn bạn đến khái niệm High Availability: khả năng đáp ứng cao.

High Availability – HA

  • HA được hiểu nôm na là (1) hệ thống mình có khả năng phục vụ liên tục và (2) chịu nhiệt cao (tức là khi nhiều người yêu cầu phục vụ thì anh cũng cân được tuốt).
  • Bài viết này mình sẽ tập trung vào mục (1).

Redis replication

  • Là phương pháp sử dụng “lính dự bị”, lên đảm nhiệm vai trò của “lính chủ lực” khi ông chủ lực kiệt sức chết.
  • Mình sẽ sử dụng 1 thằng chủ lực (master) và 2 thằng dự bị (slave).
  • Tổng cộng sẽ cần 3 server vật lý, sau này sẽ gọi là node để khỏi nhầm lẫn với redis server.
  • 3 node này lần lượt là:master, slave-1, slave-2:

Cài đặt redis

Cấu hình cho node master

Test thử server master

Ghi dữ liệu vào để lát nữa đọc thử từ slave ra:

Cấu hình cho các node slave

Kiểm tra thông tin về replication:

OK, đến đây là xong phần redis replication. Tiếp đến, mình dùng sentinel để quản lý việc đưa salve lên làm master khi ông master bị down.

Sentinel

  • Cơ chế hoạt động
  • 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 sdown: tao 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 odown: nó 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.
  • Cài đặt và cấu hình
  • Cài đặt sentinel trên CẢ 3 NODE:
  • Khởi động lại cả 3 sentinel:
  • Kiểm tra việc bầu cử
  • Kiểm tra xem ai đang là master
  • Đánh sập master để bầu master mới
  • Giờ thì kiểm tra xem cháu nào được lên làm đại ca:
  • Bạn thử khởi động lại cháu đại ca lúc nãy, và xem trong log sẽ thấy nó được gia nhập băng nhóm lại, nhưng với vai trò là slave 😀✌️
  • OK, từ nay trở đi, server có sập thì cũng cứ an tâm mà uống bia, mai tỉnh dậy rồi gọi ông đại ca cũ dậy sau :v

bài dài mình chỉ tóm tắt câu chữ các bước thôi

cụ thể các bạn truy cập: http://web.archive.org/web/20180228155113/http://blog.appconus.com/2017/03/17/redis-high-availibility-voi-sentinel-va-replication-2/ để biết chi tiết