Tính sẵn sàng cao (High Availability) là gì?

By | 4 January, 2019

Giới thiệu

Với nhu cầu ngày càng tăng đối với các cơ sở hạ tầng đáng tin cậy và hiệu quả được thiết kế để phục vụ các hệ thống quan trọng, các điều khoản về khả năng mở rộng và tính sẵn sàng cao (High Availability hay HA) không thể phổ biến hơn. Mặc dù xử lý tải hệ thống tăng là mối quan tâm chung, việc giảm thời gian downtime và loại bỏ các sự cố nhỏ cũng quan trọng không kém. Tính sẵn sàng cao là chất lượng của thiết kế cơ sở hạ tầng ở quy mô giải quyết những cân vấn này.

Trong hướng dẫn này, chúng ta sẽ thảo luận về ý nghĩa chính xác của tính sẵn sàng cao và cách nó có thể cải thiện độ tin cậy của cơ sở hạ tầng của bạn.

Tính sẵn sàng cao là gì?

Trong điện toán, thuật ngữ sẵn có được sử dụng để mô tả khoảng thời gian khi có dịch vụ, cũng như thời gian mà hệ thống yêu cầu để đáp ứng yêu cầu của người dùng. Tính sẵn sàng cao là chất lượng của một hệ thống hoặc thành phần đảm bảo hiệu suất hoạt động cao trong một khoảng thời gian nhất định.

Cách đo lường tính sẵn sàng

Tính khả dụng thường được biểu thị bằng tỷ lệ phần trăm cho biết thời gian hoạt động được mong đợi từ một hệ thống hoặc thành phần cụ thể trong một khoảng thời gian nhất định, trong đó giá trị 100% sẽ chỉ ra rằng hệ thống không bao giờ bị lỗi. Chẳng hạn, một hệ thống đảm bảo 99% khả dụng trong khoảng thời gian một năm có thể có tới 3,65 ngày ngừng hoạt động (1%).

Các giá trị này được tính toán dựa trên một số yếu tố, bao gồm cả thời gian bảo trì theo lịch trình và theo lịch trình, cũng như thời gian để phục hồi sau sự cố hệ thống có thể xảy ra.

Làm thế nào để sẵn sàng cao hoạt động?

Chức năng sẵn sàng cao như một cơ chế phản hồi lỗi của cơ sở hạ tầng. Cách thức hoạt động của nó khá đơn giản về mặt khái niệm nhưng thường đòi hỏi một số phần mềm và cấu hình chuyên dụng.

Khi nào tính sẵn sàng cao quan trọng?

Khi thiết lập hệ thống production, giảm thiểu thời gian chết và gián đoạn dịch vụ thường là ưu tiên cao. Bất kể thế nào hệ thống và phần mềm của bạn đáng tin cậy đến mức nào thì vẫn có thể xảy ra các vấn đề làm lỗi các ứng dụng của bạn hoặc máy chủ của bạn. Thực hiện tính sẵn sàng cao cho cơ sở hạ tầng của bạn là một chiến lược hữu ích để giảm tác động của các loại sự kiện này. Các hệ thống khả dụng cao có thể tự động phục hồi từ lỗi máy chủ hoặc các dịch vụ hoặc ứng dụng của bạn.

Điều gì làm cho một hệ thống có tính sẵn cao?

Một trong những mục tiêu của tính sẵn sàng cao là loại bỏ các single point of failure (có thể hiểu là 1 điểm lỗi nhỏ) trong cơ sở hạ tầng của bạn. Một single point of failure có thể gây ra sự gián đoạn dịch vụ nếu nó không khả dụng. Như vậy, bất kỳ thành phần nào đó là một điều kiện tiên quyết cho các chức năng phù hợp của ứng dụng của bạn mà không có khả năng dự phòng được coi là một single point of failure.

