PDA

View Full Version : clustering và load balancing


blaster
03-26-2007, 10:33 PM
có anh nào biết sự khác nhau giữa 2 khái niệm clustering và load balancing không nhỉ? công dụng của từng cái thế nào?
ai biết thì cho 1 bài đê

Maika
03-27-2007, 02:32 AM
Clustering :


Công nghệ Clustering cho các hệ thống máy tính


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 (bó) là câu trả lời cho vấn đề này. Bài báo này giới thiệu nguyên lý và phân tích 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 độc giả 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.

Ths. Nguyễn Trọng Đường

Trong thời đại bùng nổ của công nghệ thông tin hiện nay, mạng máy tính đóng vai trò ngày càng quan trọng hơn trong hoạt động của các doanh nghiệp, tổ chức cũng như các cơ quan nhà nước. Thậm chí ở một số đơn vị, chẳng hạn như các công ty hàng không hoặc các ngân hàng lớn, mạng máy tính có thể ví như hệ thần kinh điều khiển hoạt động của toàn doanh nghiệp. Sự ngừng hoạt động của mạng máy tính trong những cơ quan này có thể làm tê liệt các hoạt động chính của đơn vị, và thiệt hại khó có thể lường trước được.

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 (bó) là câu trả lời cho vấn đề này. Bài báo này giới thiệu nguyên lý và phân tích 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 độc giả 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.

Tổng quan về công nghệ Clustering

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 (cluster) 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 (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).

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

Cấu trúc của Cluster

Cluster được tổ chức thành các nhóm gọi là các farm hay pack. Trong hầu hết các trường hợp, các dịch vụ ở tầng trước và giữa (front-end and middle-tiers services) được tổ chức thành các farm sử dụng các clone, trong khi đó các dịch vụ tầng sau (back-end services) được tổ chức thành các pack. Các khái niệm farm, pack và clone trong hệ thống cluster sẽ được làm rõ ngay dưới đây.

Maika
03-27-2007, 02:39 AM
Cluster Farm là một nhóm các máy chủ chạy các dịch vụ giống nhau, nhưng không dùng chung cơ sở dữ liệu. Được gọi là farm (trang trại) bởi vì chúng xử lý bất cứ yêu cầu nào gửi đến cho chúng bằng các bản sao cơ sở dữ liệu (tài nguyên) giống hệt nhau được lưu giữ cục bộ, chứ không dùng chung một bản cơ sở dữ liệu. Cũng bởi tính chất này nên các máy chủ thành viên của farm làm việc độc lập và chúng được gọi là clone (clone là máy tính được thiết kế để mô phỏng chức năng của máy tính khác).

Cluster Pack là một nhóm các máy chủ hoạt động cùng với nhau và chia sẻ với nhau các phần của cơ sở dữ liệu. Được gọi là pack (khối) vì sự hoạt động của các máy chủ thành viên của pack có liên hệ chặt chẽ với nhau và chúng làm việc theo một phương thức thống nhất để quản lý và duy trì các dịch vụ.

Chế độ hoạt động của Cluster

Mỗi máy chủ trong cluster được gọi là một nút (cluster node), và có thể được thiết lập ở chế độ chủ động (active) hay thụ động (passive). Khi một nút ở chế dộ chủ động, nó sẽ chủ động xử lý các yêu cầu. Khi một nút là thụ động, nó sẽ nằm ở chế độ dự phòng nóng (stanby) chờ để sẵn sàng thay thế cho một nút khác nếu bị hỏng. Nguyên lý hoạt động của Cluster có thể biểu diễn như trong hình 1.

http://www.tapchibcvt.gov.vn/Uploaded/articlefiles/nguyenly_hoatdong_cuamot_cluster.gif

Hình 1. Nguyên lý hoạt động của một Cluster

Trong một cluster có nhiều nút có thể kết hợp cả nút chủ động và nút thụ động. Trong những mô hình loại này việc quyết định một nút đượ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 nút chủ động bị sự cố và có một nút thụ động đang sẵn sàng, các ứng dụng và dịch vụ đang chạy trên nút hỏng có thể lập tức được chuyển sang nút thụ động. Vì máy chủ đóng vai trò nút 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 nút 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ò nút chủ động. Vì là nút 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 nút chủ động được dự phòng bởi một nút 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ố nút chủ động nhiều hơn số nút 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 nút nào đó bị hỏng.

Các nút 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 nút có ít nhất hai nút 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.

Cluster nhiều địa điểm phân tán

