• Thứ Ba, 06/01/2004 12:04 (GMT+7)

    Tự dựng siêu máy tính bằng công nghệ cluster


    Bạn biết không, những người làm hiệu ứng đặc biệt trong phim Titanic đã rất khó khăn trong việc tạo các khung cảnh 3 chiều hoành tráng. Các máy tính của họ không đủ khả năng đáp ứng công việc này, còn họ thì không có đủ khả năng để tậu một chiếc máy siêu tính. Cuối cùng, họ đã tìm ra một giải pháp vẹn cả đôi đường là lắp một cluster (liên máy chủ) Linux từ các máy DEC Alpha, nhờ đó đã có được một 'siêu máy tính' với chi phí thấp hơn nhiều để tạo nên các hiệu ứng cho bộ phim nổi tiếng. PC World VN cũng từng giới thiệu hệ thống máy cluster của Cục Khí Tượng Thuỷ Văn với tốc độ cao hơn cả máy siêu tính Cray (PCW VN B 6/2003 - tr.28). Bạn có muốn tự xây dựng một siêu máy tính cho riêng mình không? Chúng ta hãy cùng tìm hiểu nhé.

    Mô hình nguyên lý công nghệ cluseter

    Trong bài này, tôi xin trình bày cách xây dựng một siêu máy tính bằng công nghệ cluster trên hệ thống Windows NT. Dĩ nhiên, việc sử dụng một hệ thống cluster còn đòi hỏi lập trình ứng dụng để tận dụng khả năng tính toán song song trên nhiều máy nhưng việc giải quyết các thuật toán phức tạp và lập trình tận dụng khả năng tính toán của hệ thống máy cluster vượt ra ngoài phạm vi của bài viết này.

    Cơ bản về Cluster
    Cluster có thể được hiểu một cách đơn giản là một kiểu hệ thống song song hay phân tán bao gồm nhiều máy tính kết nối với nhau thành một khối và được dùng như một tài nguyên tính toán duy nhất. Một tác vụ có thể được thực hiện trên tất cả các máy tính trong cluster hoặc một máy nhất định trong số đó. Có thể kể một số ứng dụng của hệ thống cluster như:

    o Ứng dụng khoa học: Một ví dụ khá nổi bật về ứng dụng cluster là công ty Compagnie Générale de Géophysique (CGG) tại Pháp. CGG thực hiện việc thăm dò địa chất và cung cấp các hình ảnh 3 chiều dưới lòng đất để giúp các công ty khai thác dầu khí xác định trữ lượng các mỏ dầu. Dave Jones, giám đốc phát triển kinh doanh của CGG cho biết 'So với các giải pháp máy chủ lớn cổ điển, việc bổ sung cluster đơn giản hơn nhiều. Cluster Linux có thể mở rộng tới hàng ngàn máy, có thể giải quyết vấn đề dung lượng dữ liệu bùng nổ'. Giải pháp cluster của CGG bao gồm 512 máy chủ IBM xSeries 330 hai CPU Pentium III 1GHz tại văn phòng ở Luân-đôn của công ty và 128 máy chủ như vậy ở Pari. Các máy chủ chạy RedHat Linux và hai cụm cluster được nối mạng với nhau, cho phép CGG giải quyết các bài toán ở cả hai nơi. Cluster Linux của CGG có khả năng tính toán 1,25 teraflop và đã giúp công ty tiết kiệm tới 50% chi phí máy chủ.

    o  Ứng dụng Internet: Các ISP lớn và các công ty thương mại điện tử với cơ sở dữ liệu lớn cần tới hệ thống máy chủ với tính sẵn sàng cao, khả năng cân bằng tải và nâng cấp dễ dàng.

    o  Xử lý đồ hoạ ba chiều và tạo hình ảnh chuyển động: Trường hợp của nhóm tạo hiệu ứng đặc biệt cho phim Titanic nêu trên là một ví dụ.
    Có thể phân loại cluster theo chức năng như sau:

    o  Cluster xử lý phân tán: Các tác vụ (các đoạn code nhỏ) được thực hiện trên nhiều máy nhỏ thay vì tập trung trong một máy siêu tính. Loại cluster này rất thích hợp cho các phân tích khoa học hay tài chính.

    o  Cluster xử lý lỗi (Fail-over): Các cluster được dùng để nâng độ sẵn sàng và khả năng phục vụ của các mạng dịch vụ. Khi một ứng dụng hay máy chủ ngừng hoạt động, các dịch vụ của nó được chuyển sang máy khác. Định danh của máy ngừng hoạt động cũng được chuyển sang. Các failover cluster được dùng làm máy chủ cơ sở dữ liệu, mail server hay file server.

    o Cluster cân bằng tải có độ sẵn sàng cao: Một ứng dụng nhất định có thể chạy trên tất cả các máy tính và một máy tính trong nhóm có thể chứa nhiều ứng dụng. Bên ngoài chỉ giao tiếp với cluster, mỗi máy tính trong nhóm là ẩn với người dùng. Loại này không yêu cầu chỉnh sửa ứng dụng, làm việc tốt nhất với các ứng dụng không cần lưu trạng thái và có thể chạy đồng thời.

    Xây dựng Cluster Windows
    Phần cứng
    Bạn cần thiết lập các phần cứng sau:
     o Ít nhất là 2 máy tính chạy Windows NT+SP6 hay Windows 2000 được nối mạng bằng các thiết bị như hub hay switch.
     
    o Thiết lập các giao thức TCP/IP và NETBUI, đảm bảo các card mạng được cài đặt đúng. 

     Phần mềm
    Phần mềm chính là phần cốt lõi để tạo nên cluster Windows. Giao tiếp chuyển thông điệp (Message Passing Interface, viết tắt là MPI) là một chuẩn được phát triển hỗ trợ việc tính toán cluster dựa trên việc chuyển các thông điệp. Có rất nhiều cách thi hành chuẩn này. Trong bài viết này, tôi xin giới thiệu cách dùng MPICH, một phần mềm miễn phí (có thể download tại địa chỉ <http://www.lfbs.rwth-aachen.de/mp-mpich/download/>, tài liệu hướng dẫn cũng có thể lấy tại địa chỉ <http://www.lfbs.rwth-aachen.de/mp-mpich/download/MP-MPICH_manual.pdf>). Trước khi làm các bước dưới đây, bạn nên đọc các tài liệu <http://www.lfbs.rwth-aachen.de/mp-mpich/download/Quickstart.pdf> và http://www.lfbs.rwth-aachen.de/mp-mpich/download/MP-MPICH_manual.pdf.
    Bước 1: Download và giải nén tệp nt-mpich-1.3.0-a.zip vào một thư mục bất kỳ (ví dụ như C:\NT-MPICH) và chia sẻ thư mục này với quyền ghi.
    Bước 2: Chép tất cả các tệp .dll từ thư mục C:\NT-MPICH\lib vào thư mục C:\Windows\system32.
    Bước 3: Cài đặt Cluster Manager Service trên mỗi máy bạn muốn dùng thi hành các tiến trình MPI từ xa. Để cài đặt, hãy gọi tệp rcluma-install.bat trong thư mục C:\NT-MPICH\bin. Bạn phải có quyền admin trên máy.
    Bước 4: Thực hiện các bước 1 và 2 trên mỗi node của cluster (chúng ta gọi mỗi máy tính trong cluster là node).
    Bước 5: Gọi RexecShell (từ thư mục C:\NT-MPICH\bin) bằng cách nhấn đúp vào nó:
    Mở hộp thoại cấu hình bằng cách nhấn phím F2. Bộ cài đặt đã chứa một chương trình MPI mẫu biên dịch sẵn có tên là cpi.exe (trong thư mục NT-MPICH/bin). Chọn chương trình đó là chương trình sẽ chạy và nhập đúng đường dẫn của nó vào ô Working directory.

     


    Khai bái ứng dụng chạy trên các node của siêu máy tính thông qua giao diện RexecShell

    Chọn Active plug-in là ch_wsock. Chọn các máy sẽ thực hiện các công việc tính toán. Trong tab 'Account', nhập tên, domain và mật khẩu cho mỗi máy đã chọn. Nhấn OK để xác nhận các lựa chọn trên. Bây giờ nút Start (trong cửa sổ RexecShell) sẽ hiện lên, bạn có thể nhấn vào đó để chạy cpi.exe trên tất cả các node đã chọn. Kết quả sẽ được hiển thị ở các cửa sổ khác.
    Đến đây mọi việc đã hoàn tất, 'siêu máy tính' của bạn đã sẵn sàng để chạy các chương trình MPI!

    Xây dựng Cluster Linux
    Các cluster Linux thường phổ biến, mạnh và tiết kiệm hơn các cluster Windows. Để xây dựng một cluster Linux, bạn tham khảo địa chỉ <http://www.linuxclustersinstitute.org/>.


    Nguyễn Anh Tuấn
    nguyen_anh_tuan@yahoo.com

     

    ID: A0309_124