(Post 28/09/2010) Chúng ta đều biết các máy
chủ là trái tim của của mạng máy tính, nếu máy chủ mạng hỏng, hoạt động
của hệ thống sẽ bị ngưng trệ. Điều đáng tiếc là dù các hãng sản xuất đã
cố gắng làm mọi cách để nâng cao chất lượng của thiết bị, nhưng những
hỏng hóc đối với các thiết bị mạng nói chung và các máy chủ nói riêng
là điều không thể tránh khỏi. Do vậy, vấn đề đặt ra là cần có một giải
pháp để đảm bảo cho hệ thống vẫn hoạt động tốt ngay cả khi có sự cố xảy
ra đối với máy chủ mạng, và công nghệ clustering là câu trả lời cho vấn
đề này. Đề tài này giới thiệu nguyên lý, phân tích và triển khai một số
giải pháp clustering đang được áp dụng cho các hệ thống mạng máy tính
lớn với hi vọng có thể giúp chúng ta hiểu rõ hơn về công nghệ tưởng như
đơn giản nhưng thực tế khá phức tạp này.
1 Cluster là gì?
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)
-Cluster: được dùng cho các ứng dụng
Stateful applications (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 như là Microsoft MySQL Server, Microsoft
Exchange Server, File and Print Server… Tất cả các node trong Cluster
dùng chung 1 nơi lưu trữ dữ liệu có thể dùng công nghệ SCSI hoặc Storage
Area Network (SAN). Windows Sever 2003 Enterprise và Datacenter hỗ trợ
cluster lên đến 8 node trong khi đó Windows 2000 Advance Server hỗ trợ
2 node còn Windows 2000 Datacenter Server được 4 node.
-NLB (Cân bằng tải mạng): 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 tốt hơn. Được dùng cho các ứng dụng Stateless
applications (các ứng dụng hoạt động mang tính nhất thời) như Web, File
Tranfer Protocol (FTP), Virtual Private Network (VPN), DHCP…Mỗi node phải
dùng riêng một nơi lưu trữ cục bộ (Local Storage) cho nên cần phải có
quá trình đồng bộ hóa (replication) dữ liệu ở mỗi nơi lưu trữ, số lượng
node càng nhiều thì thời gian cho việc replication càng lâu chính vì điều
này nên ta không nên triển khai các ứng dụng Stateful trên kỹ thuật NLB
này nhằm đảm bảo tính chính xác của dữ liệu. Đề tài không nói chi tiết
về kỹ thuật này.
Note: Cũng cần chú ý rằng hiệu quả hoạt
động của hệ thống Clustering phụ thuộc vào sự tương thích giữa các ứng
dụng và dịch vụ, giữa phần cứng và phần mềm, ta không thể triển khai cluster
hay NLB khi các node sử dụng hệ điều hành (HĐH) khác nhau dù cho HĐH đó
có hỗ trợ hay không. Ngoài ra, kỹ thuật clustering không thể chống lại
các sự cố xảy ra do virus, sai sót của phần mềm hay các sai sót do người
sử dụng. Để chống lại các sự cố này cần xây dựng một cơ sở dữ liệu được
bảo vệ chắc chắn cũng như có các kế hoạch khôi phục, backup dữ liệu.
2 Cấu trúc của Cluster
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: ( Phần 2 sẽ trình bài chi
tiết hơn về vấn đề này)
-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 (hình 1). Ở 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.
Hình 1-
Hệ thống cluster có 2 ứng dụng hoạt động song song trên mỗi node |
|
-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 (Hình 2). Ở 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.
Hình 2
– Hai hệ thống cluster độc lập chứa 2 ứng dụng khác nhau |
|
-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
Hình 3
– Hai node Active được dự phòng bởi node Passive |
|
3 Chế độ hoạt động
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.
4 Tính mở của Cluster
Một vấn đề mà các nhà đầu tư xây dựng hệ thống cần quan
tâm là khả năng mở rộng của hệ thống Clustering. Tuỳ theo yêu cầu cụ thể
các cluster có thể cần phải thêm các máy chủ vào Cluster, hoặc thêm CPU
và RAM cho các máy chủ để tăng khả năng đảm nhận công việc cho các máy
chủ đã có.
(nguồn Internet) |