[클러스터] 글루버스 Globus 2.2 설치하기
Globus 2.2 설치
작정자: 권오경 (okkwon@kisti.re.kr)
최종 수정 날짜: May 28, 2005
이 문서는 Globus 툴킷을 리눅스 PC에 설치하는 방법을 설명한다.
RedHat Linux 7.3(Linux 커널 버젼은 2.4.18-3)을 기준으로 설명하였으며,
Linux 표준 쉘인 bash 쉘을 이용한다고 가정하였다.
‘#’는 root 프롬프트를 의미하고, ‘$’는 사용자 프롬프트를 의미한다.
globus version: 2.2
example hostname: sdd125.hpcnet.ne.kr
OS: RedHat 7.3
kernel version: 2.4.18-3
gcc version: 2.96
목차
다운로드 받기
Globus를 위한 사용자 계정 만들기
설치전에 점검해야 할 사항
Globus 설치
성공적인 설치 여부 확인
gatekeeper를 서비스로 등록하기
GRAM Reporter 추가하기
Grid Ftp 서버를 서비스로 등록하기
Grid ncftp client를 설치하자.
MDS 설정 (GRIS 설정)
Common Error
——————————————————————————–
다운로드 받기 [[목차]] Globus Toolkit 2.2은 다음 주소에서 다운로드 받을 수 있다.
http://www.globus.org/gt2.2/install/download.html
Globus Toolkit 2.0 부터는 Grid Packaging Toolkit을 이용해 쉽게 설치할 수 있다.
(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 Packaging Tool(GPT)을 설치한다.
GPT 2.2.2버전을 받아서 설치하자. [HTTP download] [FTP download]
$ export GPT_LOCATION=/usr/local/globus
$ tar zxvf gpt-2.2.2-src.tar.gz
$ cd gpt-2.2.2
$ ./build_gpt
이제 GPT설치는 끝났다.
다음 명령 형식을 이용하여 Globus Toolkit의 번들 파일들을 설치해보자.
$ /usr/local/globus/sbin/gpt-build bundle options flavors
위 명령에서 이탤릭체로 된 부분을 다음과 같이 대체해서 사용하면 된다.
BUNDLE FLAVORS Data Management Client gcc32dbg Data Management SDK gcc32dbg Data Management Server gcc32dbg Information Services Client gcc32dbgpthr Information Services SDK gcc32dbgpthr Information Services Server gcc32dbgpthr Resource Management Client gcc32dbg Resource Management SDK gcc32dbg Resource Management Server gcc32dbg
전체 설치에 관한 script
Download 받기 [Globus Toolkit 2.2 Advisories Site Update 항목되어 있는 packages[2002-11-06]]
$ wget http://gridtest.hpcnet.ne.kr/software/index.php?dir=./globus/KISTI/gt2.2/globus*.gz
Data Management Client 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-data-management-client-2.2.2-src_bundle.tar.gz gcc32dbg
Data Management SDK 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-data-management-sdk-2.2.2-src_bundle.tar.gz gcc32dbg
Data Management Server 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-data-management-server-2.2.2-src_bundle.tar.gz gcc32dbg
Information Services Client 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-information-services-client-2.2.2-src_bundle.tar.gz gcc32dbgpthr
Information Services SDK 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-information-services-sdk-2.2.2-src_bundle.tar.gz gcc32dbgpthr
Information Services Server 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-information-services-server-2.2.2-src_bundle.tar.gz gcc32dbgpthr
Resource Management Client 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-resource-management-client-2.2.2-src_bundle.tar.gz gcc32dbg
Resource Management SDK 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-resource-management-sdk-2.2.2-src_bundle.tar.gz gcc32dbg
Resource Management Server 번들 설치
$ /usr/local/globus/sbin/gpt-build \\
globus-resource-management-server-2.2.2-src_bundle.tar.gz gcc32dbg
사용자 계정에 대해서 다음과 같이 환경 설정을 한다.
globus가 사용자이고 shell을 bashrc를 사용한다고 가정하자.
$ vi ~globus/.bashrc
…
export GLOBUS_LOCATION=/usr/local/globus
export GPT_LOCATION=/usr/local/globus
. $GLOBUS_LOCATION/etc/globus-user-env.sh
…
$ source ~globus/.bashrc
globus-build뒤의 설정을 한다.
$ /usr/local/globus/sbin/gpt-postinstall
running /usr/local/globus/setup/globus/setup-globus-common…
creating globus-sh-tools-vars.sh
creating globus-script-initializer
creating Globus::Core::Paths
checking globus-hostname
Done
running /usr/local/globus/setup/globus/setup-globus-gatekeeper…
Creating gatekeeper configuration file…
Done
Creating grid services directory…
Done
running /usr/local/globus/setup/globus/setup-globus-mds-common…
Creating…
/usr/local/globus/etc/grid-info.conf
Done
(생략)GSI 소프트웨어의 setup을 위해 수퍼 유저의 권한을 얻어 다음 명령을 실행시킨다.
# /usr/local/globus/setup/globus/setup-gsiglobus package 설치가 제대로 되었는지 확인한다.
$ /usr/local/globus/sbin/gpt-verify
Verifying run-time dependencies…
Verifying setup dependencies…
Verifying setup packages…
The collection of packages in /usr/local/globus appear to be coherent.
위와 같은 메시지가 나오면 설치과정은 끝난다.
성공적인 설치 여부 확인 [[목차]]
인증서 얻기
유저 인증서 요청하기
$ /usr/local/globus/bin/grid-cert-request -cn <name>
이 결과로 ~/.globus/usercert_request.pem을 얻을 수 있고,
http://gridca.gridcenter.or.kr/ 접속하여 인증서 발급을 요청한다.
인증서를 얻게 되면 ~/.globus/usercert.pem 으로 저장한다.
host에 대한 gatekeeper 인증서 요청하기
슈퍼 유저의 권한을 얻어 다음 명령을 실행한다.
# grid-cert-request -service host -host sdd125.hpcnet.ne.kr
마찬가지로 host.req 파일을 가지고
http://gridca.gridcenter.or.kr/ 접속하여 인증서 발급을 요청한다.
인증서를 얻게 되면 /etc/grid-security/hostcert.pem으로 저장한다.
CA의 인증서 설치하기
http://gridca.gridcenter.or.kr/ 접속해서 메뉴의
‘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 CA2’
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의 경우에는 http://www.globus.org/gt2.2/install.html 설치 가이드를 참조바란다.
/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)’
참고사항 : error7번이 나오는 경우가 종종 있다.
이때 telnet localhost 2119 했을 때 shared library path가 잡혀 있지 않다는 error가 발생하면 다음과 같이 하면 된다.
# vi /etc/ld.so.conf
…
/usr/local/globus/lib
# /sbin/ldconfig
# /etc/rc.d/init.d/xinetd restart
이것은 gatekeeper가 2.0에서는 static으로 compile했었지만 2.2는 shared로 compile하기 때문에 발생 할 수 있는 문제이다.
GRAM Reporter 추가하기 [[목차]]
2.0에서 기본 패키지로 들어 있었지만 2.2에서는 다운을 받아서 설치를 해야한다.
$ wget http://www-unix.globus.org/ftppub/gt2/2.2/2.2-latest/extra/gram_reporter/src/globus_gram_reporter-2.0.tar.gz
$ /usr/local/globus/sbin/gpt-build globus_gram_reporter-2.0.tar.gz gcc32dbg
$
이제 실제로 각 Scheduler에 대해서 MDS에 보고할 schema에 대해서 설치해보자. 여기선 fork를 설치한다고 가정하면 다음과 같이 하면 된다.
$ wget http://www-unix.globus.org/ftppub/gt2/2.2/2.2-latest/extra/gram_reporter/src/globus_gram_reporter_setup_fork-1.0.tar.gz
$ /usr/local/globus/sbin/gpt-build globus_gram_reporter_setup_fork-1.0.tar.gz gcc32dbg
$
condor, pbs, lsf에 대해서는 해당 경우에 맞게 다운을 받아서 설치하면 된다. 마지막으로 설치에 대해서 정리하자.
$ /usr/local/globus/sbin/gpt-postinstall
running /usr/local/globus/setup/globus/setup-globus-gram-reporter-fork…
Setting up fork gram reporter in MDS
—————————————–
Done
Grid Ftp 서버를 서비스로 등록하기 [[목차]]
GT2에서는 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
제대로 동작하는지 테스트 해보자.
GT2에서는 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를 다운받아서 설치하자. [다음과 같이 2.2에 맞게 package를 수정한것을 다운받으세요]
$ wget http://gridtest.gridcenter.or.kr/software/globus/gsincftp/globus_gsincftp-3.0.3.tar.gz
$ gpt-build globus_gsincftp-3.0.3.tar.gz gcc32dbg
$
제대로 작동하는지 테스트 해보자.
$ 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) Wed 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이 ngrid-mds라고 했을때, 다음과 같이 수정한다.
$ vi grid-info-resource-register.conf
…
dn: Mds-Vo-Op-name=register, Mds-Vo-name=ngrid-mds, o=grid
…
reghn: ngrid-mds.gridcenter.or.kr
…
MDS 서비스를 위한 서버 인증서를 만든다.
$ grid-cert-request -service ldap -host sdd125.hpcnet.ne.kr
/etc/grid-security/ldap디렉토리에 ldapcert_request.pem파일이 생긴다. http://gridca.gridcenter.or.kr/에
인증서 발급을 요청하고 ldapcert.pem에 저장한다.
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
japanese
I just could not depart your web site prior to suggesting that I really loved the usual info an individual supply in your visitors? Is gonna be back regularly to check up on new posts.