Nội dung dưới đây sẽ trình bày khái niệm, nguyên lý hoạt động, các cấp độ chịu lỗi và những thành phần cần có trong một fault tolerant system hoàn chỉnh.
Những điểm chính
• Quan điểm của mình: Fault Tolerance không đơn thuần là một khoản đầu tư mang tính dự phòng mà là yêu cầu cần thiết đối với các hệ thống xử lý giao dịch hoặc dữ liệu quan trọng. High Availability giúp hệ thống nhanh chóng phục hồi sau sự cố, trong khi Fault Tolerance hướng đến việc duy trì dịch vụ liên tục mà người dùng không nhận thấy gián đoạn.
• Khái niệm Fault Tolerance: Hiểu được Fault Tolerance là khả năng giúp hệ thống tiếp tục vận hành khi một hoặc nhiều thành phần gặp lỗi.
• Nguyên lý hoạt động: Nắm được cơ chế dự phòng, phát hiện sự cố, cô lập thành phần lỗi và tự động chuyển đổi sang tài nguyên thay thế.
• Các cấp độ Fault Tolerance: Phân biệt những cấp độ từ No Fault Tolerance, Fault Detection, Fault Masking đến Fault Recovery.
• Thành phần của hệ thống chịu lỗi: Nhận biết các lớp dự phòng liên quan đến phần cứng, phần mềm, dữ liệu, nguồn điện và hệ thống mạng.
Fault tolerance là gì?
Fault tolerance, hay khả năng chịu lỗi, là khả năng giúp một hệ thống máy tính, mạng hoặc cụm máy chủ đám mây tiếp tục hoạt động khi một hoặc nhiều thành phần bên trong xảy ra sự cố.
Mục tiêu quan trọng của cơ chế này là loại bỏ điểm lỗi đơn lẻ, còn được gọi là Single Point of Failure. Đây là những thành phần mà nếu bị hỏng có thể khiến toàn bộ hệ thống ngừng hoạt động.
Một hệ thống được thiết kế theo hướng fault tolerance có khả năng tự động phát hiện thành phần bất thường, cô lập sự cố và chuyển luồng xử lý sang tài nguyên dự phòng. Quá trình chuyển đổi được thực hiện gần như ngay lập tức nên người dùng cuối thường không nhận thấy dịch vụ bị gián đoạn.
Khả năng chịu lỗi đặc biệt cần thiết đối với những hệ thống thực hiện nhiệm vụ quan trọng như giao dịch ngân hàng, thanh toán điện tử, điều khiển hàng không, y tế, viễn thông hoặc xử lý dữ liệu doanh nghiệp. Trong các môi trường này, chỉ một khoảng thời gian ngừng hoạt động ngắn cũng có thể gây thiệt hại về tài chính, dữ liệu và uy tín.
Fault tolerance không chỉ tập trung vào việc khôi phục dịch vụ sau khi lỗi xảy ra mà còn hướng đến việc duy trì hoạt động xuyên suốt trong toàn bộ quá trình xử lý sự cố.
Nguyên lý hoạt động của fault tolerance
Nguyên lý cốt lõi của Fault Tolerance dựa trên cơ chế dự phòng. Hệ thống luôn có một hoặc nhiều thành phần thay thế hoạt động song song hoặc ở trạng thái sẵn sàng tiếp quản khi bộ phận chính gặp trục trặc.
Quy trình xử lý lỗi thường diễn ra qua ba giai đoạn chính.
Phát hiện lỗi
Hệ thống sử dụng các công cụ giám sát để liên tục kiểm tra trạng thái của máy chủ, ứng dụng, thiết bị lưu trữ, đường truyền và các thành phần liên quan.
Các dấu hiệu bất thường có thể bao gồm:
• Tiến trình phần mềm bị treo.
• Ứng dụng phản hồi chậm hoặc dừng hoạt động.
• Ổ cứng mất kết nối.
• Máy chủ không phản hồi.
• Đường truyền mạng bị gián đoạn.
• Dữ liệu đồng bộ không chính xác.
• Mức sử dụng CPU, RAM hoặc dung lượng lưu trữ vượt ngưỡng.
Khi phát hiện dấu hiệu bất thường, hệ thống sẽ xác định thành phần đang gặp lỗi và kích hoạt cơ chế xử lý phù hợp.
Cách ly thành phần lỗi
Sau khi xác định được nguyên nhân, hệ thống sẽ cô lập bộ phận bị hỏng khỏi các thành phần vẫn đang hoạt động bình thường.
Việc cách ly giúp ngăn sự cố lan rộng và hạn chế hiệu ứng domino. Chẳng hạn, một máy chủ ứng dụng bị lỗi có thể được loại khỏi cụm cân bằng tải để không tiếp tục nhận yêu cầu từ người dùng.
Tương tự, một ổ đĩa bị lỗi trong hệ thống lưu trữ có thể bị ngừng sử dụng trong khi các ổ đĩa còn lại tiếp tục phục vụ dữ liệu.
Chuyển đổi dự phòng tự động
Khi thành phần chính không còn khả năng xử lý, lưu lượng truy cập và dữ liệu sẽ được chuyển sang tài nguyên dự phòng.
Quá trình này được gọi là failover. Hệ thống dự phòng sẽ tiếp quản vai trò của thành phần chính mà không cần quản trị viên thực hiện chuyển đổi thủ công.
Ví dụ, khi máy chủ cơ sở dữ liệu chính gặp sự cố, hệ thống có thể tự động chuyển kết nối sang máy chủ cơ sở dữ liệu dự phòng đã được đồng bộ trước đó. Người dùng vẫn có thể tiếp tục giao dịch mà không nhận thấy sự thay đổi phía sau hệ thống.
Sau khi thành phần lỗi được sửa chữa, hệ thống có thể thực hiện failback, tức là đưa dịch vụ trở lại tài nguyên chính hoặc tái thiết lập trạng thái dự phòng ban đầu.
Các nhóm lỗi hệ thống thường gặp
Một fault tolerant system cần được thiết kế để xử lý nhiều loại sự cố khác nhau.
• Lỗi phần cứng: Bao gồm hỏng ổ cứng, RAM, CPU, bo mạch chủ, bộ nguồn, thiết bị lưu trữ hoặc các linh kiện vật lý khác.
• Lỗi phần mềm: Có thể xuất phát từ lỗi mã nguồn, xung đột ứng dụng, dịch vụ bị treo, rò rỉ bộ nhớ hoặc tiến trình dừng bất thường.
• Lỗi mạng: Bao gồm mất kết nối, lỗi router, lỗi switch, độ trễ cao, nghẽn băng thông hoặc đường truyền không ổn định.
• Lỗi dữ liệu: Dữ liệu có thể bị hỏng, mất đồng bộ, ghi sai hoặc không thể truy cập do sự cố lưu trữ.
• Lỗi nguồn điện: Mất điện, điện áp không ổn định hoặc bộ nguồn thiết bị bị hỏng có thể khiến hệ thống ngừng hoạt động.
• Lỗi do con người: Bao gồm cấu hình sai, xóa nhầm dữ liệu, triển khai sai phiên bản hoặc thực hiện quy trình vận hành không đúng.
Việc xác định đầy đủ các nhóm lỗi giúp tổ chức xây dựng phương án dự phòng phù hợp cho từng lớp của hệ thống.
Những cấp độ fault tolerance
Tùy theo yêu cầu về độ tin cậy và mức độ quan trọng của dịch vụ, khả năng chịu lỗi có thể được chia thành nhiều cấp độ khác nhau.
No Fault Tolerance
No Fault Tolerance là cấp độ không có cơ chế chịu lỗi. Mỗi chức năng của hệ thống chỉ được đảm nhiệm bởi một thành phần duy nhất.
Nếu thành phần này gặp sự cố, chức năng tương ứng hoặc toàn bộ hệ thống có thể ngừng hoạt động.
Ví dụ, một website chỉ sử dụng duy nhất một máy chủ. Khi máy chủ bị lỗi phần cứng hoặc mất kết nối mạng, người dùng sẽ không thể tiếp tục truy cập website.
Mô hình này có chi phí triển khai thấp nhưng không phù hợp với các hệ thống yêu cầu khả năng hoạt động liên tục.
Fault Detection
Fault Detection là cấp độ hệ thống có khả năng phát hiện sự cố và gửi cảnh báo cho quản trị viên.
Ở cấp độ này, hệ thống chưa tự động xử lý hoặc chuyển đổi sang tài nguyên dự phòng. Việc khôi phục dịch vụ vẫn cần sự can thiệp của con người.
Các công cụ giám sát có thể gửi thông báo khi máy chủ ngừng phản hồi, dung lượng ổ cứng gần đầy hoặc ứng dụng phát sinh lỗi.
Fault Detection giúp quản trị viên biết được vấn đề sớm hơn và rút ngắn thời gian xử lý, nhưng dịch vụ vẫn có thể bị gián đoạn trong thời gian chờ can thiệp.
Fault Masking
Fault Masking là khả năng che giấu lỗi khỏi người dùng và các dịch vụ phía trên.
Khi một thành phần gặp sự cố, hệ thống tự động sử dụng thành phần còn hoạt động để tiếp tục xử lý. Người dùng không nhận thấy lỗi đã xảy ra.
RAID 1 là một ví dụ phổ biến. Dữ liệu được ghi đồng thời lên hai ổ đĩa. Nếu một ổ bị hỏng, hệ thống vẫn có thể đọc dữ liệu từ ổ còn lại.
Cơ chế cân bằng tải giữa nhiều máy chủ cũng có thể giúp che giấu lỗi. Khi một máy chủ ngừng phản hồi, lưu lượng sẽ được chuyển sang các máy chủ đang hoạt động.
Fault Recovery
Fault Recovery là cấp độ hoàn thiện hơn, trong đó hệ thống không chỉ phát hiện và che giấu lỗi mà còn có khả năng khôi phục trạng thái hoạt động bình thường sau khi sự cố được xử lý.
Hệ thống có thể tự động khởi động lại dịch vụ, đồng bộ lại dữ liệu, bổ sung tài nguyên thay thế hoặc đưa thành phần đã sửa chữa trở lại cụm vận hành.
Ở cấp độ này, quy trình xử lý lỗi được tự động hóa từ lúc phát hiện sự cố cho đến khi hệ thống trở về trạng thái ổn định.
Fault Recovery thường được sử dụng trong các hệ thống ngân hàng, thương mại điện tử, viễn thông, trung tâm dữ liệu và nền tảng điện toán đám mây.
Những thành phần của hệ thống fault tolerant
Một fault tolerant system toàn diện cần có nhiều lớp dự phòng. Việc chỉ dự phòng một máy chủ nhưng vẫn sử dụng duy nhất một đường truyền hoặc một nguồn điện chưa thể loại bỏ hoàn toàn điểm lỗi đơn lẻ.
Phần cứng dự phòng
Phần cứng là lớp đầu tiên cần được xem xét khi thiết kế hệ thống chịu lỗi.
Các máy chủ quan trọng thường được nhân bản thành hai hoặc nhiều thiết bị có cấu hình tương đương. Các máy chủ có thể chạy song song hoặc một máy hoạt động chính trong khi máy còn lại ở trạng thái sẵn sàng.
Khi máy chủ chính bị lỗi, máy chủ dự phòng sẽ tiếp quản khối lượng công việc.
Ngoài máy chủ, hệ thống cũng có thể dự phòng các thành phần khác như:
• Ổ cứng.
• Bộ nguồn máy chủ.
• Bộ điều khiển lưu trữ.
• Card mạng.
• Thiết bị cân bằng tải.
• Switch và router.
• Hệ thống lưu trữ SAN hoặc NAS.
Các thành phần dự phòng cần được kiểm tra định kỳ để bảo đảm có thể tiếp quản khi sự cố thực tế xảy ra.
Phần mềm và dữ liệu dự phòng
Ứng dụng và cơ sở dữ liệu cần được triển khai trên nhiều máy chủ hoặc nhiều cụm xử lý khác nhau.
Dữ liệu có thể được sao chép liên tục từ hệ thống chính sang hệ thống dự phòng thông qua cơ chế replication. Tùy theo yêu cầu, quá trình đồng bộ có thể được thực hiện theo thời gian thực hoặc theo từng khoảng thời gian.
Khi bản chính gặp lỗi, kết nối sẽ tự động được chuyển sang bản sao đang hoạt động.
Các cơ chế thường được sử dụng gồm:
• Đồng bộ cơ sở dữ liệu.
• Cụm ứng dụng.
• Cân bằng tải.
• Container orchestration.
• Nhân bản máy ảo.
• Lưu trữ phân tán.
• Kiểm tra sức khỏe dịch vụ.
• Tự động khởi động lại ứng dụng.
Ngoài việc tạo bản sao, tổ chức cần bảo đảm dữ liệu giữa các hệ thống luôn nhất quán và không xảy ra xung đột khi chuyển đổi dự phòng.
Nguồn điện dự phòng
Nguồn điện là một thành phần quan trọng nhưng thường bị bỏ qua khi xây dựng hệ thống chịu lỗi.
Dù máy chủ và dữ liệu đã được nhân bản, toàn bộ hệ thống vẫn có thể ngừng hoạt động nếu tất cả thiết bị cùng sử dụng một nguồn điện duy nhất.
Các trung tâm dữ liệu thường sử dụng nhiều lớp nguồn điện dự phòng như:
• Bộ lưu điện UPS.
• Máy phát điện.
• Nhiều đường cấp điện độc lập.
• Bộ nguồn kép trên máy chủ.
• Hệ thống chuyển nguồn tự động.
UPS giúp duy trì nguồn điện trong thời gian ngắn khi điện lưới gặp sự cố. Máy phát điện sẽ tiếp tục cung cấp điện nếu thời gian mất điện kéo dài.
Các máy chủ quan trọng cũng có thể sử dụng hai bộ nguồn, mỗi bộ được kết nối với một đường điện riêng để hạn chế điểm lỗi đơn lẻ.
Hệ thống mạng dự phòng
Mạng chịu lỗi được thiết kế với nhiều đường truyền và thiết bị mạng thay thế.
Nếu một đường truyền, router hoặc switch gặp sự cố, dữ liệu sẽ tự động chuyển sang tuyến khác để tiếp tục đi đến đích.
Một kiến trúc mạng chịu lỗi có thể bao gồm:
• Hai hoặc nhiều nhà cung cấp Internet.
• Router dự phòng.
• Switch dự phòng.
• Nhiều card mạng trên máy chủ.
• Nhiều tuyến kết nối vật lý.
• Giao thức định tuyến tự động.
• Cân bằng tải mạng.
• Cơ chế kiểm tra trạng thái kết nối.
Các đường truyền dự phòng nên được bố trí độc lập. Nếu hai đường truyền cùng đi qua một hạ tầng vật lý, một sự cố tại tuyến cáp vẫn có thể làm cả hai kết nối ngừng hoạt động.
Hệ thống giám sát và tự động hóa
Giám sát là thành phần giúp hệ thống phát hiện sớm các dấu hiệu bất thường.
Các công cụ monitoring liên tục theo dõi tài nguyên, hiệu suất, trạng thái dịch vụ và khả năng kết nối. Khi phát hiện lỗi, hệ thống có thể tự động thực hiện các hành động như:
• Loại máy chủ lỗi khỏi cân bằng tải.
• Khởi động lại dịch vụ.
• Chuyển sang cơ sở dữ liệu dự phòng.
• Tạo thêm máy chủ mới.
• Gửi cảnh báo cho quản trị viên.
• Cách ly tài nguyên bất thường.
Nếu không có hệ thống giám sát chính xác, cơ chế failover có thể kích hoạt chậm hoặc không nhận biết được sự cố.
Backup và khôi phục dữ liệu
Fault Tolerance không thay thế hoàn toàn cho backup.
Dữ liệu được sao chép giữa các máy chủ có thể giúp hệ thống tiếp tục vận hành khi phần cứng gặp lỗi. Tuy nhiên, nếu dữ liệu bị xóa nhầm hoặc bị mã độc mã hóa, lỗi cũng có thể được đồng bộ sang tất cả các bản sao.
Vì vậy, tổ chức vẫn cần xây dựng hệ thống sao lưu độc lập, có nhiều phiên bản dữ liệu và được lưu tại những vị trí khác nhau.
Backup giúp khôi phục dữ liệu trong các trường hợp:
• Người dùng xóa nhầm dữ liệu.
• Dữ liệu bị ghi đè.
• Hệ thống bị tấn công mã độc.
• Cơ sở dữ liệu bị hỏng.
• Trung tâm dữ liệu gặp thảm họa.
• Các bản sao trực tuyến cùng bị ảnh hưởng.
Việc kết hợp Fault Tolerance với backup giúp hệ thống vừa duy trì hoạt động liên tục, vừa có khả năng phục hồi dữ liệu khi xảy ra sự cố nghiêm trọng.
Vai trò của fault tolerance trong khắc phục thảm họa
Fault Tolerance là một phần quan trọng trong chiến lược khắc phục thảm họa của doanh nghiệp.
Cơ chế chịu lỗi giúp dịch vụ tiếp tục vận hành khi một máy chủ, thiết bị lưu trữ, đường truyền hoặc nguồn điện gặp trục trặc. Tuy nhiên, nếu toàn bộ trung tâm dữ liệu bị ảnh hưởng bởi cháy nổ, thiên tai hoặc sự cố diện rộng, các tài nguyên dự phòng đặt cùng vị trí cũng có thể ngừng hoạt động.
Do đó, doanh nghiệp thường kết hợp hệ thống chịu lỗi tại chỗ với hạ tầng dự phòng ở trung tâm dữ liệu khác hoặc trên nền tảng đám mây.
Dữ liệu và ứng dụng quan trọng được sao chép đến vị trí độc lập. Khi hạ tầng chính không thể tiếp tục vận hành, hệ thống tại địa điểm dự phòng sẽ tiếp quản dịch vụ.
Một chiến lược đầy đủ có thể kết hợp:
• Máy chủ và thiết bị dự phòng tại chỗ.
• Sao chép dữ liệu sang khu vực khác.
• Backup ngoại vi hoặc trên đám mây.
• Kế hoạch chuyển đổi khi xảy ra thảm họa.
• Quy trình khôi phục dịch vụ.
• Kiểm thử định kỳ khả năng failover.
Nhờ kết hợp Fault Tolerance, High Availability, backup và Disaster Recovery, doanh nghiệp có thể giảm thời gian ngừng hoạt động, hạn chế mất dữ liệu và duy trì các dịch vụ quan trọng ngay cả khi hạ tầng CNTT gặp sự cố nghiêm trọng.