Thực hành Globus Toolkit (a-z)


Xem thêm:
Cài đặt Globus Toolkit 5.2.0 trên CentOS 6.2
Globus Tookit (1) – Cài đặt và cấu hình SimpleCA
Globus Tookit (2) – Cấu hình bảo mật cơ bản
Thực hành Globus Toolkit (a-z)

———————-

1       Mô hình và chuẩn bị

Mô hình triển khai Globus Toolkit trong mạng gồm 4 máy tính, trong đó:

  • Một máy Control Server (nút chính): đóng vai trò điều phối hoạt động và quản lý các công việc trong hạ tầng lưới. Ngoài ra, nó còn cung cấp các dịch vụ chứng thực bằng chứng chỉ số cho các nút tính toán và người dùng trong lưới.
  • Ba máy Grid Node (nút phụ): đóng vai trò là các nút tính toán để gửi công việc cần xử lý lên lưới cũng như thực thi các công việc được giao.

Yêu cầu và chuẩn bị cho các máy trong bài này như sau:

  • Chạy hệ điều hành Fedora 10
  • Sử dụng phiên bản Globus Toolkit 4.2.1
  • Các nút chính và phụ đều có thể liên lạc được với nhau bằng IP và hostname, chi tiết các tham số như bảng dưới đây:

 

Địa chỉ IP

Hostname

User

Nút chính

192.168.1.10 /24

Thang.uit.vn

N/A

Nút phụ 1

192.168.1.11 /24

Thanh.uit.vn

Thanh

Nút phụ 2

192.168.1.12 /24

Trung.uit.vn

Trung

Nút phụ 3

192.168.1.13 /24

Hinh.uit.vn

Hinh

2       Các bước cài đặt

Trong phần này, ta sẽ lần lượt thực hiện trên nút chính và tới các nút phụ các bước cơ bản sau:

  • Cài đặt các gói phụ thuộc cần thiết
    Đây là các gói phần mềm, thư viện cần thiết cho Globus Toolkit.
  • Cài đặt Globus Toolkit
    Bộ công cụ phần mềm mã nguồn mở được dùng cho việc xây dựng các lưới tính toán.
  • Cài đặt Simple CA
    Đây là thành phần cung cấp dịch vụ chứng thực bằng chứng chỉ số cho các máy tính, dịch vụ và người dùng trong lưới.
  • Thiết lập các cấu hình bảo mật cơ bản
    Chỉ cần thực hiện trên các nút phụ.
  • Khởi chạy Java WS Core
    Đây là thành phần cung cấp tập các thư viện và công cụ làm nền tảng cho việc thực thi các dịch vụ web và non-web trong lưới.
  • Cấu hình GridFTP
    Đây là thành phần cung cấp dịch vụ truyền nhận và quản lý dữ liệu có độ tin cậy và hiệu suất cao.
  • Cấu hình RTF
    Đây là thành phần cung cấp dịch khả năng truyền nhận tập dữ liệu lớn với độ tin cậy cao.
  • Cấu hình GRAM4
    Đây là thành phần quản lý các tài nguyên tính toán trong lưới.

Dưới đây là hướng dẫn chi tiết.

2.1      Cài đặt chung cho cả nút chính và phụ

2.1.1      Cài đặt các gói phụ thuộc

1)    Đăng nhập với root, có kết nối Internet.

2)   
Cài JDK 7
–       Tải về tại
http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3-download-1501626.html
–       Cài bằng lệnh
# rpm –ivh jdk-7u3-linux-i586.rpm
–       Kiểm tra cài JDK thành công
# java –version
———————–
java version “1.7.0_03″
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode, sharing)
———————–