Với các hệ thống mạng lớn có các người dùng phân bố rải rác, hiệu quả của việc phòng chống sự cố và nâng cao tính sẵn sàng của mạng sẽ được cải thiện hơn nhiều nếu xây dựng hệ thống cluster bố trí tại nhiều địa điểm. Kiến trúc nhiều địa điểm có thể được thiết kế theo rất nhiều cách khác nhau, trong đó phổ biến nhất là có một điểm gốc và một số điểm ở xa.

Với kiểu thiết kế đầy đủ, toàn bộ cấu trúc của điểm gốc được xây dựng lại đầy đủ ở các điểm ở xa. Điều này cho phép các điểm ở xa hoạt động độc lập và có thể xử lý toàn bộ khối lượng công việc của điểm gốc nếu cần. Trong trường hợp này, việc thiết kế phải đảm bảo sao cho cơ sở dữ liệu và các ứng dụng giữa điểm gốc và các điểm ở xa phải đồng bộ và được cập nhật sao lặp ở chế độ thời gian thực.

Với kiểu thiết kế thực hiện từng phần thì chỉ có các thành phần cơ bản là được cài đặt ở các điểm ở xa nhằm: Xử lý các khối lượng công việc quá tải trong các giờ cao điểm; Duy trì hoạt động ở mức cơ bản trong trường hợp điểm gốc site bị sự cố; Cung cấp một số dịch vụ hạn chế nếu cần.

Cả kiểu thiết kế đầy đủ hay từng phần đều dùng phương cách phân tán các máy chủ rải rác về mặt địa lý. Cluster phân tán về địa lý sử dụng mạng LAN ảo (Virtual LAN) để kết nối các mạng khu vực lưu trữ SAN (storage area network) qua những khoảng cách lớn. Để có thể duy trì hoạt động cluster một cách hiệu quả, yêu cầu đối với kết nối trong mạng LAN ảo phải có độ trễ khoảng dưới 500 ms.

Tối ưu hoá các thiết bị lưu trữ trên cluster

Các thiết bị lưu trữ trên cluster cần được tối ưu hoá trên cơ sở những nhu cầu về hiệu năng và mức độ sẵn sàng. Trong bảng 1 dưới đây cung cấp một cách khái quát những cấu hình hệ thống đĩa dự phòng RAID phổ biến có thể lựa chọn cho Cluster. Các đầu mục trong bảng được sắp xếp từ mức RAID cao nhất đến thấp nhất.

Bảng 1. Các cấu trúc RAID cho Cluster

http://img236.imageshack.us/img236/6615/18538907es0.jpg

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

Muốn mở rộng Cluster bằng cách thêm các server, thì cả hai yếu tố là Kỹ thuật clustering lẫn Hệ điều hành mà server sử dụng đều quan trọng. Ví dụ như trình bày trong bảng 2 sau đây, sự khác nhau cơ bản về khả năng mở rộng của Advanced Server và Datacenter Server là số nút có thể dùng với Cluster. Với Windows 2000, số nút máy chủ của Cluster tối đa là 4, trong khi đó với Windows .NET, số nút máy chủ của Cluster tối đa là 8.

Bảng 2. Số nút tối đa tương ứng với các hệ điều hành và kỹ thuật Clustering

http://img338.imageshack.us/img338/1728/25007921uh7.jpg

Maika
03-27-2007, 02:42 AM
Muốn mở rộng Cluster bằng cách thêm vào các CPUs và RAM thì việc đang dùng hệ điều hành nào là vấn đề rất quan trọng. Ví dụ như Hệ điều hành Window 2000 Advanced Server hỗ trợ tối đa 8 bộ vi xử lý và 8 GB RAM, trong khi đó Window 2000 Datacenter Server hỗ trợ tối đa 32 bộ vi xử lý và 64 GB RAM. Như vậy, có thể phải nâng cấp hệ điều hành từ Advanced Server lên Datacenter Server nếu yêu cầu thêm CPU và RAM vượt quá khả năng của hệ điều hành đang dùng.

Linux Cluster

Mặc dù công nghệ clustering hiện nay vẫn phổ biến dùng hệ điêù hành nguồn đóng, nhưng các thống kê về thị phần và mức tăng trưởng của thị trường máy chủ cho thấy rõ ràng là sự chuyển dịch sang các hệ điều hành nguồn mở như Linux đang ngày càng trở nên hiện thực (IBM đã đầu tư khoảng 1 tỷ USD để phát triển hệ thống IBM Linux cluster. Bởi vậy khi thảo luận về công nghệ clustering, việc tìm hiểu về Linux clustering là một vấn đề rất cần thiết).