Để loại bỏ các single point of failure, mỗi phần nhỏ trong ứng dụng của bạn cần có sự chuẩn bị dự phòng. Ví dụ, hãy tưởng tượng bạn có một cơ sở hạ tầng bao gồm hai máy chủ web dự phòng giống hệt nhau phía sau cân bằng tải. Lưu lượng truy cập đến từ các máy khách sẽ được phân bổ đều giữa các máy chủ web, nhưng nếu một trong các máy chủ bị hỏng, cân bằng tải sẽ chuyển hướng tất cả lưu lượng truy cập đến máy chủ đang running còn lại.

Lớp máy chủ web trong kịch bản này không phải là một single point of failure bởi vì:

  • Các thành phần dự phòng có cùng một nhiệm vụ được đưa ra
  • Cơ chế trên cùng của lớp này (bộ cân bằng tải) có thể phát hiện các lỗi trong các thành phần và điều chỉnh hành vi của nó để phục hồi kịp thời

Nhưng điều gì xảy ra nếu bộ cân bằng tải bị offline (gặp sự cố hay gì gì đó)?

Với kịch bản được mô tả, điều này không phổ biến trong cuộc sống thực, bản thân lớp cân bằng tải vẫn là một single point of failure. Tuy nhiên, việc loại bỏ single point of failure có thể là một thách thức; mặc dù bạn có thể dễ dàng định cấu hình bộ cân bằng tải bổ sung để đạt được dự phòng, nhưng không có điểm rõ ràng nào trên bộ cân bằng tải để thực hiện phát hiện và phục hồi lỗi.

Dự phòng một mình không thể đảm bảo tính sẵn sàng cao. Phải có một cơ chế để phát hiện các lỗi và thực hiện hành động khi một trong các thành phần của hệ thống của bạn không khả dụng.

Phát hiện lỗi và phục hồi cho các hệ thống dự phòng có thể được thực hiện bằng cách sử dụng cách tiếp cận từ trên xuống dưới: lớp trên cùng chịu trách nhiệm giám sát lớp ngay bên dưới lớp đối với các lỗi. Trong kịch bản ví dụ trước của chúng ta, bộ cân bằng tải là lớp trên cùng. Nếu một trong các máy chủ web (lớp dưới cùng) không khả dụng, bộ cân bằng tải sẽ ngừng chuyển hướng yêu cầu cho máy chủ cụ thể đó.

sơ đồ cân bằng tải

Cách tiếp cận này có xu hướng đơn giản hơn, nhưng nó có những hạn chế: sẽ có một điểm trong cơ sở hạ tầng của bạn, nơi một lớp trên cùng không tồn tại hoặc nằm ngoài tầm với, đó là trường hợp của lớp cân bằng tải. Tạo một dịch vụ phát hiện lỗi cho bộ cân bằng tải trong một máy chủ bên ngoài sẽ chỉ tạo ra một single point of failure mới.Với một kịch bản như vậy, một cách tiếp cận phân tán là cần thiết. Nhiều nút dự phòng phải được kết nối với nhau thành một cụm trong đó mỗi nút phải có khả năng phát hiện và phục hồi lỗi như nhau.

Sơ đồ 02: Cụm / Phân phối

Tuy nhiên, đối với trường hợp cân bằng tải, có một trường hợp khác xảy ra, do cách thức hoạt động của nameserver. Phục hồi từ lỗi cân bằng tải thường có nghĩa là chuyển đổi dự phòng sang bộ cân bằng tải dự phòng, ngụ ý rằng phải thay đổi DNS để trỏ tên miền đến địa chỉ IP của bộ cân bằng tải dự phòng. Một thay đổi như thế này có thể mất một lượng thời gian đáng kể để được tuyên truyền trên Internet, điều này sẽ gây ra sự cố nghiêm trọng cho hệ thống này.

Một giải pháp khả thi là sử dụng cân bằng tải vòng tròn DNS . Tuy nhiên, cách tiếp cận này không đáng tin cậy vì nó để lại phần failover ở phía ứng dụng client-side.