3)   
Cài Apache Ant
–       Tải về tại
http://mirror-fpt-telecom.fpt.net/apache/ant/binaries/apache-ant-1.8.3-bin.tar.gz
–       Rồi giải nén vào thư mục /usr/local/
# tar -zxvf apache-ant-1.8.3-bin.tar.gz -C /usr/local/
–       Mở file /etc/profile và thêm vào cuối file các dòng thiết lập biến môi trường sau
export JAVA_HOME=/usr/java/jdk1.7.0_03
export ANT_HOME=/usr/local/apache-ant-1.8.3
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
–       Chạy lệnh sau để áp dụng ngay các thiết lập trên
# . /etc/profile
–       Cài thêm các option tasks cho Ant
# cd $ANT_HOME
# ant -f fetch.xml -Ddest=system
–       Kiểm tra cài Ant thành công
# ant-version
———————–
Apache Ant(TM) version 1.8.3 compiled on February 26 2012
———————–

4)    Cài gcc, g++, tar, sed, zlib, make, sudo, OpenSSL, Perl
# yum install gcc
# yum install gcc-c++
# yum install tar
# yum install sed
# yum install zlib
# yum install make
# yum install sudo
# yum install openssl
# yum install openssl-devel
# yum install perl
# yum install perl-XML-Parser
# yum install libtool-ltdl-devel

 2.1.2      Cài đặt Globus Toolkit
1)    Tạo user globus và đặt mật khẩu cho nó (thống nhất là 123 cho tất cả các tài khoản khác)
# useradd globus
# passwd globus

2)    Tải về mã nguồn của Globus Tookit 4.2.1 tại:
http://www.globus.org/toolkit/survey/index.php?download=gt4.2.1-all-source-installer.tar.gz
sau đó chép vào home folder của user globus tại /home/globus

3)    Tạo folder chứa chương trình sau khi build và gán quyền sở hữu cho user và group globus
# mkdir /usr/local/globus-4.2.1
# chown globus:globus /usr/local/globus-4.2.1

4)    Chuyển sang user globus
# su – globus

5)    Giải nén file chứa mã nguồn tải được ở trên và chuyển vào folder vừa được giải nén
$ tar -zxvf gt4.2.1-all-source-installer.tar.gz
$ cd gt4.2.1-all-source-installer

6)    Lần lượt chạy các lệnh sau. Đảm bảo sau khi chạy mỗi lệnh đều không bị báo lỗi.
$ ./configure –prefix=/usr/local/globus-4.2.1
$ make
$ make install
(Quá trình build và install cũng khá lâu, thường mất hơn 30 phút)

 7)    Thiết lập các biến môi trường
–       Đăng nhập với root
–       Mở file /etc/profile và thêm vào cuối file 2 dòng sau
export GLOBUS_LOCATION=/usr/local/globus-4.2.1
export PATH=$PATH:$GLOBUS_LOCATION/bin:$GLOBUS_LOCATION/sbin
–       Đóng file /etc/profile và chạy lệnh
# . /etc/profile
–       Sau đó chạy lệnh
# . $GLOBUS_LOCATION/etc/globus-user-env.sh 

2.2      Xây dựng nút chính đầu tiên

2.2.1      Cài đặt Simple CA

1)    Đăng nhập với user globus và chạy lệnh
$GLOBUS_LOCATION/setup/globus/setup-simple-ca

Và thực hiện theo các hướng dẫn kế tiếp
———————
– Do you want to keep this as the CA subject (y/n) [y]: [ nhấn y ]
– Enter the email of the CA (this is the email where certificate requests will be sent to be signed by the CA): [ gõ vào manthang90@gmail.com ]
– Enter the number of DAYS the CA certificate should last before it expires [default: 5 years (1825 days)]: [ nhấn Enter ]
– Enter PEM pass phrase: [ gõ vào thang90 ] (là password bảo vệ private key của CA)
———————–

2)     Các file quan trọng được tự động tạo ra là
– private key của CA:
/home/globus/.globus/simpleCA/private/cakey.pem
– public certificate của CA:
/home/globus/.globus/simpleCA/cacert.pem
– distribution package là file mà các nút phụ sẽ cần cài khi muốn nhận certificate từ CA:
/home/globus/.globus/simpleCA/globus_simple_ca_e6f93dcf_setup-0.20.tar.gz
(Lưu ý, chuỗi e6f93dcf là giá trị hash của certificate của CA nên sẽ khác với các máy CA khác)