Linux cluster được chú ý phát triển nhờ có các đặc điểm như: Giá thành rẻ do phát triển từ hệ điều hành UNIX có mã nguồn mở; Tốc độ tính toán nhanh; Độ tin cậy cao. Linux cluster trên cơ sở bộ xử lý Intel đã trở nên thông dụng trong các viện ngiên cứu. Đó là một phương án không quá tốn kém đối với những vấn đề của công nghệ thông tin như lập trình song song, phát triển công cụ song song và quản lý các hệ thống phân tán. Đồng thời, Intel Linux cluster cũng đang xuất hiện trong các dự án nghiên cứu trong công nghiệp, mới đầu dưới dạng hộp mẫu hoặc thử nghiệm hệ thống đang thiết kế.

Về nguyên lý hoạt động nói chung hệ thống Linux cluster cũng giống như các hệ thống cluster dùng phần mềm nguồn đóng, tuy nhiên hệ điều hành cơ sở cho Linux cluster là hệ điều hành Linux, được cài đặt trên từng nút của cluster. Chương trình quản lý được dùng trong các Linux cluster tuỳ theo yêu cầu của khách hàng có thể hỗ trợ các chức năng bao gồm việc cung cấp giao diện dòng lệnh hoặc cửa sổ; Các chức năng quản trị từ xa như thiết đặt lại hệ thống; giám sát các tham số quan trọng; kiểm soát nguồn; xem tệp nhật ký hệ thống; thao tác đơn tác động song song đến nhiều nút v.v. Sơ đồ nguyên lý của một Linux cluster cỡ lớn có thể biểu diễn như trong hình 2.

http://www.tapchibcvt.gov.vn/Uploaded/articlefiles/sodo_nguyenlu_cuamot_linux_cluster_lon.gif
Hình 2: Sơ đồ nguyên lý của một Linux cluster lớn

Như đã nói ở trên, Linux cluster có độ tin cậy và tính ổn định khá cao, tuy nhiên việc thiết kế một Linux cluster hay một siêu cluster không phải là đơn giản, nó đòi hỏi phải xác định được các lớp rất trừu tượng và độ phức tạp tăng theo kích thước của cluster. Các đề án về giải pháp Linux cluster phải do những người có hiểu biết cần thiết về các vấn đề này xây dựng nên. Việc xác định các nút cần thiết phải theo các nguyên tắc sau:

· Cứ 32 đến 64 nút tính toán cần có một nút đầu mối.

· Mỗi hệ thống cần có một nút quản lý

· Việc vào/ra bên ngoài cần có một hay nhiều nút lưu trữ.

Có ba mạng chức năng cần phải có:

· Mạng dành cho việc liên lạc giữa các tiến trình IPC (inter process communication) với tốc độ phụ thuộc vào bài toán được đặt ra.

· Mạng dùng cho vào/ra tệp (file I/O). Mạng IPC cũng có thể kiêm luôn nhiệm vụ này

· Mạng phục vụ cho việc quản lý hệ thống, thường là mạng được thiết lập bởi các chuyển mạch 10/100 Ethernet. Cũng cần phải có cả máy chủ phục vụ đầu cuối trong mạng này.

Kết luận

Clustering là một kỹ thuật được áp dụng nhằm nâng cao độ tin cậy và tính sẵn sàng của hệ thống mạng máy tính. Một mạng được cấu trúc dưới dạng clustering sẽ có khả năng hoạt động bình thường ngay cả khi có sự cố xảy ra cho một máy chủ mạng trong cluster. Tuỳ theo yêu cầu cụ thể của hệ thống mà có thể cấu trúc cluster 2 nút, 4 nút, 8 nút hoặc nhiều hơn. Các nút trong cluster có thể toàn ở thể chủ động, hoặc có nút chủ động, có nút thụ động. Mỗi cấu trúc của cluster sẽ đòi hỏi một cấu hình phần cứng của các máy chủ tương ứng. Hệ điều hành cũng là một yếu tố quan trọng cần xem xét khi thiết kế clustering cho mạng. Lựa chọn các phần mềm nguồn đóng như Window 2000 đảm bảo hệ thống dễ thiết lập, tuy nhiên tính bảo mất thường không cao. Các hệ điều hành nguồn đóng như Linux tuy khó thiết định nhưng lại có tính bảo mật và độ an toàn cao hơn. Bởi vậy, khi định thiết đặt một cấu trúc clustering cho hệ thống mạng của mình, nhà đầu tư cần xem xét kỹ các yếu tố nêu trên để có thể quyết định lựa chọn giải pháp tối ưu cho mình./.

Maika
03-27-2007, 02:52 AM
Load Balancing

