Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Làm thế nào để cụm Redis xử lý các lỗi nút


Làm thế nào để cụm Redis xử lý các lỗi nút


Redis Cluster xử lý các lỗi nút thông qua sự kết hợp của phát hiện thất bại, quảng bá bản sao và quản lý trạng thái cụm để đảm bảo hoạt động liên tục và tính khả dụng dữ liệu. Nó được thiết kế để tồn tại sự cố của một vài nút bằng cách tự động quảng bá các bản sao để thay thế các bậc thầy không thể truy cập, duy trì tính toàn vẹn của không gian chính trong khi giảm thiểu rủi ro mất dữ liệu.

Giao tiếp cụm và phát hiện thất bại

Các nút cụm Redis giao tiếp thông qua một giao thức nhị phân dựa trên TCP chuyên dụng được gọi là Bus Cụm Redis. Mỗi nút duy trì các kết nối với mọi nút khác trong cụm bằng bus này, cho phép kiểm tra sức khỏe liên tục và lan truyền trạng thái. Các nút định kỳ gửi các gói ping để xác nhận trạng thái hoạt động của các đồng nghiệp của họ và chia sẻ thông tin về trạng thái của cụm. Giao tiếp này sử dụng giao thức tin đồn để phổ biến thông tin cụm một cách hiệu quả, hỗ trợ phát hiện các lỗi nút.

Các nút giám sát các đồng nghiệp bằng cách sử dụng một cơ chế ping hoạt động. Nếu một nút không phản hồi với ping trong khoảng thời gian chờ được định cấu hình (node_timeout), thì nó được gắn cờ là có thể bị lỗi với trạng thái PFAIL. Đây là một dấu hiệu thất bại dự kiến, có nghĩa là nút có thể không thể truy cập hoặc xuống nhưng nó chưa được xác nhận. Nếu điều kiện PFAIL vẫn tồn tại và được xác nhận bởi đa số các nút chính, nút được đánh dấu là không thành công, cho thấy nó được coi là không thể truy cập hoặc xuống bởi cụm. Cơ chế phát hiện thất bại dựa trên sự đồng thuận này giúp ngăn ngừa dương tính giả trong việc xác định các nút thất bại.

Xử lý các lỗi nút chính

Khi một nút chủ được gắn cờ là thất bại, Redis Cluster bắt đầu một quá trình chuyển đổi dự phòng để quảng bá một trong những bản sao của nó để trở thành Master mới. Quá trình này được kích hoạt tự động bởi máy dò lỗi của cụm mà không cần can thiệp quản trị. Bản sao được quảng bá đảm nhận trách nhiệm phục vụ các khe hàm băm được quản lý trước đây bởi Master thất bại, đảm bảo rằng cụm có thể tiếp tục phục vụ các yêu cầu mà không cần cấu hình lại thủ công.

Chuyển đổi dự phòng chỉ xảy ra nếu có ít nhất một bản sao có sẵn và có thể truy cập để quảng bá. Nếu không có bản sao phù hợp nào tồn tại, cụm sẽ nhập trạng thái lỗi trong đó nó sẽ ngừng chấp nhận các truy vấn để ngăn chặn việc phục vụ dữ liệu không nhất quán. Điều này nhấn mạnh tầm quan trọng của việc có các bản sao được cấu hình cho mỗi bậc thầy để duy trì tính khả dụng cao.

failover cơ học và an toàn

Trong quá trình chuyển đổi dự phòng, bản sao chờ đồng bộ hóa hoàn toàn với Master mà nó đang thay thế, đảm bảo nó đã xử lý tất cả các bản cập nhật đang chờ xử lý để tránh mất dữ liệu. Nó đạt được điều này bằng cách kết hợp phần bù sao chép với Master để nó có một bộ dữ liệu cập nhật trước khi đảm nhận vai trò chính.

Sau khi được đồng bộ hóa, bản sao yêu cầu một kỷ nguyên cấu hình mới từ phần lớn các bậc thầy. Epoch là một dấu thời gian logic được sử dụng để theo dõi các thay đổi cấu hình trong cụm. Sau khi có được sự đồng thuận, bản sao phát sóng cấu hình được cập nhật cho tất cả các nút, thông báo quảng bá của mình lên Master và việc hạ cấp của Old Master để bản sao hoặc loại bỏ.

Master cũ, khi nó phục hồi, nhận được bản cập nhật cấu hình này và ngừng phục vụ các truy vấn như một bậc thầy. Nó chuyển hướng các yêu cầu của khách hàng đến Master mới, đảm bảo rằng khách hàng tiếp tục tương tác với cụm mà không cần can thiệp thủ công.

