Kiến trúc sẵn sàng cao (High Availability) là gì?
Kiến trúc sẵn sàng cao là khi có nhiều thành phần, mô-đun hoặc dịch vụ khác nhau làm việc cùng nhau để duy trì hiệu suất tối ưu, bất kể tải đỉnh (peak-time loads).

Theo nghĩa thuần túy, hệ thống này cho phép doanh nghiệp hoạt động liên tục mà không gặp sự cố trong một khoảng thời gian xác định. Nhiều doanh nghiệp không thể chịu đựng được thậm chí một phút downtime. Vì dữ liệu là máu sống của nhiều doanh nghiệp, ngay cả một khoảng downtime ngắn cũng có chi phí cực lớn.
Trong một số tình huống thực tế, tính mạng có thể phụ thuộc vào cơ sở dữ liệu xây dựng cho high availability. Khi bệnh nhân đến cấp cứu, y bác sĩ cần truy cập ngay lập tức vào hồ sơ y tế để quyết định điều trị. Bất kỳ độ trễ nào trong việc truy cập thông tin này đều có thể gây hậu quả nghiêm trọng.
Lưu ý: High availability thường đo bằng phần trăm thời gian dịch vụ khả dụng cho người dùng. Theo Microsoft Network Developer Glossary, để máy chủ được coi là "highly available", cần đạt 99.999% uptime mạng.
Cụm sẵn sàng cao (High Availability Clusters) là gì?
Cụm sẵn sàng cao là nhóm các host hợp nhất thành một hệ thống đơn để ngăn chặn downtime. Nếu một server trong cụm sập, ứng dụng quan trọng (mission-critical) sẽ được chuyển ngay sang server khác ngay khi phát hiện lỗi.
Không hệ thống nào miễn dịch khỏi lỗi, và cụm HA đảm bảo mức hiệu suất tối ưu được duy trì bất chấp các lỗi bấtmeid. Do đó, chúng thường dùng cho ứng dụng, website và hệ thống xử lý giao dịch quan trọng nhất.
Cụm HA hoạt động như thế nào?
Cụm HA sử dụng nhiều hệ thống đã tích hợp sẵn, nên nếu lỗi làm sập một hệ thống, hệ thống khác có thể được tận dụng hiệu quả để duy trì liên tục dịch vụ/ứng dụng.
Cụm cân bằng tải (load balancing cluster) HA đóng vai trò then chốt trong ngăn chặn lỗi hệ thống. Việc có load balancer phân phối lưu lượng qua các web node phục vụ cùng website/ứng dụng. Điều này giảm áp lực lên bất kỳ server đơn lẻ nào, cho phép từng cụm hoạt động tối ưu hơn và chỉ gửi traffic đến server khỏe mạnh.
Các khái niệm cụm HA
Cụm Active-Passive (Chủ-Thụ)
Cụm active/passive gồm ít nhất hai node. Như tên gọi, không phải tất cả node đều active. Nếu một node active, node thứ hai ở chế độ chỉ đọc, standby. Server passive đóng vai trò dự phòng và sẽ được dùng nếu server active gặp sự cố.
Cụm Active-Active (Chủ-Chủ)
Loại cụm này thường dùng ít nhất hai node thực thi cùng dịch vụ cùng lúc. Trong cụm active-active, cả hai node đều là node chính (primary), nghĩa là cả hai đều nhận đọc và ghi. Nếu một node sập, người dùng tự động kết nối đến node kia để đảm bảo liên tục dịch务. Khi node đầu tiên được thay thế, người dùng sẽ được phân chia giữa hai node gốc.
Lợi ích lớn của cụm active-active là cho phép cân bằng node-mạng (node-network balance). Nếu phát hiện lỗi server, load balancer sẽ chuyển yêu cầu người dùng đến server sẵn sàng và phân tích hoạt động node-mạng. Load balancer sau đó đẩy traffic đến node có khả năng phục vụ, cho phép mức chịu lỗi (fault tolerance) cao hơn.
Chiến lược này tuân theo quy trình chu kỳ, tương tự mô hình round-robin, người dùng được phân tán ngẫu nhiên qua các node khả dụng, hoặc tuân theo sơ đồ trọng số (weighing scheme) ưu tiên node này hơn node kia dựa trên phần trăm.
Cụm Shared-Nothing vs Shared-Disk
Quy tắc chung trong phân tán tính toán là tránh điểm lỗi đơn lẻ (single point of failure) ở mọi chi phí. Điều này yêu cầu tài nguyên phải được sao chép chủ động hoặc có thể thay thế, không có yếu tố đơn lẻ nào bị gián đoạn khi toàn bộ dịch vụ sập.
Hãy tưởng tượng 50 node đang chạy được cung cấp bởi một database duy nhất. Nếu một node sập, nó không ảnh hưởng trạng thái bền vững của các node khác, bất kể số node đang chạy.
Nhưng nếu database sập, toàn bộ cụm sẽ sập, làm cho database trở thành điểm lỗi đơn lẻ? Điều này gọi là shared disk cluster.
Ngược lại, nếu mỗi node tự duy trì database của mình, lỗi một node sẽ không làm sập toàn cụm. Điều này gọi là shared nothing cluster.
Lưu ý: Nếu muốn tìm hiểu thêm về công nghệ cụm HA, hãy xem webinar này. Với hơn 20 năm kinh nghiệm trong ngành phần mềm, George Carbonnel sẽ giải thích mọi thứ về công nghệ cụm với Redis Enterprise mang lại hiệu suất cao cũng như sẵn sàng cao.
Yêu cầu của kiến trúc sẵn sàng cao
Có nhiều yêu cầu khác nhau để tối đa hóa độ bền và sẵn sàng cao, bao gồm:
Cân bằng tải (Load Balancing)
Load balancing quan trọng đối với mọi kiến trúc HA. Chức năng chính là phân phối traffic qua các backend server để truyền dữ liệu hiệu quả hơn và ngăn chặn quá tải server. Điều kiện tiên quyết của bất kỳ hệ thống cân bằng tải nào là xác định quy trình failover khi node sập.
Khả năng mở rộng dữ liệu (Data Scalability)
Khả năng mở rộng database hoặc đơn vị lưu trữ đĩa phải được tính đến bởi mọi kiến trúc HA. Có hai giải pháp để đạt được scalability:
- Sử dụng database chính của kiến trúc và dùng replication hoặc partitioning để làm cho nó high available; hoặc
- Đảm bảo các instance ứng dụng riêng lẻ có khả năng duy trì lưu trữ dữ liệu riêng
Đa dạng địa lý (Geographical Diversity)
Chúng ta sống trong thế giới số nhanh chóng, việc phân phối cụm HA trên toàn cầu hiện là bắt buộc. Việc này đảm bảo nếu thiên tai xảy ra tại một vị trí, tác động không cản trở khả năng cung cấp dịch vụ.
Sao lưu và khôi phục (Disaster Recovery)
Mặc dù có tính nhất quán, kiến trúc HA luôn dễ bị tổn thương bởi sự cố gián đoạn dịch vụ. Do đó, nếu dịch vụ sập, doanh nghiệp phải có chiến lược khôi phục để đưa toàn bộ hệ thống chạy lại nhanh nhất có thể.
Điều này thường gọi là disaster recovery – tập hợp chính sách và quy trình thiết kế để khôi phục dịch vụ về đầy đủ chức năng khi sự kiện gián đoạn xảy ra.
Cách đo lường High Availability
High availability thường đo bằng phần trăm thời gian dịch vụ khả dụng. Tính bằng tổng uptime chia cho chu kỳ hệ thống, nhân 100 để ra phần trăm. Theo Microsoft Network Developer Glossary, server cần đạt 99.999% network uptime để coi là "highly available".
Thường phần trăm availability được gọi là số chữ số 9. Nếu bốn chữ số 9 là 99.99%.
Lưu ý: 99.99% availability được coi là tiêu chuẩn ngành.
Best Practices cho High Availability
Có nhiều bước để tối đa hóa HA, từ số lượng thành phần kiểm tra đến thay thế server lỗi. Dưới đây là một số thực hành:
Đạt được dự phòng địa lý (Geographic Redundancy)
Geo-redundancy là hàng rào quan trọng chống lại thiên tai gây gián đoạn dịch vụ. Triển khai nhiều server tại các vị trí địa lý khác nhau, phân tán rủi ro và cho phép kiến trúc fallback sang server khác nếu thiên tai xảy ra ở một vùng.
Lưu ý: Dễ dàng đạt được với database có Active-Active Geo-Distribution.
Sử dụng giải pháp Failover
Kiến trúc HA thường bao gồm nhiều server lỏng lẻo (loosely coupled) cung cấp khả năng failover. Failover là chế độ vận hành dự phòng tự động kích hoạt khi chức năng của hệ thống chính sập.
Triển khai Load Balancers
Như đã nhắc, load balancer phân tán traffic đến các server khác nhau để giảm rủi ro downtime. Hãy cấu hình load balancer dùng thuật toán phù hợp nhu cầu để tối ưu hóa giải pháp này.
Đảm bảo đồng bộ dữ liệu đáp ứng Recovery Point Objective (RPO)
RPO là mốc cho lượng dữ liệu tối đa có thể mất mà không gây hại tổ chức. Nó phản ánh dung sai mất dữ liệu của doanh nghiệp và thường đo bằng đơn vị thời gian, ví dụ 1 phút hoặc 1 ngày.
Đặt RPO nhỏ hơn hoặc bằng 60 giây giúp duy trì maximum availability. Điều này đảm bảo nếu nguồn chính sập, bạn không mất quá 60 giây dữ liệu.
Vai trò của Redis trong kiến trúc sẵn sàng cao
Redis Enterprise là giải pháp mạnh mẽ cho tập đoàn lớn muốn đạt maximum availability. Đây là nền tảng dữ liệu thời gian thực đảm bảo five-nines availability (99.999%), cung cấp khả năng phục hồi database tự động hàng đầu đồng thời giảm thiểu rủi ro lỗi phần cứng và ngừng hoạt động đám mây.
Redis Enterprise đáp ứng nhu cầu HA của ứng dụng doanh nghiệp quan trọng nhất. Cung cấp chức năng dẫn đầu ngành để đạt 99.999% availability sử dụng: Active-Active Geo Distribution, failover tự động, clustering thông minh, kiến trúc shared-nothing, và phân phối toàn cầu.
Muốn tìm hiểu thêm về cách đạt high availability?