3)    Chép đường dẫn tới script cấu hình cho GSI có dạng như sau
/usr/local/globus-4.2.1/setup/globus_simple_ca_e6f93dcf_setup/setup-gsi

4)    Đăng nhập với root và chạy
# $GLOBUS_LOCATION/setup/globus_simple_ca_e6f93dcf_setup/setup-gsi -default
——————–
setup-gsi: Configuring GSI security
Installing /etc/grid-security/certificates//grid-security.conf.CA_Hash…
Running grid-security-config…
Installing Globus CA certificate into trusted CA certificate directory…
Installing Globus CA signing policy into trusted CA certificate directory…
setup-gsi: Complete
——————–

2.2.2      Cấu hình GridFTP

1)    Đăng nhập với root và cài đặt gói xinetd nếu chưa có
# yum install xinetd

2)    Trong folder /etc/xinetd.d/, tạo file gridftp có nội dung sau:
service gsiftp
{
instances                 = 100
socket_type             = stream
wait                          = no
user                          = root
env                          += GLOBUS_LOCATION=/usr/local/globus-4.2.1
env                          += LD_LIBRARY_PATH=/usr/local/globus-4.2.1/lib
server                      = /usr/local/globus-4.2.1/sbin/globus-gridftp-server
server_args             = -i
log_on_success      += DURATION
disable                     = no
}

3)    Thêm vào cuối file /etc/services dòng sau để cho dịch vụ GridFTP
gsiftp          2811/tcp

4)    Khởi động lại dịch vụ xinetd
# /etc/init.d/xinetd reload

5)    Kiểm tra rằng port 2811 có đang ở trạng thái listening.
# netstat -an | grep 2811
Nếu hiện ra dòng sau thì ta đã chạy thành công GridFTP
tcp        0      0 0.0.0.0:2811            0.0.0.0:*               LISTEN

2.2.3      Khởi chạy Java WS Core

1)    Đăng nhập với root, chép file script mẫu globus-ws-java-container vào folder /etc/init.d
# cp $GLOBUS_LOCATION/etc/init.d/globus-ws-java-container /etc/init.d

2)    Chạy file script trên
# /etc/init.d/globus-ws-java-container start

3)    Đăng nhập với user globus, kiểm tra webservices container đang làm việc đúng
$ globus-check-remote-environment -s https://localhost:8443

### Remote Endpoint Version Information ###
Axis Version on remote endpoint https://localhost:8443:
Apache Axis version: 1.4
Built on Mar 01, 2007 (10:42:15 CST)
Java WS Core Version on remote endpoint https://localhost:8443:
4.2.1

 2.2.4      Cấu hình RFT

Ta sẽ sử dụng câu lệnh globus-crft để thực hiện việc truyền nhận một file đảm bảo tin cậy. Lệnh này nhận một file đầu vào có cú pháp là một cặp URL trên mỗi dòng. Ở đây ta sẽ dùng RTF để quản lý việc dịch chuyển một file có URL nguồn và đích nằm trong file transfer sau:

1)    Tạo file transfer có nội dung
gsiftp://thang.uit.vn/etc/group gsiftp://thang.uit.vn/tmp/asdf

2)    Rồi chạy lệnh sau để di chuyển và đổi tên file /etc/group ở trên
$ globus-crft -ez -f transfer

Communicating with delegation service.
Creating the RFT service.
Starting the RFT service.
Waiting for the RFT transfers to complete.
Transfered 1 of 1                          | Status: Done

3)    So sánh 2 file đó, nếu chúng giống nhau thì RTF đã làm việc đúng
$ diff /etc/group /tmp/asdf

2.2.5      Cấu hình GRAM4