Xử lý các phân vùng mạng và kịch bản chia bộ não

Redis Cluster sử dụng sự đồng thuận dựa trên đa số để tránh các vấn đề chia tay trong các phân vùng mạng. Một bậc thầy sẽ chỉ bị thất bại nếu nó không thể truy cập được bởi hơn một nửa số thạc sĩ trong cụm. Các bậc thầy không thể giao tiếp với đa số sẽ ngừng chấp nhận ghi, ngăn chặn các trạng thái dữ liệu khác nhau giữa các phân vùng.

Tuy nhiên, nếu một phân vùng thiểu số chứa các khách hàng tiếp tục viết cho một chủ trước khi chuyển đổi dự phòng, thì có khả năng bị mất. Redis giảm thiểu rủi ro này bằng cách từ chối viết về phía thiểu số sau khi hết thời gian và về phía đa số bằng cách nhanh chóng thất bại đối với Master không thể truy cập.

Mặc dù có những biện pháp phòng ngừa này, ghi có thể bị mất trong các cửa sổ chuyển đổi dự phòng vì Redis sử dụng sự sao chép không đồng bộ giữa các bậc thầy và bản sao. Vì các câu trả lời để viết các lệnh và cập nhật sao chép được gửi gần như đồng thời, cửa sổ để mất ghi là rất hẹp nhưng không phải là không thể.

Tùy chọn cấu hình ảnh hưởng đến việc xử lý lỗi

Redis Cluster bao gồm các tùy chọn cấu hình có ảnh hưởng đến tính khả dụng và hành vi trong các lỗi nút:

-`Cụm-Yêu cầu-Full-MOVERAGE` (mặc định có): Cụm dừng chấp nhận ghi nếu bất kỳ phần nào của không gian khóa được phát hiện do lỗi nút, đảm bảo tính nhất quán dữ liệu mạnh.
-`CLUSTER-ALLOW-READS-WHEN-DOWN` (mặc định không): Kiểm soát xem có được phép đọc hay không khi cụm ở trạng thái lỗi. Kích hoạt điều này cho phép đọc từ các nút ngay cả trong các lỗi một phần nhưng có thể có nguy cơ dữ liệu cũ được phục vụ.

Các cài đặt này cho phép quản trị viên cân bằng tính khả dụng và tính nhất quán dựa trên các yêu cầu ứng dụng.

Hỗ trợ chuyển đổi dự phòng

Ngoài chuyển đổi dự phòng tự động, Redis Cluster cung cấp lệnh chuyển đổi dự phòng thủ công có thể được cấp trên các nút sao chép. Điều này rất hữu ích cho các kịch bản bảo trì hoặc thử nghiệm trong đó một quản trị viên muốn trao đổi vai trò chính mà không chờ đợi một sự kiện thất bại thực tế.

Chuyển đổi lỗi thủ công hoạt động bằng cách chặn các máy khách trên Master hiện tại, chờ bản sao bắt kịp hoàn toàn, và sau đó quảng bá bản sao với quá trình chuyển đổi nguyên tử mượt mà. Điều này đảm bảo không mất dữ liệu trong quá trình thay đổi vai trò và gián đoạn tối thiểu cho khách hàng.

Bản tóm tắt

Redis Cluster xử lý các lỗi nút chủ yếu thông qua hệ thống phát hiện và chuyển đổi lỗi dựa trên giám sát liên tục thông qua bus Redis Cluster và giao thức tin đồn. Các nút phát hiện các bậc thầy không thể truy cập và quảng bá bản sao tự động sau một quy trình đồng thuận đòi hỏi phần lớn các bậc thầy phải đồng ý về sự thất bại. Chuyển đổi dự phòng được thiết kế để giảm thiểu mất dữ liệu bằng cách đảm bảo các bản sao được đồng bộ hóa hoàn toàn trước khi quảng bá. Các phân vùng mạng được quản lý thông qua các quyết định dựa trên đa số để ngăn chặn các điều kiện chia tay, mặc dù một cửa sổ ghi hẹp có thể xảy ra do sao chép không đồng bộ. Tùy chọn cấu hình cho phép điều chỉnh tính khả dụng so với tính nhất quán trong quá trình lỗi và các lệnh chuyển đổi dự phòng thủ công cung cấp cho các nhà khai thác kiểm soát để bảo trì.

Kiến trúc này cho phép Redis Cluster cung cấp tính khả dụng cao và dung sai phân vùng với sự phục hồi tự động từ các lỗi nút chính, đảm bảo cụm vẫn hoạt động và nhất quán trong các kịch bản thất bại.