Multi-AZ chưa đủ: nhận diện shared fate trong kiến trúc chịu lỗi

Multi-AZ chưa đủ: nhận diện shared fate trong kiến trúc chịu lỗi

Nhân bản ở nhiều vùng chỉ giải quyết một phần bài toán. Hãy tìm control plane, danh tính và thay đổi cấu hình có thể làm nhiều vùng cùng thất bại.

Ngày đăng:

Phân tán workload qua nhiều vùng khả dụng là một nền tảng tốt cho khả năng chịu lỗi, nhưng nó không tự động tạo ra tính độc lập. Hệ thống vẫn có thể cùng ngừng hoạt động nếu các bản sao phụ thuộc vào một DNS, một control plane, một kho cấu hình, một nhà cung cấp danh tính hoặc một thay đổi được phát tán quá rộng.

Vẽ sơ đồ theo ranh giới lỗi, không chỉ theo máy chủ

Bên cạnh sơ đồ mạng, hãy lập một dependency map gồm năm lớp: dữ liệu, điều khiển, danh tính, kết nối và thay đổi. Với mỗi thành phần, ghi lại nó nằm ở đâu, cần gì để hoạt động, ai có quyền thay đổi và điều gì xảy ra khi thành phần đó chậm hoặc không phản hồi.

Ba điều kiện thường bị bỏ qua

  1. Quorum đúng: số node còn lại phải đủ để hệ thống ra quyết định khi mất bất kỳ một vùng nào.
  2. Capacity có sẵn: hai vùng còn lại cần có headroom đã được kiểm tra, thay vì chờ scale out trong lúc control plane đang căng thẳng.
  3. Locality có chủ đích: các lời gọi liên tiếp nên ưu tiên đường cục bộ khi có thể để một lỗi vùng không cộng dồn qua cả chuỗi giao dịch.

Hai dạng shared fate cần săn lùng

Dạng thứ nhất là phụ thuộc điều khiển dùng chung: bản sao vẫn chạy nhưng không thể được phát hiện, định tuyến hoặc cấp quyền. Dạng thứ hai là thay đổi có blast radius rộng: một policy, pipeline hay automation hợp lệ về cú pháp được áp nhầm vào mọi vùng. Cả hai thường vô hình trên sơ đồ chỉ có compute và database.

Diễn tập thay vì giả định

Chọn một vùng, một thành phần control và một cấu hình có phạm vi rộng để diễn tập tách biệt. Kiểm tra ứng dụng có tiếp tục phục vụ ở chế độ suy giảm không, dashboard có chỉ ra đúng nguyên nhân không và nhóm vận hành có thể dừng thay đổi hay không. Ghi lại những dependency không thể cô lập rồi biến chúng thành backlog kiến trúc.

Khả năng chịu lỗi không phải là số lượng vùng được ghi trên sơ đồ. Nó là kết quả của các phụ thuộc đã được hiểu, các giới hạn đã được kiểm tra và một đường phục hồi thật sự hoạt động.

Khám phá FPT Cloud · Khám phá Managed Database · Nhận tư vấn