Clustering là một kiến trúc nhằm đảm bảo nâng cao khả năng sẵn sàng cho các hệ thống mạng máy tính. Clustering cho phép sử dụng nhiều máy chủ kết hợp với nhau tạo thành một cụm có khả năng chịu đựng hay chấp nhận sai sót (fault-tolerant) nhằm nâng cao độ sẵn sàng của hệ thống mạng. Cluster là một hệ thống bao gồm nhiều máy chủ được kết nối với nhau theo dạng song song hay phân tán và được sử dụng như một tài nguyên thống nhất.
Nếu một máy chủ ngừng hoạt động do bị sự cố hoặc để nâng cấp, bảo trì, thì toàn bộ công việc mà máy chủ này đảm nhận sẽ được tự động chuyển sang cho một máy chủ khác (trong cùng một cluster) mà không làm cho hoạt động của hệ thống bị ngắt hay gián đoạn. Quá trình này gọi là “fail-over”; và việc phục hồi tài nguyên của một máy chủ trong hệ thống (cluster) được gọi là “fail-back”.
Việc thiết kế và lắp đặt các cluster cần thoả mãn các yêu cầu sau:
Yêu cầu về tính sẵn sàng cao (High availability). Các tài nguyên mạng phải luôn sẵn sàng trong khả năng cao nhất để cung cấp và phục vụ các người dùng cuối và giảm thiểu sự ngưng hoạt động hệ thống ngoài ý muốn.
Yêu cầu về độ tin cậy cao (reliability). Độ tin cậy cao của cluster được hiểu là khả năng giảm thiểu tần số xảy ra các sự cố, và nâng cao khả năng chịu đựng sai sót của hệ thống.
Yêu cầu về khả năng mở rộng được (scalability). Hệ thống phải có khả năng dễ dàng cho việc nâng cấp, mở rộng trong tương lai. Việc nâng cấp mở rộng bao hàm cả việc thêm các thiết bị, máy tính vào hệ thống để nâng cao chất lượng dịch vụ, cũng như việc thêm số lượng người dùng, thêm ứng dụng, dịch vụ và thêm các tài nguyên mạng khác.
Ba yêu cầu trên được gọi tắt là RAS (Reliability-Availability-Scalability), những hệ thống đáp ứng được ba yêu cầu trên được gọi là hệ thống RAS (cần phân biệt với Remote Access Service là dịch vụ truy cập từ xa).
Kỹ thuật clustering được chia làm 2 loại gồm Cluster và Network Load Balancing (NLB)
Trong Cluster tùy theo nhu cầu mà chúng ta có thể triển khai nhiều ứng dụng trên cùng 1 cluster hay cài đặt trên mỗi node 1 ứng dụng, nói chung cấu trúc của 1 cluster không cố định nhưng chủ yếu chúng ta thấy hữu ích nhất là các loại cấu trúc sau:
- Thứ 1: Nếu ta triển khai 2 ứng dụng stateful trên hệ thống cluster thì có 1 phương pháp đơn giản là cài đặt cả 2 ứng dụng ấy vào mỗi node của cluster. Ở cấu trúc này thì 2 ứng dụng trên cùng 1 server do đó nếu ứng này bị lỗi thì sẽ ảnh hưởng đến ứng dụng kia, hiệu quả của hệ thống cluster thấp.
- Thứ 2: Tạo 2 hệ thống cluster riêng lẻ, trong mỗi cluster cài đặt duy nhất 1 ứng dụng. Ở cấu trúc này thì hệ thống sẽ hiệu quả hơn nếu có ứng dụng nào đó bị lỗi thì cũng không ảnh hưởng đến các ứng dụng khác. Nhưng chi phí đầu tư cho kiểu này rất cao bởi vì số lượng các node cho mỗi ứng dụng nhiều hơn loại 1.
- Thứ 3: Triển khai cả 2 ứng dụng trên cùng 1 cluster, mỗi node cài 1 ứng dụng nhưng khác với loại 1 là sẽ có 1 cluster làm nhiệm vụ backup. Cụ thể như hình 3 cho ta thấy hệ thống này có 1 node passive dùng làm backup và cài cả 2 ứng dụng của node 1 và node 2 (2 node Active). Nếu 1 trong 2 node này bị lỗi thì node passive sẽ thay thế chức năng của node bị lỗi. Hệ thống này có hiệu quả cao hơn 2 loại trước
Mỗi máy chủ trong cluster được gọi là một node (cluster node), và có thể được thiết lập ở chế độ chủ động (active) hay thụ động (passive). Khi một node ở chế dộ chủ động, nó sẽ chủ động xử lý các yêu cầu. Khi một node là thụ động, nó sẽ nằm ở chế độ dự phòng nóng (stanby) chờ để sẵn sàng thay thế cho một node khác nếu bị hỏng.
Trong một cluster có nhiều node có thể kết hợp cả node chủ động và node thụ động. Trong những mô hình loại này việc quyết định một node được cấu hình là chủ động hay thụ động rất quan trọng. Để hiểu lý do tại sao, hãy xem xét các tình huống sau:
- Nếu một node chủ động bị sự cố và có một node thụ động đang sẵn sàng, các ứng dụng và dịch vụ đang chạy trên node hỏng có thể lập tức được chuyển sang node thụ động. Vì máy chủ đóng vai trò node thụ động hiện tại chưa chạy ứng dụng hay dịch vụ gì cả nên nó có thể gánh toàn bộ công việc của máy chủ hỏng mà không ảnh hưởng gì đến các ứng dụng và dịch vụ cung cấp cho người dùng cuối (Ngầm định rằng các các máy chủ trong cluster có cấu trúc phần cứng giống nhau).
- Nếu tất cả các máy chủ trong cluster là chủ động và có một node bị sự cố, các ứng dụng và dịch vụ đang chạy trên máy chủ hỏng sẽ phải chuyển sang một máy chủ khác cũng đóng vai trò node chủ động. Vì là node chủ động nên bình thường máy chủ này cũng phải đảm nhận một số ứng dụng hay dịch vụ gì đó, khi có sự cố xảy ra thì nó sẽ phải gánh thêm công việc của máy chủ hỏng. Do vậy để đảm bảo hệ thống hoạt động bình thường kể cả khi có sự cố thì máy chủ trong cluster cần phải có cấu hình dư ra đủ để có thể gánh thêm khối lượng công việc của máy chủ khác khi cần.
Trong cấu trúc cluster mà mỗi node chủ động được dự phòng bởi một node thụ động, các máy chủ cần có cấu hình sao cho với khối lượng công việc trung bình chúng sử dụng hết khoảng 50% CPU và dung lượng bộ nhớ.
Trong cấu trúc cluster mà số node chủ động nhiều hơn số node bị động, các máy chủ cần có cấu hình tài nguyên CPU và bộ nhớ mạnh hơn nữa để có thể xử lý được khối lượng công việc cần thiết khi một node nào đó bị hỏng.
Các node trong một cluster thường là một bộ phận của cùng một vùng (domain) và có thể được cấu hình là máy điều khiển vùng (domain controllers) hay máy chủ thành viên. Lý tưởng nhất là mỗi cluster nhiều node có ít nhất hai node làm máy điều khiển vùng và đảm nhiệm việc failover đối với những dịch vụ vùng thiết yếu. Nếu không như vậy thì khả năng sẵn sàng của các tài nguyên trên cluster sẽ bị phụ thuộc vào khả năng sẵn sàng của các máy điều khiển trong domain.
Khi một node hay một application trong Cluster bị fail, Server Cluster có thể phản ứng bằng cách khởi động lại application bị lỗi hay phân tán công việc từ node bị fail tới các node khác còn hoạt động trong Cluster đó.
Cluster service kiểm tra tình trạng không hoạt động của các resource riêng biệt hay một node, và tự động di chuyển hay khởi động lại các ứng dụng, dữ liệu và file resource tới một node còn hoạt động trong Cluster. Quá trình này cho phép các resource như là database, file share và application duy trì tính sẵn sàng cao cho các ứng dụng của user và client. Server Cluster đưa ra 2 cơ chế kiểm tra tình trạng không hoạt động khác nhau:
Detect Node Failure: Một cách định kỳ, mỗi node trao đổi các gói message với những node khác trong Cluster sử dụng private cluster network. Những message này được gọi là Heartbeat. Sự trao đổi Heartbeat cho phép mỗi node kiểm tra tính sẵng sàng của các node khác và các ứng dụng của chúng. Nếu một server bị fail trong việc phản hồi 1 Heartbeat, các server còn hoạt động bắt đầu một quá trình Failover để đàm phán quyền sở hữu đối với các tài nguyên và ứng dụng của node bị fail. Việc đàm phán này sử dụng Challengevà Defense protocol.
Việc bị fail trong quá trình phản hồi Heartbeat có thể xảy ra trong nhiều sự kiện như là computer failure, network interface failure, network failure, hay trong lúc hoạt động cao bất thường nào đó. Thông thường, khi tất cả các node giao tiếp với nhau, Configuration Database Manager gửi Global Configuration Database update tới mỗi node. Tuy nhiên, khi fail trong quá trình trao đổi heartbeat xảy ra, Log Manager cũng lưu lại cấu hình database thay đổi tới Quorum Resource. Nó đảm bảo các node còn hoạt động có thể truy cập thông tin cấu hình Cluster mới nhất và dữ liệu registry cục bộ trên node trong quá trình phục hồi
Detect Resource Failure: Failover Manager và Resource Monitors làm việc cùng với nhau để dò tìm và khôi phục resource bị fail. Resource Monitors theo dõi trạng thái của resource bằng cách kiểm tra định kỳ các resource sử dụng Resource DLLs. Việc kiểm tra vòng gồm hai bước, một query LookAlive lướt qua và một query lâu hơn, cuối cùng - IsAlive. KhiResource Monitor dò tìm một resource bị fail, nó thông báo cho Failover Manager và tiếp tục giám sát resource này.
Failover Manager duy trì trạng thái của các resource và resource group. Nó cũng chịu trách nhiệm thực hiện việc phục hồi khi một resource bị fail và sẽ yêu cầu Resource Monitor phản hồi tới user tình trạng hoạt động hay không hoạt động của resource.
Sau khi resource bị fail được tìm thấy, Failover Manager có thể thực hiện việc phục hồi bằng cách khởi động lại một resource và các resource hay di chuyển toàn bộ resource group tới một node khác. Công việc phục hồi xác định đã được thực hiện bởi resource và resource group properties và node availability.
Trong quá trình failover, một resource group được coi như là một failover unit, để đảm bảo resource được phục hồi đúng. Khi một resource được phục hồi từ trạng thái fail,Resource Monitor thông báo tới Failover Manager để tự động thực hiện quá trình failback các resource group dựa trên cấu hình của resource group failback properties.
Heartbeat: Là một UDP packet chuyển đổi giữa các node mỗi 1.2 giây một lần để xác định mỗi node trong Cluster vẫn hoạt động. Nếu một node thiếu hụt liên tiếp 5 heartbeat, node đó sẽ chuẩn bị một quá trình regroup event để đảm bảo rằng tất cả các node đi tới một sự nhất quán danh sách các node còn đang hoạt động.
Server Cluster network có thể là private ( chỉ có sự giao tiếp giữa các node với nhau), public ( giao tiếp giữa client với node), hay mixed (cả sự giao tiếp giữa các node và sự giao tiếp giữa client với node). Heartbeat được giao tiếp qua tất cả các loại network, tuy nhiên việc theo dõi heartbeat và cách mà Cluster thể hiện các heartbeat bị lỗi dựa trên các kiểu network sau :
- Trên private hay mixed network, cả hai đều có sự giao tiếp giữa các node, heartbeat được theo dõi để xác định node có hoạt động trong Cluster hay không.
- Trên public network, chỉ có sự giao tiếp giữa client với node, heartbeat được theo dõi chỉ để xác định network adapter của node có hoạt động hay không.
Regroup event: Nếu một node thiếu hụt liên tiếp 5 heartbeat, một quá trình regroup event được xảy ra. Nếu node vẫn duy trì tính trạng không thể phản hồi, node đó sẽ được loại bỏ khỏi danh sách các node hoạt động. Nếu node không phản hổi này đang sở hữu một quorum resource, các node còn lại cũng bắt đầu một quá trình đàm phán quorum. Sau đó, quá trình failover được bắt đầu.
Quá trình đàm phán quorum: Quá trình đàm phán quorum xảy ra khi một node đang sở hữu một quorum resource bị lỗi hay không hoạt động, và các node còn lại sẽ xác định node nào sẽ giữ quyền sở hữu quorum resource. Mục đích của quá trình đàm phán quorum là tại một thời điểm đảm bảo rằng chỉ một node duy nhất được sở hữu quorum resource.
Việc chỉ cho một node sở hữu quorum resource là rất quan trọng bởi vì nếu tất cả các giao tiếp giữa 2 hay nhiều node bị lỗi, nó có khả năng chia Cluster thành 2 hay nhiều phần riêng biệt để giữ cho nó vần tiếp tục hoạt động (split brain). Server Cluster ngăn ngừa nó bằng cách chỉ cho phép duy nhất một Cluster tách ra này có chứa node đang sở hữu quorum resource tiếp tục hoạt động như một Cluster. Bất kỳ node nào không thể giao tiếp với node đang sở hữu quorum resource, thì node đó sẽ không còn là node thành viên trong Cluster.
Cách cluster giữ cho các resource group luôn sẵn sàng: Cluster giữ cho các resource group luôn sẵn sàng bằng cách theo dõi trạng thái của các resource, mang các resource online, và tiến hành failover.
Theo dõi trạng thái các resource: Resource Monitor đưa ra 2 cách theo dõi trạng thái các resource trên node mà nó giám sát : Look Alive (resource xuất hiện là online) và IsAlive (kiểm tra chi tiết trạng thái online và hoạt động của resource là đúng chức năng).
Cách Failover xảy ra: Quá trình failover xảy ra khi một group hay một node đang sở hữu resource bị lỗi. Một resource bị lỗi có thể là lý do cho một group fail nếu ta cấu hình Affect the group cho resource đó.
Failover có hai dạng: Resource failure hay Group failure và Node failure hay mất sự giao tiếp giữa các node.
Resource failure và Group failure:Khi một resource bị hỏng quá trình sau sẽ xảy ra:
Resource Monitor dò tìm lỗi qua Looks Alive hay Is Alive hoặc qua một sự kiện được ghi bởi resource đó. Resource Monitor gọi điểm vào Is Alive của resource DLL để xác định resource đó bị hỏng
Nếu Is Alive bị lỗi, trạng thái resource chuyển thành fail
Nếu ta cấu hình cho resource khởi động lại khi bị lỗi, Failover Manager cố gắn khởi động lại resource để mang nó online trở lại. Nếu sự cố gắng mang resource online không đạt được hay vượt qua ngưỡng hay thời gian cho phép khởi động lại, Resource Monitor stop resource này.
Thông qua Resource Monitor, Failover Manager gọi Terminal entry point của resource DLL
Nếu resource này được cấu hình là Affect the group, quá trình làm việc được tiếp tục, ngược lại, nó sẽ kết thúc mà không có hoạt động nào khác. Khi cấu hình là Affect the group, Failover Manager trên các node trong cluster làm việc cùng với nhau để tái chỉ định quyền sở hữu cho group đó.
Trên node mà resource bị hỏng, Failover Manager kết thúc resource đó và các resource liên quan với nó
Failover Manager trên node mà resource bị hỏng thông báo cho Failover Manager trên node sẽ sở hữu resoure đó và cũng thông báo với Failover Manager trên tất cả các node khác cho sự thay đổi này
Nếu bất kỳ resource nào được cấu hình lưu thông tin cấu hình trên cục bộ registry, Checkpoint Manager sẽ restore bản sao registry cho resource đó từ quorum resource
Node mà Failover Manager sẽ chuyển resource tới là duy nhất, sử dụng danh sách phụ thuộc để xác định thứ tự đúng
Node mới sở hữu group sẽ điều khiển các resource của group đó thông qua Resource Monitor tương ứng
Node failure và mất sự giao tiếp giữa các node: Failover xảy ra khi một node bị hỏng khác với Failover xảy ra khi một resource bị hỏng. Trong Clustering, một node được coi là bị hỏng nếu nó mất sự giao tiếp với các node khác.
Nếu một node mất liên tiếp 5 heartbeat, nó được coi là bị hỏng và một quá trình regroup event được xảy ra. Sau khi một node bị hỏng, các node còn lại tiến hành đàm phán cho việc sở hữu các resource group. Failover Manager trên các node còn sử dụng được xác định quyền sở hữu các resource group dựa trên :
Các node mà ta chỉ định có khả năng sở hữu các resouce group đó.
Thứ tự được chỉ định trong danh sách các node ưu tiên
Cách Failback xảy ra: Failback là quá trình Cluster service chuyển các resource group trả về node thích hợp hơn sau khi node này online trở lại.
Node mà một group được trả về chuẩn bị một quá trình failback. Failover Manager trên node đó tương tác với Failover Manager trên node đang sở hữu group và tiến hành đàm phán sau đó chuyển quyền sở hữu resource group trở về node thích hợp hơn.
Cung cấp tính sẵn sàng cao
Hệ thống Server Cluster cung cấp tính luôn sẵng sàng cho các ứng dụng và các service ngay cả khi các thành phần hardware hay software bị lỗi.
Khi một server trong Cluster bị fail, quyền sở hữu tài nguyên của nó như là các ổ đĩa và IP address tự động chuyển tới một server khác còn hoạt động.
Cung cấp khả năng dễ mở rộng
Khi các ứng dụng trong Cluster sử dụng tài nguyên hệ thống vượt quá khả năng của nó, ta có thể dễ dàng add thêm node vào cluster để đáp ứng nhu cầu truy cập hay dễ dàng thêm vào nhiều bộ xử lý (8 CPU cho Windows Server 2003 Enterprise Edition và 32 CPU cho Windows Server Datacenter Edition) hoặc thêm bộ nhớ RAM (8GB cho Windows Server 2003 Enterprise Edition và 64GB cho Datacenter Edititon).
Cung cấp sự dễ dàng trong quản lý
Ta có thể dùng Cluster Administrator tools để quản lý một Cluster như là một hệ thống đơn và quản lý một ứng dụng khi chúng chạy trên một server đơn
Có thể di chuyển các ứng dụng giữa các server khác nhau bên trong một Cluster.
Có thể chuyển đổi lượng công việc giữa các server hay đặt server ở trạng thái không hoạt động cho kế hoạch bảo trì.
» Tin mới nhất:
» Các tin khác: