[클러스터] 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

  

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.