[클러스터] Globus 2.0 설치
Globus 2.0 설치
작성자: 명훈주 (hjmyung@hpcnet.ne.kr)
수정자: 권오경 (okkwon@kisti.re.kr)
수정자: 안준언 (rocahn@hpcnet.ne.kr)
최종 수정 날짜: 2002-05-31
수정내용 : binary버전 설치 포함 및 내용 추가
이 문서는 Globus 툴킷을 리눅스 PC에 설치하는 방법을 설명한다.
RedHat Linux 7.3(Linux 커널 버젼은 2.4.18-3)을 기준으로 설명하였으며,
Linux 표준 쉘인 bash 쉘을 이용한다고 가정하였다.
‘#’는 root 프롬프트를 의미하고, ‘$’는 사용자 프롬프트를 의미한다.
globus version: 2.0
example hostname: sdd125.hpcnet.ne.kr
OS: RedHat 7.3
kernel version: 2.4.18-3
gcc version: 2.96
목차
다운로드 받기
Globus를 위한 사용자 계정 만들기
설치전에 점검해야 할 사항
Globus 설치
성공적인 설치 여부 확인
gatekeeper를 서비스로 등록하기
Grid Ftp 서버를 서비스로 등록하기
Grid ncftp client를 설치하자.
MDS 설정 (GRIS 설정)
Common Error
——————————————————————————–
다운로드 받기 [[목차]] Globus Toolkit 2.0은 다음 주소에서 다운로드 받을 수 있다.
http://www.globus.org/gt2/install/download.html
Globus Toolkit 2.0 부터는 Grid Packaging Toolkit을 이용해 쉽게 설치할 수 있다.
위의 주소로부터 Grid Packaging Toolkit 과 Source를 다운로드 받도록 한다.
(Binary로도 설치가 가능하나, 여기서는 Source로 설치하는 방법을 설명한다.
binary설치는 4번을 제외하고 같다. 설치법은 binary 버전 설치를 참조한다.)
Globus를 위한 계정 만들기 [[목차]]
globus라는 사용자를 추가한다.
# /usr/sbin/adduser globus
globus의 초기 비밀번호를 설정
# passwd globus
globus 설치 디렉토리를 만들고 globus가 사용할 수 있게 권한을 변경한다.
# mkdir /usr/local/globus
# chown globus.globus /usr/local/globus
설치전에 점검해야 할 사항[[목차]]
perl이 설치되어 있는지 확인: 버전 5.005이상이 설치되어 있어야 한다.
/etc/hosts 에 호스트의 이름이 등록되어 있는지 확인한다.
# vi /etc/hosts
111.222.333.444 hostname.your_full_domain_name
111.222.333.445 sdd125.hpcnet.ne.kr
globusrun을 실행할 때 이 파일을 참조하여 ip 주소를 host name으로 바꾸어 준다.
hostname 이 FQDN(Fully-Qualified Domain Name)으로 설정되어 있는지 확인한다.
다음 과정에서 globus-install이 실행되면서 hostname을 읽어 사용하기 때문이다.
# hostname
sdd125.hpcnet.ne.kr
/etc/sysconfig/network 파일을 열어서 hostname이 FQDN(Fully-Qualified Domain Name)으로
설정되어 있는지 확인한다.
# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sdd125.hpcnet.ne.kr
GATEWAY=111.222.333.1
설치 [[목차]]
globus 툴킷의 설치는 globus 계정으로 한다.
# su globus압축을 해제할 디렉토리로 이동 (globus의 홈디렉토리)
$ cd /home/globus다음과 같은 환경변수를 설정한다.
$ export GLOBUS_LOCATION=/usr/local/globus
Globus 패키지 툴을 설치한다.
$ tar zxvf gpt-1.0.tar.gz
$ cd gpt-1.0
$ ./build_gpt기존에는 /usr/local/globus, /opt/globus와 같이 설치와 배포를 다른 디렉토리에 했지만,
2.0부턴 $GLOBUS_LOCATION하나의 설정 디렉토리에 설치한다.
다음 명령 형식을 이용하여 Globus Toolkit의 번들 파일들을 설치한다.
$ /usr/local/globus/sbin/globus-build -install-only \\
bundle options flavors
위 명령에서 이탤릭체로 된 부분을 다음과 같이 대체해서 사용하면 된다.
BUNDLE OPTIONS FLAVORS Data Management Client gcc32dbg Data Management SDK gcc32dbg Data Management Server -static=1 gcc32dbg Information Services Client gcc32dbgpthr Information Services SDK gcc32dbgpthr Information Services Server gcc32dbgpthr Resource Management Client gcc32dbg Resource Management SDK gcc32dbg Resource Management Server -static=1 gcc32dbg
Data Management Client 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_data_management_bundle-client-src.tar.gz gcc32dbg
Data Management SDK 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_data_management_bundle-sdk-src.tar.gz gcc32dbg
Data Management Server 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_data_management_bundle-server-src.tar.gz -static=1 gcc32dbg
Information Services Client 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_information_services_bundle-client-src.tar.gz gcc32dbgpthr
Information Services SDK 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_information_services_bundle-sdk-src.tar.gz gcc32dbgpthr
Information Services Server 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_information_services_bundle-server-src.tar.gz gcc32dbgpthr
Resource Management Client 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_resource_management_bundle-client-src.tar.gz gcc32dbg
Resource Management SDK 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_resource_management_bundle-sdk-src.tar.gz gcc32dbg
Resource Management Server 번들 설치
$ /usr/local/globus/sbin/globus-build -install-only \\
globus_resource_management_bundle-server-src.tar.gz -static=1 gcc32dbg
globus-build뒤의 설정을 한다.
$ /usr/local/globus/sbin/gpt-postinstall
Creating new ./globus-postinstall-1021614803.sh . . .
globus_gram_job_manager_setup_pgm requires globus_common_setup to be set up
globus_gram_job_manager_setup_pgm requires globus_gatekeeper_setup to be set up
globus_gram_job_manager_setup_pgm requires globus_core_setup to be set up
globus_gram_reporter_setup_pgm requires globus_common_setup to be set up
globus_gram_reporter_setup_pgm requires globus_core_setup to be set up
globus_gram_reporter_setup_pgm requires globus_mds_gris_setup to be set up
creating globus-script-initializer
creating globus-sh-tools.sh
creating globus-makefile-header
Done
(생략)GSI 소프트웨어의 setup을 위해 수퍼 유저의 권한을 얻어 다음 명령을 실행시킨다.
# /usr/local/globus/setup/globus/setup-gsiglobus package 설치가 제대로 되었는지 확인한다.
$ /usr/local/globus/sbin/gpt_verify
globus_gram_job_manager_pgm requires globus_gram_job_manager_setup to be set up
globus_gram_job_manager_pgm_static requires globus_gram_job_manager_setup to be set up
globus_gram_reporter_pgm requires globus_gram_reporter_setup to be set up
globus_gram_reporter_pgm_static requires globus_gram_reporter_setup to be set up
You have a coherent development tree
No packages are missing from your install tree
위의 메시지대로 setup한다.
$ /usr/local/globus/setup/globus/setup-globus-gram-job-manager
$ /usr/local/globus/setup/globus/setup-globus-gram-reporter
다시한번 다음 명령을 수행한다.
$ /usr/local/globus/sbin/gpt_verify
You have a coherent development tree
No packages are missing from your install tree
이 명령의 결과로 위와 같은 메시지가 나오면 설치과정은 끝난다.
성공적인 설치 여부 확인 [[목차]]
사용자 계정에 환경 설정
사용자 계정에 대해서 다음과 같이 환경 설정을 한다.
globus가 사용자이고 shell을 bashrc를 사용한다고 가정하자.
$ vi ~globus/.bashrc
…
export GLOBUS_LOCATION=/usr/local/globus
. $GLOBUS_LOCATION/etc/globus-user-env.sh
…
$ source ~globus/.bashrc인증서 얻기
유저 인증서 요청하기
$ /usr/local/globus/bin/grid-cert-request -cn <name>
이 결과로 ~/.globus/usercert_request.pem을 얻을 수 있고,
http://gridtest.hpcnet.ne.kr/GridCA/ 접속하여 인증서 발급을 요청한다.
인증서를 얻게 되면 ~/.globus/usercert.pem 으로 저장한다.
host에 대한 gatekeeper 인증서 요청하기
슈퍼 유저의 권한을 얻어 다음 명령을 실행한다.
# /usr/local/globus/bin/grid-cert-request -gatekeeper sdd125.hpcnet.ne.kr \\
-key /etc/grid-security/hostkey.pem \\
-cert /etc/grid-security/hostcert.pem \\
-req /etc/grid-security/host.req
마찬가지로 host.req 파일을 가지고
http://gridtest.hpcnet.ne.kr/GridCA/ 접속하여 인증서 발급을 요청한다.
인증서를 얻게 되면 /etc/grid-security/hostcert.pem으로 저장한다.
CA의 인증서 설치하기
http://gridtest.hpcnet.ne.kr/GridCA/ 접속해서 메뉴의
‘List of Certificates’링크를 클릭하여 데이터베이스에 들어 있는
인증서의 목록을 확인한다.
CA의 인증서의 Subject와 일치되는 항목을 찾아서 Subject를 클릭하면
CA의 인증서에 대한 정보가 표시된다. ‘Certificate’ 부분을 복사하여서
/etc/grid-security/certificates 디렉토리에 예를 들어 temp.pem 이라는
임시 화일명으로 저장한다.
쉘 프롬프트 상에서 인증서의 hash 코드를 생성하기 위해서 다음 명령을 사용한다.
# /usr/local/globus/bin/openssl x509 -hash -in temp.pem -noout
82da68f0
temp.pem 화일명을 위에 출력된 헤쉬코드를 이용하여 hashcode.0 형태로 변경한다.
# mv temp.pem 82da68f0.0/etc/grid-security/certificates/ 디렉토리안에
hashcode.signing-policy 파일형태로 다음과 같은 내용을 추가한다.
# vi 82da68f0.signing_policy
# EACL entry #1
access_id_CA X509 ‘/C=KR/O=Globus/CN=KISTI Supercomputing Center CA’
pos_rights globus CA:sign
cond_subjects globus ‘”/C=KR/O=Globus/*” “/O=Grid/O=Globus/*”‘
참고 : 기존에 gatekeeper 인증을 받은 것이 있다면 다시 받지 않고 그대로 사용할수 있다. 기존 인증관련 파일
$GLOBUS_INSTALL_PATH/etc/밑에 globus_gatekeeper.cert, globus_gatekeeper.key, globus_gatekeeper.request파일을 백업 받는다.
각각의 파일을 (순서대로) /etc/grid-security/밑에 hostcert.pem, hostkey.pem, host.req로 복사하여 사용하면 된다.
(CA인증서도 마찬가지로 복사하여 사용하면 된다-기존CA일경우- 단 signing_policy 파일명이 변경되었으므로 주의한다.)
테스트
다음 명령을 실행하여 gatekeeper를 띄운다.
$ /usr/local/globus/bin/grid-proxy-init
$ /usr/local/globus/bin/globus-personal-gatekeeper -start
GRAM contact: sdd125.hpcnet.ne.kr:32915:/O=Grid/O=Globus/OU=hpcnet.ne.kr/CN=globus at sdd125
다음 명령을 수행하여 정상적인 결과가 나오는지 확인한다.
$ /usr/local/globus/bin/globusrun -o -r \\
“sdd125.hpcnet.ne.kr:32915:/O=Grid/O=Globus/OU=hpcnet.ne.kr/CN=globus at sdd125” \\
‘&(executable=/bin/date)’
이 명령의 결과로 유닉스의 date명령의 결과가 나오면 성공한 것이다.
여기까지 되었다면, 다음 명령을 통해서 gatekeeper를 중지하고 proxy를 제거한다.
$ /usr/local/globus/bin/globus-personal-gatekeeper -killall
$ /usr/local/globus/bin/grid-proxy-destroy
gatekeeper를 서비스로 등록하기 [[목차]]
/etc/services 파일에 다음과 같이 추가한다.
globus-gatekeeper 2119/tcp # Globus Gatekeeper
host에서 inetd 혹은 xinetd 데몬이 동작하고 있는지에 따라서 설정 또한 달라진다.
여기서는 xinetd이 동작하고 있다고 가정하고, 이에 따른 설정방법을 설명한다.
inetd의 경우에는 www.globus.org에서 설치 가이드를 참조바란다.
/etc/xinetd.d/ 디렉토리 안에 “globus-gatekeeper”라는 파일을 만들고
다음과 같은 내용을 첨가한다.
service globus-gatekeeper
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/globus/sbin/globus-gatekeeper
server_args = -conf /usr/local/globus/etc/globus-gatekeeper.conf
disable = no
}
xinetd을 재구동한다.
# /etc/rc.d/init.d/xinetd restart
/etc/grid-security/grid-mapfile에 인증서의 subject와 그에 대응되는
username을 추가해야 한다. 다음 명령을 통해서 이 작업이 이루어질 수 있다.
$ grid-cert-info -subject
O=Grid/O=Globus/OU=hpcnet.ne.kr/CN=globus at sdd125
$ whoami
globus
위의 결과를 가지고 /etc/grid-security/grid-mapfile에 추가한다.
“/O=Grid/O=Globus/OU=hpcnet.ne.kr/CN=globus at sdd125” globus
위의 작업의 결과로 정상적으로 동작하는지 확인한다.
$ grid-proxy-init
$ globusrun -o -r localhost ‘&(executable=/bin/date)’
Grid Ftp 서버를 서비스로 등록하기 [[목차]]
2.0에서는 Grid Ftp 서비스가 추가 되었다. 서버를 등록 해서 서비스를 해보자.
/etc/services 파일에 다음과 같이 추가한다.
gridftp 2811/tcp
/etc/xinetd.d/ 디렉토리 안에 “grid-ftp”라는 파일을 만들고
다음과 같은 내용을 첨가한다.
service gridftp
{
instances = 1000
socket_type = stream
wait = no
user = root
server = /usr/local/globus/sbin/in.ftpd
server_args = -l -a -G /usr/local/globus
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no
}
xinetd을 재구동한다.
# /etc/rc.d/init.d/xinetd restart
제대로 동작하는지 테스트 해보자.
globus 2.0에서는 globus-url-copy프로그램에서 gsiftp 프로토콜을 지원하므로,
globus-url-copy를 통해 테스트가 가능하다.
$ more /home/globus/a.txt
hello
$ hostname
sdd125.hpcnet.ne.kr
$ globus-url-copy gsiftp://sdd125.hpcnet.ne.kr/home/globus/a.txt file:///tmp/a.txt
$ more /tmp/a.txt
hello
Grid ncftp client를 설치하자. [[목차]]
grid-ftp에 나와있는 것을 구현한 것이 아니라, GSI부분만 추가한 gsincftp client를 설치하자.
source를 다운받아서 설치하자.
$ wget http://www-unix.globus.org/ftppub/gt2/2.0/contrib/globus_gsincftp-0.2.tar.gz
$ globus-build globus_gsincftp-0.2.tar.gz gcc32dbg
UNPACKING /home/globus/globus_gsincftp-0.2.tar.gz
BUILDING PACKAGE globus_gsincftp
BUILDING FLAVOR gcc32dbg
make: *** No rule to make target `distclean’. Stop.
configure: warning: the following check may take several minutes if networking is not up.
You may want to bring it up now and restart configure, otherwise please be patient.
make[1]: [all] Error 1 (ignored)
make[1]: [all] Error 1 (ignored)
make[1]: [all] Error 1 (ignored)
make[1]: [all] Error 1 (ignored)
make[1]: [all] Error 1 (ignored)
make[1]: [all] Error 1 (ignored)
make[1]: [all] Error 1 (ignored)
make: [install] Error 1 (ignored)
CREATING PACKAGES FOR globus_gsincftp-gcc32dbg…pgm DONE
CREATING PACKAGES FOR globus_gsincftp-noflavor…DONE
제대로 작동하는지 테스트 해보자.
$ gsincftp localhost
NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com).
Connecting to 127.0.0.1…
sdd45.hpcnet.ne.kr FTP server (GridFTP Server 1.0 [GSI patch v0.5] wu-2.6.1(2) W
ed May 15 19:23:46 KST 2002) ready.
Logging in…
User globus logged in.
Logged in to localhost.
ncftp /home/globus >
MDS 설정 (GRIS 설정) [[목차]]
여기서는 GRIS를 설정하고 GIIS 서버에 등록하는 방법을 설명한다. GIIS 서버는
giis.hpcnet.ne.kr라고 가정한다.
globus의 일반적인 설정 파일들은 $GLOBUS_LOCATION/etc 디렉토리에 존재한다.
이 디렉토리로 이동하여 다음과 같은 파일을 편집하도록 한다.
$ cd /usr/local/globus/etc/
$ vi grid-info-slapd.conf
…
#(GRIS설정이므로 GIIS관련 설정부분을 모두 주석처리 한다.)
# database giis
# suffix “Mds-Vo-name=site, o=Grid”
# conf /usr/local/globus/etc/grid-info-site-giis.conf
# policyfile /usr/local/globus/etc/grid-info-site-policy.conf
# anonymousbind yes
# access to * by * write
modulepath항목이 다음과 같이 설정되어 있는지 확인한다.
modulepath /usr/local/globus/libexec/openldap/gcc32dbgpthr
GIIS서버의 Mds-Vo-name이 kisti-mds라고 했을때, 다음과 같이 수정한다.
$ vi grid-info-resource-register.conf
…
dn: Mds-Vo-Op-name=register, Mds-Vo-name=kisti-mds, o=grid
…
reghn: sdd125.hpcnet.ne.kr
…
MDS 서비스를 위한 서버 인증서를 만든다.
$ grid-cert-request -cn “ldap/sdd125.hpcnet.ne.kr” \\
-cert /usr/local/globus/etc/server.cert \\
-key /usr/local/globus/etc/server.key \\
-req /usr/local/globus/etc/server.request -nopw \\
-dir /usr/local/globus/etc
server.request파일을 가지고 http://gridtest.hpcnet.ne.kr/GridCA/에
인증서 발급을 요청하고 server.cert에 저장한다.
GRIS 서비스를 가동한다.
$ /usr/local/globus/sbin/SXXgris start
다음 명령을 이용해서 테스트 해보자.
$ /usr/local/globus/bin/grid-info-search -x
Common Error [[목차]]
GRAM Job submission failed because the connection to the server failed (check host and port) (error code 12)
문제점
– Unable to contact gatekeeper. Is the gatekeeper running?
– Host not reachable? Can you ping it?
– Running on a non-standard port?
– Check $GLOBUS_LOCATION/var/globus-gatekeeper.log
해결책
– Add gatekeeper to services, /etc/rc.d/init.d/xinetd restart
– Include a contact string if non-standard port
– Build static if dying on startup with “library not found”
– Install gatekeeper certificate or fix key permissions
Error loading shared library
문제점
– LD_LIBRARY_PATH not set
해결책
– (csh) source $GLOBUS_LOCATION/etc/globus-user-env.csh
– (sh) . $GLOBUS_LOCATION/etc/globus-user-env.sh
GRAM Job submission failed because authentication with the remote server failed (error code 7)
문제점
– globus-gatekeeper.log: Authenticated globus user: /O=Grid/O=Globus/OU=mcs.anl.gov/CN=Charles Bacon
– Failure: globus_gss_assist_gridmap() failed authorization. rc = 1
해결책
– Add to grid-mapfile – Check ‘grid-cert-info -subject’ and ‘id’
gram_init failure:
Problem with local credentials
no proxy credentials: run grid-proxy-init or wgpi first
문제점
– No proxy/expired proxy
해결책
– Run grid-proxy-init (wgpi = Windows grid-proxy-init)
GRAM Job submission failed because the job manager failed to open stdout (error code 73)
문제점
– Other machine cannot open a connection back to the client
– Bad result from globus-hostname?
– Error in .globus/.gass_cache on remote machine? (rare!)
해결책
– Edit /etc/hosts or set $GLOBUS_HOSTNAME
– NFS trouble with ~/.globus on remote server?
GRAM Job submission failed because the provided RSL string includes variables that could not be identified (error code 39)
문제점
– Globus-job-get-output from a 2.0 client to a 1.1.x gatekeeper
해결책
– globus-job-get-output sets GLOBUS_LOCATION, use globus-job-run instead of globus-job-submit