1)    Thiết lập sudo để user globus có thể khởi chạy một job với quyền của một user khác. Chạy lệnh visudo rồi thêm vào cuối file /etc/sudoers được mở ra các dòng sau:

Runas_Alias GLOBUSUSERS = ALL, !root;
globus ALL=(GLOBUSUSERS) NOPASSWD: /usr/local/globus-4.2.1/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.2.1/libexec/globus-job-manager-script.pl *
globus  ALL=(GLOBUSUSERS) NOPASSWD: /usr/local/globus-4.2.1/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.2.1/libexec/globus-gram-local-proxy-tool *

2)    Chạy thử các job sau để kiểm tra hoạt động của GRAM4
$ globusrun-ws -submit -c /bin/true
Submitting job…Done.
Job ID: uuid:a4b5e324-3bec-11dd-95ac-003048241085
Termination time: 06/16/3008 21:39 GMT
Current job state: Active
Current job state: CleanUp
Current job state: Done
Destroying job…Done.

$ echo $?
0

$ globusrun-ws -submit -c /bin/false
Submitting job…Done.
Job ID: uuid:b49462c0-3bec-11dd-9441-003048241085
Termination time: 06/16/3008 21:39 GMT
Current job state: Active
Current job state: CleanUp
Current job state: Done
Destroying job…Done.

 $ echo $?
1

2.3      Xây dựng nút phụ thứ nhất

2.3.1      Thiết lập cấu hình bảo mật cơ bản

2.3.1.1     Nút phụ nhận nút chính làm CA

1)    Đăng nhập với user globus và chép distribution package, ở đây là file globus_simple_ca_e6f93dcf_setup-0.20.tar.gz từ nút chính về home folder của globus. Có thể dùng lệnh scp hoặc chương trình WinSCP để thực hiện việc này.

2)    Chạy lần lượt chạy 2 lệnh sau:
$ gpt-build globus_simple_ca_e6f93dcf_setup-0.20.tar.gz gcc32dbg
$ gpt-postinstall

3)    Đăng nhập với root và chạy:
# $GLOBUS_LOCATION/setup/globus_simple_ca_e6f93dcf_setup/setup-gsi -default

2.3.1.2     Tạo Host certificate

1)    Đăng nhập với root và chạy:
# grid-cert-request -host thanh.uit.vn

Sẽ có 3 file được tạo ra là
– private key của nút phụ 1: /etc/grid-security/hostkey.pem
– request của nút phụ 1: /etc/grid-security/hostcert_request.pem
– certificate của nút phụ 1: /etc/grid-security/hostcert.pem (là file rỗng)

2)    Chép file hostcert_request.pem của nút phụ 1 ở trên vào home folder của user globus trên nút chính.

3)    Tại nút chính, đăng nhập với globus và chạy lệnh sau để ký vào hostcert_request ở trên
$ grid-ca-sign -in hostcert_request.pem -out hostsigned.pem
—————–
To sign the request please enter the password for the CA key:
(nhập vào PEM pass phrase đã đặt ở bước 2.2.1, ở đây là thang90)
……
The new signed certificate is at: /home/globus/.globus/simpleCA//newcerts/01.pem
—————–

4)    Chép file được tạo ra sau khi ký là hostsigned.pem qua nút phụ 1

5)    Đăng nhập với root tại nút phụ 1, sau đó di chuyển file hostsigned.pem vào folder /etc/grid-security và ghi đè lên file rỗng là hostcert.pem
# mv hostsigned.pem /etc/grid-security/hostcert.pem

2.3.1.3     Tạo User certificate

1)    Đăng nhập với root và tạo một user mới là thanh

2)    Đăng nhập với user thanh và chạy:
$ grid-cert-request
————————
Enter your name, e.g., John Smith: Thanh Nguyen
(nhập username sở hữu chứng chỉ, ở đây là Thanh Nguyen)
…..
Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:
(nhập mật khẩu bảo vệ cho private key của user thanh, ở đây là thanh90)
———