Nói chung, cân bằng tải bao gồm những kỹ thuật phân bố công việc thông qua đa hệ thống hay những kênh liên lạc để điều khiển những lúc cao điểm trên đường truyền. Cân bằng tải được dùng ở một số dạng như sau:
Cân bằng tải trong những hệ thống đa xử lý (LOAD BALANCING IN MULTIPROCESSOR SYSTEMS) Một hệ điều hành hỗ trợ hệ thống đa xử lý có thể áp dụng đa xử lý đối xứng hay không đối xứng. Với đa xử lý không đối xứng, hệ điều hành dùng một hay nhiều bộ xử lý cho riêng nó và chạy những ứng dụng khác. Hệ điều hành áp dụng đa xử lý đối xứng có thể phân bố những lệnh hoạt động cho mọi bộ xử lý. Do đó, hệ điều hành có thể cân bằng quá trình tải qua các bộ xử lý. Đa xử lý đối xứng thì khá khó áp dụng nhưng có những lợi ích rõ ràng hơn đa xử lý không đối xứng,
Cân bằng tải trên hệ thống đĩa (LOAD BALANCING ON DISK SYSTEMS) Đĩa “gương” (mirrored disk) cho phép cân bằng tải. Một khi dữ liệu đã được viết lên đĩa thì các hoạt động đã sẵn sàng bởi vì những dữ liệu cần thiết đã có sẵn ở bất kỳ đĩa nào trong bộ “gương”. Trong hệ thống phân bố file, những dữ liệu tương tự có thể được trữ ở những nơi khác nhau trong hệ thống, do đó cân bằng được sự tải dữ liệu và đặt dữ liệu gần người sử dụng hơn.
Cân bằng tải với hệ thống cluster (LOAD BALANCING WITH CLUSTERED SYSTEMS) Một hệ thống cluster là một nhóm máy dùng chung dữ liệu. Yêu cầu dữ liệu để xử lý từ người sử dụng được phân bố giữa các hệ thống trong cluster.
Cân băng tải trong xử lý ứng dụng (LOAD-BALANCING APPLICATION PROCESSING) Trong một hệ thống phân bố, nhiều hệ thống có thể chưa được tận dụng hết khả năng xử lý. Các ứng dụng có thể được thiết kế để kiểm tra những hệ thống nầy và phân bố tải giữa chúng để hoàn thành công việc nhanh hơn.
Cân bằng tải “Cầu nối/bộ định tuyến” (LOAD-BALANCING Bridges/Routers) Một cân bằng tải “Cầu nối/lộ trình” có thể tăng dải tầng giữa hai địa điểm bằng cách nối thêm dây (điện thoại) và cân bằng sự tải dữ liệu trên những dây nầy.
Cân bằng tải của một web-site (LOAD BALANCING A WEB SITE) Nhiều web-site trở nên quá tải rất nhanh chóng bởi vì có quá nhiều người sử dụng chúng. Ta có thể lắp đặt thêm những web server ở cùng vị trí để giữ những bản sao thông tin. Sau đó những yêu cầu web được gởi đến một trong số những web server có khả năng nhất (về đáp ứng yêu cầu). Các web-site cũng có thể được sao chép lại ở những địa điểm vật lý khác nhau để có thể đáp ứng yêu cầu của người sử dụng nhanh hơn.
Trong trường hợp sau, Cisco Systems đã phát triển một phần mềm cân bằng tải cho các lộ trình gọi là Distributed Director. Phần mềm nầy có thể chạy giao thức lộ trình có khả năng gởi những yêu cầu của người sử dụng đến một servr gần nhất. Cơ bản, một tên máy chủ đơn DNS (Domain Name System) được quy định bởi nhiều địa chỉ IP. Khi người sử dụng gọi một server bằng tên thì router sẽ xác định địa chỉ IP nào có thể đáp ứng tốt nhất yêu cầu nầy và chuyển yêu cầu đến server đó.

Ai test Lại dùm MaiKa với !!!:(

caothubithatbai
07-27-2007, 08:00 PM
Sai. mirro disk thì làm sao cân bằng tải? Tại 1 thời điểm, chỉ đọc 1 đĩa thôi, không thể đọc đĩa này 1 tý, ghép với đĩa kia 1 tý. Đa xử lý đối xứng là hệ điều hành dùng chung các bộ xử lý với các ứng dụng, còn đa xử lý không đối xứng là hệ điều hành hoạt trên 1 hoặc 1 số bộ xử lý, các ứng dụng dc xử lý trên 1 số BXL khác. Kể cả khi hệ điều hành rảnh, các ứng dụng hoạt động với nhu cầu XL cao, nó cũng không dùng dc các BXL dành riêng cho hệ điêu hành. Ngược lại đối với đa xử lý không đối xứng...
Có vài điều vậy thôi

microsoftvn
02-04-2009, 10:55 AM
bạn nào muốn tìm hiểu thêm thì xem thêm tài liệu này How to Cluster Windows Server http://www.box.net/shared/253s9r77z6