Giới thiệu về clustering

1. Tổng quan về Clustering

====Khái niệm

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. Clustering bao gồm nhiều server riêng lẻ được liên kết và hoạt động cùng với nhau trong một hệ thống. Các server này giao tiếp với nhau để trao đổi thông tin và giao tiếp với mạng bên ngoài để thực hiện các yêu cầu. Khi có lỗi xảy ra các dịch vụ trong cluster hoạt động tương tác với nhau để duy trì tính ổn định và độ sẵn sàng cao cho hệ thống.

cluster-1

 

Hình 1: Mô hình Clustering

====Cấu trúc Clustering

Tùy theo nhu cầu mà chúng ta có thể triển khai nhiều dịch vụ trên cùng 1 cluster hay cài đặt trên mỗi node 1 dịch vụ, 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 như

o Dịch vụ chạy song song: Triển khai 2 dịch vụ trên hệ thống cluster thì có 1 phương pháp đơn giản là cài đặt cả 2 dịch vụ ấy vào mỗi node của cluster . Ở cấu trúc này thì 2 dịch vụ trên cùng 1 server do đó nếu ứng này bị lỗi thì sẽ ảnh hưởng đến dịch vụ kia, hiệu quả của hệ thống cluster thấp

cluster-2

Hình 2: Dịch vụ chạy song song trên mỗi node

0 Cluster riêng lẻ: Tạo 2 hệ thống cluster riêng lẻ, trong mỗi cluster cài đặt duy nhất 1 dịch vụ. Ở cấu trúc này thì hệ thống sẽ hiệu quả hơn nếu có dịch vụ nào đó bị lỗi thì cũng không ảnh hưởng đến các dịch vụ 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 dịch vụ nhiều hơn loại a ở trên.

cluster-3

 Hình 3: Hệ thống Clustering chứa 2 dịch vụ khác nhau

o Dịch vụ dự phòng: Triển khai cả 2 dịch vụ trên cùng 1 cluster, mỗi node cài 1 dịch vụ 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 cho ta thấy hệ thống này có 1 node passive dùng làm backup và cài cả 2 dịch vụ 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.

cluster-4

Hình 4: Hai node active được dự phòng bởi 1 node passive

2. Phân loại Clustering

Kỹ thuật clustering được chia thành hai loại là Cluster và Network Load Balancing

====Cluster

Được dùng cho các ứng dụng hoạt động thường xuyên trong thời gian dài bao gồm các database server hay còn gọi là các ứng dụng stateful applications. Tất cả các node trong cluster dùng chung một nơi lưu trữ dữ liệu có thể sử dụng công nghệ SCSI (Small Computer System Interface) hay Storage Area Network (SAN) chi tiết về SAN sẽ được trình bày trong chương tiếp theo.

====Network Load Balancing

Network Load Balancing(NLB) là một loại khác của kỹ thuật clustering có khả năng chia tải và nâng cao khả năng chịu lỗi của hệ thống. Được dùng cho các ứng dụng hoạt động không tiên tục như File tranfer protocol (FTP) hay Virtual Private Network (VPN). Các node trong cluster không dùng chung một nơi lưu trữ cơ sở dữ liệu cho nên cần phải có quá trình đồng bộ hóa (replication) dữ liệu giữa các nơi lưu trữ, số lượng node càng nhiều thì thời gian cho việc đồng bộ càng lâu.

Mỗi node trong nhóm có thể định ra mức tải mà nó sẽ xử lý hoặc tải có thể phân phối một cách đồng đều giữa các node. Nhờ sử dụng việc phân phối tải này, mỗi server sẽ lựa chọn và xử lý một phần yêu cầu. Tải do các client gửi đến được phân phối sao cho mỗi server nhận được số lượng các yêu cầu theo đúng phần tải đã định của nó. Sự cân bằng tải này có thể điều chỉnh động khi các host tham gia vào hoặc rời khỏi nhóm.

Các node trong nhóm cân bằng tải phát đi một bản tin đặc biệt thông báo trạng thái hoạt động của nó (heartbeat message) tới các node khác trong nhóm đồng thời nghe bản tin này từ các node khác. Nếu một node trong nhóm gặp sự cố, các node còn lại sẽ điều chỉnh và tái phân phối lại tải để duy trì việc cung cấp dịch vụ một cách liên tục cho các client.

NLB sử dụng thuật toán lọc phân tán hoàn toàn để ánh xạ các client đến các node trong nhóm. Thuật toán này cho phép các node trong nhóm đưa ra các quyết định cân bằng tải một cách độc lập và nhanh chóng cho từng gói đến. Nó được tối ưu hoá để cung cấp khả năng cân bằng tải một cách thống kê đối với một số lượng lớn các yêu cầu nhỏ do vô số client tạo ra.

Một điểm cần lưu ý là cả cluster và network load balancing đều có khả năng cân bằng tải và có khả năng chịu lỗi (failover) cho các dịch vụ. Tuy nhiên sự khác biệt trong hoạt động đó là khi một node trong cluster xảy ra sự cố thì server clustering sẽ loại bỏ node đó ra và request từ client sẽ không được chuyển tới node này cho đến khi nào node khôi phục lại trạng thái hoạt động bình thường. Trong khi đối với network load balancing thì không có cơ chế này.

3. Nguyên tắc hoạt động của Clustering

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ế độ 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 (standby) 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:

o 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.

o 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 thuờ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.

Trên đây là những khái niệm tổng quát về Clustering. Trong cái bài viết tiếp theo, mình sẽ giới thiệu các giải pháp Clustering (phần mềm & phần cứng) để có thể hiểu rõ hơn.

 

Bình luận