Sẽ có 3 file sau được tạo ra trong home folder của thanh là
/home/thanh/.globus/usercert.pem (file rỗng)
/home/thanh/.globus/userkey.pem
/home/thanh/.globus/usercert_request.pem

3)    Chép file usercert_request.pem vào nút chính

4)    Tại nút chính, đăng nhập với user globus và chạy lệnh sau để ký vào usercert_request.pem
$ grid-ca-sign -in usercert_request.pem -out usersigned.pem
—————–
To sign the request please enter the password for the CA key:
(nhập vào PEM pass phrase đã đặt ở bước 2.2.1, ở đây là thang90)
……
The new signed certificate is at: /home/globus/.globus/simpleCA//newcerts/02.pem
—————–

5)    Chép file được tạo ra sau khi ký là usersigned.pem qua nút phụ 1

6)    Đăng nhập với thanh tại nút phụ 1, sau đó di chuyển file file usersigned.pem vào folder /home/thanh/.globus/ và ghi đè lên file usercert.pem rỗng

$ mv usersigned.pem /home/thanh/.globus/usercert.pem 

7)    Để kiểm tra user thanh đã được chứng thực, đăng nhập với user thanh và chạy:
$ grid-proxy-init -debug -verify
…..
Enter GRID pass phrase for this identity:
(nhập vào password nhận dạng, ở đây là thanh90)
…..
Creating proxy ….++++++++++++
Done
Proxy Verify OK.

2.3.1.4     Cấu hình để container chạy dưới quyền của non-root user có thể truy cập host credential

1)    Tại nút phụ 1, đăng nhập với root và chạy:
# cd /etc/grid-security
# cp hostkey.pem containerkey.pem
# cp hostcert.pem containercert.pem
# chown globus.globus containerkey.pem containercert.pem

2)    Kiểm tra lại permission của các file *.pem
# ls -l /etc/grid-security/*.pem

-rw-r–r– 1 globus globus 2670 2012-04-14 19:47 containercert.pem
-r——– 1 globus globus 887 2012-04-14 19:47 containerkey.pem
-rw-r–r– 1 root root 2670 2012-04-14 16:51 hostcert.pem
-rw-r–r– 1 root root 1391 2012-04-14 16:40 hostcert_request.pem
-r——– 1 root root 887 2012-04-14 16:40 hostkey.pem

2.3.1.5     Bổ sung cơ chế authorization cho các user

1)    Tại nút phụ 1, đăng nhập với user thanh, chạy lệnh sau để lấy thông tin về username và subject-name
$ grid-cert-info –subject
/O=Grid/OU=GlobusTest/OU=simpleCA-thang.uit.vn/OU=uit.vn/CN=Thanh Nguyen
$ whoami
thanh

2)     Đăng nhập với root, chạy lệnh sau để tạo 1 ánh xạ (map) giữa username và subject-name
# grid-mapfile-add-entry -dn “/O=Grid/OU=GlobusTest/OU=simpleCA-thang.uit.vn/OU=uit.vn/CN=Thanh Nguyen” -ln thanh

(lưu ý, có dấu nháy kép bao quanh subject-name bởi vì CN=Thanh Nguyen có khoảng trắng)
Modifying /etc/grid-security/grid-mapfile …
/etc/grid-security/grid-mapfile does not exist… Attempting to create /etc/grid-security/grid-mapfile
New entry:
“/O=Grid/OU=GlobusTest/OU=simpleCA-thang.uit.vn/OU=uit.vn/CN=Thanh Nguyen” thanh
(1) entry added

3)     Mở file grid-mapfile và xác nhận 1 entry mới được thêm vào thành công
# cat /etc/grid-security/grid-mapfile

“/O=Grid/OU=GlobusTest/OU=simpleCA-thang.uit.vn/OU=uit.vn/CN=Thanh Nguyen” thanh

2.3.2      Cấu hình GridFTP

