Skip to main content

Command Palette

Search for a command to run...

Bài 12: Redis Replication

Published
6 min readView as Markdown

Giới thiệu về Redis Replication:

  • Redis Replication là gì?

    • Redis Replication là quá trình sao chép dữ liệu từ một máy chủ Redis chính (master) sang một hoặc nhiều máy chủ phụ (slaves). Điều này giúp tăng tính sẵn sàng và khả năng mở rộng của hệ thống, đồng thời cải thiện hiệu suất truy xuất dữ liệu bằng cách phân tải các yêu cầu đọc (read) từ máy chủ chính sang các máy chủ phụ.
  • Lợi ích của Redis Replication:

    • Tăng tính sẵn sàng (High Availability): Nếu máy chủ chính gặp sự cố, các máy chủ phụ có thể được sử dụng để thay thế, đảm bảo dịch vụ không bị gián đoạn.

    • Cải thiện hiệu suất (Performance): Phân tải các yêu cầu đọc từ máy chủ chính sang các máy chủ phụ, giúp giảm tải và cải thiện hiệu suất tổng thể.

    • Sao lưu dữ liệu (Data Backup): Các máy chủ phụ có thể được sử dụng như các bản sao lưu của máy chủ chính, đảm bảo dữ liệu được bảo vệ.

Cấu hình master-slave replication:

Bước 1: Thiết lập máy chủ chính (master):

  • Cấu hình máy chủ chính:

    • Đảm bảo máy chủ chính Redis đã được cài đặt và chạy. Không cần cấu hình đặc biệt cho máy chủ chính, vì mặc định Redis hoạt động ở chế độ master.

    • File cấu hình của Redis thường nằm ở redis.conf. Đảm bảo các thiết lập cơ bản đã được cấu hình đúng.

Bước 2: Thiết lập máy chủ phụ (slave):

  • Cấu hình máy chủ phụ:

    • Cài đặt Redis trên máy chủ phụ và chỉnh sửa file cấu hình redis.conf để chỉ định máy chủ chính mà nó sẽ sao chép dữ liệu.

    • Thêm dòng sau vào file redis.conf trên máy chủ phụ:

        replicaof <master-ip> <master-port>
      
      • Ví dụ:

          replicaof 192.168.1.100 6379
        
  • Khởi động máy chủ phụ:

    • Khởi động Redis trên máy chủ phụ để bắt đầu quá trình sao chép dữ liệu từ máy chủ chính.

    • Kiểm tra trạng thái của máy chủ phụ để đảm bảo nó đang sao chép dữ liệu:

        redis-cli INFO replication
      

Bước 3: Quản lý replication:

  • Kiểm tra trạng thái replication:

    • Sử dụng lệnh INFO replication để kiểm tra trạng thái replication trên cả máy chủ chính và máy chủ phụ.

        redis-cli INFO replication
      
  • Chuyển đổi từ slave sang master:

    • Nếu máy chủ chính gặp sự cố, bạn có thể chuyển đổi một trong các máy chủ phụ thành máy chủ chính bằng cách sử dụng lệnh SLAVEOF NO ONE:

        redis-cli SLAVEOF NO ONE
      
  • Chuyển đổi từ master sang slave:

    • Để chuyển đổi một máy chủ chính thành máy chủ phụ, sử dụng lệnh SLAVEOF:

        redis-cli SLAVEOF <master-ip> <master-port>
      

Ví dụ thực tiễn:

Tạo một hệ thống Redis có khả năng sao lưu:

Scenario: Bạn cần thiết lập một hệ thống Redis với một máy chủ chính và hai máy chủ phụ để đảm bảo tính sẵn sàng cao và khả năng sao lưu dữ liệu.

Bước 1: Thiết lập máy chủ chính:

  • Cấu hình máy chủ chính:

    • Đảm bảo máy chủ chính Redis đã được cài đặt và chạy trên 192.168.1.100 với cổng 6379.

    • Kiểm tra cấu hình cơ bản trong file redis.conf:

        bind 192.168.1.100
        port 6379
      

Bước 2: Thiết lập các máy chủ phụ:

  • Máy chủ phụ 1:

    • Cấu hình máy chủ phụ 1: Cài đặt Redis trên máy chủ phụ 1 và chỉnh sửa file redis.conf:

        bind 192.168.1.101
        port 6379
        replicaof 192.168.1.100 6379
      
    • Khởi động máy chủ phụ 1:

        sudo systemctl start redis
      
  • Máy chủ phụ 2:

    • Cấu hình máy chủ phụ 2: Cài đặt Redis trên máy chủ phụ 2 và chỉnh sửa file redis.conf:

        bind 192.168.1.102
        port 6379
        replicaof 192.168.1.100 6379
      
    • Khởi động máy chủ phụ 2:

        sudo systemctl start redis
      

Bước 3: Kiểm tra trạng thái replication:

  • Trên máy chủ chính:

      redis-cli INFO replication
    
    • Đảm bảo rằng connected_slaves hiển thị số lượng máy chủ phụ đã kết nối.
  • Trên các máy chủ phụ:

      redis-cli INFO replication
    
    • Đảm bảo rằng trạng thái roleslavemaster_link_statusup.

Bước 4: Chuyển đổi từ slave sang master khi máy chủ chính gặp sự cố:

  • Trên máy chủ phụ 1:

      redis-cli SLAVEOF NO ONE
    
  • Cập nhật cấu hình trên các máy chủ phụ khác để chỉ định máy chủ phụ mới làm máy chủ chính:

    • Trên máy chủ phụ 2:

        redis-cli SLAVEOF 192.168.1.101 6379
      

Các tính năng bổ sung của Redis Replication:

1. Read-Only Slaves:

  • Mô tả:

    • Theo mặc định, các máy chủ phụ chỉ xử lý các yêu cầu đọc (read) và từ chối các yêu cầu ghi (write).

    • Bạn có thể cho phép máy chủ phụ chấp nhận các yêu cầu ghi bằng cách chỉnh sửa cấu hình:

        replica-read-only no
      

2. Chaining Replication:

  • Mô tả:

    • Redis hỗ trợ chaining replication, nơi mà các máy chủ phụ có thể đóng vai trò là máy chủ chính cho các máy chủ phụ khác.

    • Điều này cho phép tạo ra các cây replication phức tạp và mở rộng khả năng sao lưu và phục hồi dữ liệu.

3. Partial Resynchronization:

  • Mô tả:

    • Redis hỗ trợ partial resynchronization, cho phép các máy chủ phụ chỉ nhận các thay đổi mới nhất từ máy chủ chính mà không cần phải sao chép toàn bộ dữ liệu lại từ đầu.

Câu hỏi củng cố kiến thức:

  1. Redis Replication là gì và nó có lợi ích gì?

    • Redis Replication là quá trình sao chép dữ liệu từ máy chủ chính sang máy chủ phụ, tăng tính sẵn sàng và hiệu suất.
  2. Lệnh nào dùng để thiết lập một máy chủ Redis làm máy chủ phụ?

    • replicaof <master-ip> <master-port>.
  3. Làm thế nào để kiểm tra trạng thái replication trong Redis?

    • Sử dụng lệnh INFO replication.
  4. Làm thế nào để chuyển một máy chủ phụ thành máy chủ chính khi máy chủ chính gặp sự cố?

    • Sử dụng lệnh SLAVEOF NO ONE trên máy chủ phụ.
  5. Cấu hình nào trong Redis cho phép máy chủ phụ chấp nhận các yêu cầu ghi?

    • replica-read-only no.

Kết luận:

  • Redis Replication cung cấp một phương pháp mạnh mẽ để tăng cường tính sẵn sàng và khả năng mở rộng của hệ thống Redis. Bằng cách sao chép dữ liệu từ máy chủ chính sang các máy chủ phụ, bạn có thể đảm bảo rằng dữ liệu của mình luôn được bảo vệ và hệ thống có thể phục hồi nhanh chóng khi gặp sự cố. Việc cấu hình và quản lý replication trong Redis khá đơn giản nhưng rất hiệu quả, giúp bạn dễ dàng triển khai trong môi trường sản xuất.

More from this blog

devngu

169 posts