Fault tolerance đề cập đến khả năng của một hệ thống (computer, network, cloud cluster,) có khả năng tiếp tục hoạt động mà không bị gián đoạn khi một hoặc nhiều thành phần của nó gặp sự cố.
Mục tiêu của việc tạo ra một hệ thống chịu lỗi (fault-tolerant system) là ngăn chặn sự gián đoạn phát sinh từ một điểm thất bại duy nhất, đảm bảo tính sẵn sàng cao (high availability) và tính liên tục (business continuity) của các ứng dụng hoặc hệ thống thực hiện các nhiệm vụ quan trọng.
Fault-tolerant system sử dụng các thành phần backup tự động thay thế các thành phần có vấn đề, nhằm đảm bảo không gây gián đoạn dịch vụ. Bao gồm:
- Hardware systems: được sao lưu bằng hệ thống giống hệt hoặc tương đương. Ví dụ, một server có thể được thực hiện fault tolerant bằng cách sử dụng một server giống hệt nhau chạy song song, với tất cả các hoạt động giống đối xứng với backup server.
- Software systems: được sao lưu bởi các phiên bản phần mềm khác. Ví dụ, một cơ sở dữ liệu với thông tin khách hàng có thể được sao chép liên tục đến một máy khác. Nếu cơ sở dữ liệu chính bị hỏng, các hoạt động có thể được tự động chuyển hướng đến cơ sở dữ liệu thứ hai.
- Power sources: Hệ thống nguồn điện thay thế. Ví dụ, nhiều tổ chức có máy phát điện có thể trở thành nguồn điện thay thế trong trường hợp nguồn điện chính gặp sự cố (UPS).
Tương tự, bất kỳ hệ thống hoặc thành phần nào là một điểm lỗi có thể được thực hiện fault tolerant bằng cách sử dụng hệ thống dự phòng.
Fault tolerant đóng vai trò quan trọng trong chiến lược khắc phục sự cố (disaster recovery strategy). Ví dụ, các fault-tolerant systems với các thành phần backup trong đám mây có thể khôi phục lại các hệ thống thực hiện nhiệm vụ quan trọng một cách nhanh chóng, ngay cả khi sự cố đó là một thảm họa tự nhiên hoặc do con người gây ra, phá hủy cơ sở hạ tầng CNTT tại chỗ.
Phân biệt Fault tolerance và High availability
High availability (tính khả dụng cao) đề cập đến khả năng giảm thiểu downtime của hệ thống trong khi hoạt động, tránh gây gián đoạn dịch vụ. Còn được gọi là uptime, uptime là phần trăm thời gian hoạt động của hệ thống trên tổng running time.
Trong hầu hết các trường hợp, business continuity strategy (chiến lược kinh doanh liên tục) sẽ bao gồm cả high availability và fault tolerance, để đảm bảo tổ chức có thể duy trì các chức năng quan trọng khi gặp sự cố nhỏ hoặc hứng chịu thảm họa.
Mặc dù cả high availability và fault tolerance đều đề cập đến chức năng của hệ thống, nhưng chúng đề là những thành phần không thể thiếu trong một thiết kế hệ thống của business continuity planning.
Hãy xem xét sự tương tự sau đây để hiểu rõ hơn sự khác biệt giữa high availability và fault tolerance:
- Một chiếc máy bay hai động cơ là một Fault-tolerant system: nếu động cơ này bị hỏng, động cơ kia sẽ hoạt động thay thế, điều này giúp máy bay vẫn tiếp tục hành trình bay của mình một cách trơn tru.
- Ngược lại, một chiếc xe với lốp dự phòng là highly available. Một chiếc lốp bị xẹp sẽ làm chiếc xe phải dừng lại, nhưng downtime sẽ là tối thiểu vì đã có lốp thay thế sẵn sàng, việc thay lốp xe sẽ diễn ra trong thời gian ít nhất.
Một số cân nhắc quan trọng khi tạo Fault-tolerant system và highly available system trong những thiết lập mang tính tổ chức:
- Downtime: Highly available system có mức gián đoạn dịch vụ tối thiểu cho phép. Ví dụ: một hệ thống có tính khả dụng "five nines" sẽ có downtime khoảng 5 phút mỗi năm. Một fault-tolerant system dự kiến sẽ hoạt động liên tục và không cho phép bất kỳ sự gián đoạn nào.
- Scope: High availability xây dựng trên một tập hợp các tài nguyên được sử dụng chung để quản lý các lỗi và giảm thiểu downtime. Fault tolerance dựa trên power supply backups, phần cứng hoặc phần mềm có thể phát hiện lỗi và ngay lập tức chuyển sang các thành phần dự phòng.
- Cost: Một Fault-tolerant system sẽ khá tốn kém, vì nó phải hoạt động liên tục, chưa kể còn phải bảo trì các thành phần dự phòng. High availability thường là tính năng đi kèm trong một gói dịch vụ tổng thể thông qua nhà cung cấp (ví dụ: nhà cung cấp BizFly Cloud Load Balancer).
Một số hệ thống có thể yêu cầu một thiết kế fault-tolerant, trong khi High availability có thể đáp ứng nhu cầu cho nhiều hệ thống khác nhau. Bạn nên cân nhắc khả năng chịu lỗi của mỗi hệ thống đối với việc gián đoạn dịch vụ, chi phí của các gián đoạn như vậy, thỏa thuận SLA hiện có được nhà cung cấp áp dụng không, cũng như chi phí và tính phức tạp của việc thực thi fault tolerance đầy đủ.
Load balancing và Failover: Fault Tolerance cho các ứng dụng web
Trong bối cảnh phân phối ứng dụng web, fault tolerance liên quan đến việc sử dụng các giải pháp load balancing và failover để đảm bảo tính khả dụng thông qua các dự phòng và khắc phục sự cố nhanh chóng.
Các giải pháp cân bằng tải cho phép ứng dụng chạy trên nhiều nút mạng, loại bỏ sự lo ngại về một điểm lỗi duy nhất. Hầu hết các load balancer tối ưu hóa phân phối workload trên nhiều tài nguyên máy tính, khiến chúng trở nên linh hoạt hơn đối với các hoạt động tăng đột biến có thể dẫn đến việc giảm tốc độ làm việc và các gián đoạn khác.
Ngoài ra, cân bằng tải còn giúp đối phó với các lỗi mạng cục bộ. Ví dụ, một hệ thống có chứa hai production servers có thể sử dụng bộ cân bằng tải để tự động thay đổi workloads trong trường hợp một trong hai server bị lỗi.
Ngược lại, các giải pháp chuyển đổi dự phòng (failover) được sử dụng trong các trường hợp cực đoan nhất dẫn đến lỗi mạng hoàn toàn. Khi điều này xảy ra, một failover system được tính phí với việc kích hoạt nền tảng phụ (dự phòng) tự động, nhằm giữ cho một ứng dụng web tiếp tục chạy trong khi team IT đang khắc phục sự cố mạng.
Để có khả năng fault tolerance thực sự với downtime bằng 0, bạn cần triển khai "hot" failover, chuyển tải workloads ngay lập tức sang hệ thống dự phòng hoạt động. Nếu duy trì một hệ thống dự phòng hoạt động liên tục không phải là lựa chọn, bạn có thể sử dụng "warm" hoặc "cold" failover, khi này các backup systems cần thời gian để tải và bắt đầu xử lý các workloads.