1)    Các bước cài đặt và kiểm tra dịch vụ GridFTP làm tương tự như trên nút chính (mục 2.2.2)

2)    Chạy lệnh sau để thử chép một file từ nút phụ 1 lên nút chính
$ globus-url-copy gsiftp://thanh.uit.vn/etc/group gsiftp://thang.uit.vn/tmp/from-thanh

2.3.3      Khởi chạy Java WS Core
Làm tương tự như trên nút chính (mục 2.2.3)

2.3.4      Cấu hình GRAM4

1)    Thiết lập file /etc/sudoers bằng lệnh visudo như trên nút chính.

2)    Tạo file prog.xml với nội dung sau để kiểm tra

<job>
    <executable>my_echo</executable>
    <directory>${GLOBUS_USER_HOME}</directory>
    <argument>Hello</argument>
    <argument>World!</argument>
    <stdout>${GLOBUS_USER_HOME}/stdout</stdout>
    <stderr>${GLOBUS_USER_HOME}/stderr</stderr>
    <fileStageIn>
        <transfer>
            <sourceUrl>gsiftp://thanh.uit.vn:2811/bin/echo</sourceUrl>
            <destinationUrl>file:///${GLOBUS_USER_HOME}/my_echo</destinationUrl>
        </transfer>
    </fileStageIn>
    <fileCleanUp>
        <deletion>
            <file>file:///${GLOBUS_USER_HOME}/my_echo</file>
        </deletion>
    </fileCleanUp>
</job>

Đây là một job sẽ được gửi lên lưới để thực hiện tính toán. Job này sẽ chép lệnh /bin/echo trên nút phụ 1 sang một file có tên my_echo nằm trong home folder của user thanh. Lệnh này sẽ được chạy với một vài đối số và ghi nhận lại chuỗi ký tự được truyền vào ra file stderr/stdout. Cuối cùng, ta sẽ xóa file my_echo khi job hoàn thành.

3)    Đăng nhập với user thanh, để thực thi job trên, chạy lệnh sau
$ globusrun-ws -submit -S -f prog.xml

Delegating user credentials…Done.
Submitting job…Done.
Job ID: uuid:1223d7e6-3e35-11dd-a209-003048241085
Termination time: 05/28/2012 19:22 GMT
Current job state: StageIn
Current job state: Active
Current job state: CleanUp
Current job state: Done
Destroying job…Done.
Cleaning up any delegated credentials…Done.

4)    Xem nội dung của 2 file được tạo ra bằng lệnh
$ cat ~/stdout
Hello World!

$ ls ~/my_echo
ls: /home/bacon/my_echo: No such file or directory

Như vậy là ta đã hoàn tất việc cài đặt Globus Tookit 4.2.1 trên Fedora 10 và thực hiện cấu hình các dịch vụ, thành phần của nó trên các nút chính và nút phụ thứ 1.

Các phần tiếp theo sẽ được thực hiện trên các nút phụ còn lại.

2.4      Xây dựng nút phụ thứ hai

Thực hiện tương tự như mục  2.3) Xây dựng nút phụ thứ nhất, nhưng thay đổi các thiết lập, thông số về tên tài khoản, địa chỉ IP, tên máy tính, v.v. cho phù hợp tại mỗi bước

2.5      Xây dựng nút phụ thứ ba

Thực hiện tương tự như mục  2.3) Xây dựng nút phụ thứ nhất, nhưng thay đổi các thiết lập, thông số về tên tài khoản, địa chỉ IP, tên máy tính, v.v. cho phù hợp tại mỗi bước.

3       Tham khảo

[1] Globus Toolkit 4.2.1 Quickstart
http://www.globus.org/toolkit/docs/4.2/4.2.1/admin/quickstart/

–manthang

6 comments

  1. Hi.A Thắng
    Em làm tới phần cấu hình Cài đặt Simple CA.
    Nhưng tới đoạn này thì nó cứ báo như vậy a chỉ giúp em được không anh.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s