Một giải pháp mạnh mẽ và đáng tin cậy hơn là sử dụng các hệ thống cho phép ánh xạ lại địa chỉ IP linh hoạt, chẳng hạn như floating IP . Việc ánh xạ lại địa chỉ IP theo yêu cầu sẽ loại bỏ các vấn đề lan truyền và bộ đệm trong các thay đổi DNS bằng cách cung cấp một địa chỉ IP static có thể dễ dàng được ánh xạ lại khi cần. Tên miền có thể vẫn được liên kết với cùng một địa chỉ IP, trong khi chính địa chỉ IP được di chuyển giữa các máy chủ.

Đây là cách cơ sở hạ tầng khả dụng cao sử dụng floating IP trông như thế nào:

Sơ đồ 03:  floating IP

Những thành phần hệ thống nào được yêu cầu cần tính sẵn sàng cao?

Có một số thành phần phải được xem xét cẩn thận để thực hiện tính sẵn sàng cao trong thực tế. Nhiều hơn một triển khai phần mềm, tính sẵn sàng cao phụ thuộc vào các yếu tố như:

  • Môi trường: nếu tất cả các máy chủ của bạn được đặt trong cùng một khu vực địa lý, một điều kiện môi trường như động đất hoặc lũ lụt có thể làm hỏng toàn bộ hệ thống của bạn. Có máy chủ dự phòng ở các trung tâm dữ liệu và khu vực địa lý khác nhau sẽ tăng độ tin cậy.
  • Phần cứng: các máy chủ khả dụng cao nên có khả năng phục hồi khi mất điện và lỗi phần cứng, bao gồm cả đĩa cứng và giao diện mạng.
  • Phần mềm: toàn bộ thành phần của phần mềm, bao gồm cả hệ điều hành và chính ứng dụng, phải được chuẩn bị để xử lý lỗi không mong muốn có khả năng yêu cầu khởi động lại hệ thống …
  • Dữ liệu: mất dữ liệu và sự không nhất quán có thể do một số yếu tố gây ra và nó không bị hạn chế đối với các lỗi đĩa cứng. Các hệ thống có tính sẵn sàng cao phải tính đến sự an toàn dữ liệu trong trường hợp xảy ra lỗi.
  • Mạng: mất điện ngoài dự kiến ​​đại diện cho một single point of failure khác đối với các hệ thống có tính sẵn sàng cao. Điều quan trọng là một chiến lược mạng dự phòng được đưa ra cho những thất bại có thể xảy ra.

Phần mềm nào có thể được sử dụng để cấu hình tính sẵn sàng cao?

Mỗi lớp của một hệ thống có tính sẵn sàng cao sẽ có các nhu cầu khác nhau về phần mềm và cấu hình. Tuy nhiên, ở cấp độ ứng dụng, bộ cân bằng tải đại diện cho một phần mềm thiết yếu để tạo ra bất kỳ thiết lập có tính sẵn sàng cao nào.

HAProxy (Proxy khả dụng cao) là một lựa chọn phổ biến để cân bằng tải, vì nó có thể xử lý cân bằng tải ở nhiều lớp và cho các loại máy chủ khác nhau, bao gồm cả máy chủ cơ sở dữ liệu .

Di chuyển vào trong các thành phần hệ thống, điều quan trọng là phải thực hiện một giải pháp dự phòng đáng tin cậy cho điểm vào ứng dụng của bạn, thông thường là bộ cân bằng tải. Để loại bỏ single point of failure này, như đã đề cập trước đó, chúng ta cần triển khai một cụm các bộ cân bằng tải phía sau floating IP. Corosync và Pacemaker là những lựa chọn phổ biến để tạo ra một thiết lập như vậy, trên cả máy chủ Ubuntu và CentOS .

Phần kết luận

Tính sẵn sàng cao là một phần rất quan trọng trong các hệ thống, tập trung vào việc đảm bảo rằng một hệ thống hoặc thành phần có hiệu suất hoạt động cao trong một khoảng thời gian nhất định. Thoạt nhìn, việc thực hiện nó có vẻ khá phức tạp; tuy nhiên, nó có thể mang lại lợi ích to lớn cho các hệ thống đòi hỏi độ tin cậy tăng.