[클러스터] 그리드 관련 MDS 2.1 설정하기
MDS 2.1 설정
작성자: 임민열 (mylim@hpcnet.ne.kr)
최종 수정 날짜: 2002-05-24
이 문서는 Globus toolkit을 설치한 후 Metacomputing Directory Service(MDS)를 설정하는 방법에 대해 기술한다.
RedHat Linux 7.3(Linux 커널 버젼은 2.4.18-3)을 기준으로 설명하였으며,
Linux 표준 쉘인 bash 쉘을 이용한다고 가정하였다.
‘#’는 root 프롬프트를 의미하고, ‘$’는 사용자 프롬프트를 의미한다.
Globus version: 2.0
MDS version: 2.1
Globus 설치 디렉토리: /usr/local/globus
목차
Globus 2.0 설치 가이드에 따라 MDS 2.1을 설치하기
MDS를 위한 certificate 설정하기(옵션)
Hierarchical GIIS 구성하기
MDS 서버 실행하기
MDS 서버 테스트하기
FAQ : ldap_sasl_interactive_bind_s : local error
——————————————————————————–
Globus 2.0 설치 가이드에 따라 MDS 2.1을 설치하기 [[목차]]
Globus 2.0 설치 가이드는 다음을 참고한다.
http://gridtest.hpcnet.ne.kr
MDS를 위한 certificate 설정하기(옵션) [[목차]]
MDS 2.1부터 MDS 서버를 위한 certificate를 설치하여 클라이언트와 public key infrastructure를 이용하여 상호 인증을 할 수 있도록 한다.
하지만, 단순히 모든 사용자에게 MDS에 대한 접근을 허용한다면 이 부분을 그냥 지나가도 무방하다.
MDS server certificate를 생성한다.
% grid-cert-request -cn “ldap/kisti-mds.gridcenter.or.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
certficate를 생성하기 위한 private key와 request화일이 생성되었는지 확인한다.
% ls -al /usr/local/globus/etc/server.*
-rw-rw-r– 1 globus globus 0 5월 24 13:17 /usr/local/globus/etc/server.cert
-r——– 1 globus globus 887 5월 16 17:10 /usr/local/globus/etc/server.key
-rw-r–r– 1 globus globus 1503 5월 16 17:10 /usr/local/globus/etc/server.request
%
여기서 생성된 certificate request화일(server.request)을 가지고 certificate를 요청한다.
certificate를 요청하는 방법은 user certificate를 요청하는 방법과 동일하다.
예를 들어, GridCA를 이용하여 인증서를 받기 위해서는 Upload a new CSR for a user를 클릭하여 request화일을 업로드하면 된다.
CA(Certificate Authority)로부터 인증서를 받으면 server.cert라는 화일에 저장하면 된다.
Hierarchical GIIS 구성하기[[목차]]
먼저 설정화일들에 대해 간략히 설명하면 아래와 같다.
grid-info-resource-ldif.conf : GRIS에 메타데이타를 넘겨주는 information provider들에 대한 리스트를 포함한다.
grid-info-resource-register.conf : GRIS가 registration message를 보내는 GIIS서버에 대한 정보를 포함한다.
grid-info-site-giis.conf : GIIS 서버가 동작하는 방법에 대한 정보를 포함한다. 디폴트로 아무런 내용을 포함하지 않는다.
grid-info-site-policy.conf : GIIS 서버에 대한 access control을 위한 정보를 포함한다.
grid-info-slapd.conf : MDS 서버가 동작할 때 사용되는 LDAP 서버에 대한 설정을 포함한다.
일반적으로 GIIS서버를 유지하지 않을 경우, 단순히
아래의 그림은 Hierachical GIIS의 한 예를 보여준다.
위의 그림에 나타난 대로 4개의 호스트에 포함된 설정화일의 내용을 차례대로 살펴보자.
일반적으로 GIIS서버를 유지하지 않을 경우, 1,2,3번 호스트의 내용은 무시하고 단순히 4번 호스트에 포함된 설정을 참고하면 된다.
Host 1 : kr-mds.gridcenter.or.kr
grid-info-site-policy.conf
objectclass: MdsRegistrationPolicy
policydata: (&(Mds-Service-hn=kisti-mds.gridcenter.or.kr)(Mds-Service-port=2135))
policydata: (&(Mds-Service-hn=ngrid-mds.gridcenter.or.kr)(Mds-Service-port=2135))
grid-info-slapd.conf
schemacheck off
include /usr/local/globus/etc/openldap/schema/core.schema
include /usr/local/globus/etc/grid-info-resource.schema
include /usr/local/globus/etc/grid-info-gram-reporter.schema
pidfile /usr/local/globus/var/resourceslapd.pid
argsfile /usr/local/globus/var/resourceslapd.args
modulepath /usr/local/globus/libexec/openldap/gcc32dbgpthr
moduleload libback_ldif.la
moduleload libback_giis.la
# database ldif
# suffix “Mds-Vo-name=local, o=Grid”
# conf /usr/local/globus/etc/grid-info-resource-ldif.conf
# anonymousbind yes
# access to * by * write
database giis
suffix “Mds-Vo-name=kr-mds, 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
Host 2 : kisti-mds.gridcenter.or.kr
grid-info-resource-register.conf
dn: Mds-Vo-Op-name=register, Mds-Vo-name=kr-mds, o=grid
regtype: mdsreg2
reghn: kr-mds.gridcenter.or.kr
regport: 2135
regperiod: 600
type: ldap
hn: kisti-mds.gridcenter.or.kr
port: 2135
rootdn: Mds-Vo-name=kisti-mds, o=grid
ttl: 1200
timeout: 20
mode: cachedump
cachettl: 30
dn: Mds-Vo-Op-name=register, Mds-Vo-name=kisti-mds, o=grid
regtype: mdsreg2
reghn: kisti-mds.gridcenter.or.kr
regport: 2135
regperiod: 600
type: ldap
hn: kisti-mds.gridcenter.or.kr
port: 2135
rootdn: Mds-Vo-name=local, o=grid
ttl: 1200
timeout: 20
mode: cachedump
cachettl: 30
grid-info-site-policy.conf
objectclass: MdsRegistrationPolicy
policydata: (&(Mds-Service-hn=*.gridcenter.or.kr)(Mds-Service-port=2135))
grid-info-slapd.conf
schemacheck off
include /usr/local/globus/etc/openldap/schema/core.schema
include /usr/local/globus/etc/grid-info-resource.schema
include /usr/local/globus/etc/grid-info-gram-reporter.schema
pidfile /usr/local/globus/var/resourceslapd.pid
argsfile /usr/local/globus/var/resourceslapd.args
modulepath /usr/local/globus/libexec/openldap/gcc32dbgpthr
moduleload libback_ldif.la
moduleload libback_giis.la
database ldif
suffix “Mds-Vo-name=local, o=Grid”
conf /usr/local/globus/etc/grid-info-resource-ldif.conf
anonymousbind yes
access to * by * write
database giis
suffix “Mds-Vo-name=kisti-mds, 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
Host 3 : ngrid-mds.gridcenter.or.kr
grid-info-resource-register.conf
dn: Mds-Vo-Op-name=register, Mds-Vo-name=kr-mds, o=grid
regtype: mdsreg2
reghn: kr-mds.gridcenter.or.kr
regport: 2135
regperiod: 600
type: ldap
hn: ngrid-mds.gridcenter.or.kr
port: 2135
rootdn: Mds-Vo-name=ngrid-mds, o=grid
ttl: 1200
timeout: 20
mode: cachedump
cachettl: 30
dn: Mds-Vo-Op-name=register, Mds-Vo-name=ngrid-mds, o=grid
regtype: mdsreg2
reghn: ngrid-mds.gridcenter.or.kr
regport: 2135
regperiod: 600
type: ldap
hn: ngrid-mds.gridcenter.or.kr
port: 2135
rootdn: Mds-Vo-name=local, o=grid
ttl: 1200
timeout: 20
mode: cachedump
cachettl: 30
grid-info-site-policy.conf
objectclass: MdsRegistrationPolicy
policydata: (&(Mds-Service-hn=*)(Mds-Service-port=2135))
grid-info-slapd.conf
schemacheck off
include /usr/local/globus/etc/openldap/schema/core.schema
include /usr/local/globus/etc/grid-info-resource.schema
include /usr/local/globus/etc/grid-info-gram-reporter.schema
pidfile /usr/local/globus/var/resourceslapd.pid
argsfile /usr/local/globus/var/resourceslapd.args
modulepath /usr/local/globus/libexec/openldap/gcc32dbgpthr
moduleload libback_ldif.la
moduleload libback_giis.la
database ldif
suffix “Mds-Vo-name=local, o=Grid”
conf /usr/local/globus/etc/grid-info-resource-ldif.conf
anonymousbind yes
access to * by * write
database giis
suffix “Mds-Vo-name=ngrid-mds, 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
Host 4 : sdd124.hpcnet.ne.kr
grid-info-resource-register.conf
dn: Mds-Vo-Op-name=register, Mds-Vo-name=ngrid-mds, o=grid
regtype: mdsreg2
reghn: ngrid-mds.gridcenter.or.kr
regport: 2135
regperiod: 600
type: ldap
hn: sdd124.hpcnet.ne.kr
port: 2135
rootdn: Mds-Vo-name=local, o=grid
ttl: 1200
timeout: 20
mode: cachedump
cachettl: 30
grid-info-slapd.conf
schemacheck off
include /usr/local/globus/etc/openldap/schema/core.schema
include /usr/local/globus/etc/grid-info-resource.schema
include /usr/local/globus/etc/grid-info-gram-reporter.schema
pidfile /usr/local/globus/var/resourceslapd.pid
argsfile /usr/local/globus/var/resourceslapd.args
modulepath /usr/local/globus/libexec/openldap/gcc32dbgpthr
moduleload libback_ldif.la
moduleload libback_giis.la
database ldif
suffix “Mds-Vo-name=local, o=Grid”
conf /usr/local/globus/etc/grid-info-resource-ldif.conf
anonymousbind yes
access to * by * write
# database giis
# suffix “Mds-Vo-name=ngrid-mds, 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
MDS 서버 실행하기 [[목차]]
다음 명령을 수행한다.
$ /usr/local/globus/sbin/SXXgris start
Starting up Openldap 2.0 SLAPD server for the GRIS
MDS 서버 테스트하기 [[목차]]
MDS서버가 유지하고 있는 데이타를 텍스트 포맷(정확히 말하면, LDIF format)으로 보기 위해 다음 명령을 수행한다.
$ grid-info-search -anonymous(혹은 -x)
version: 2
#
# filter: (objectclass=*)
# requesting: ALL
#
# sdd124.hpcnet.ne.kr, local, grid
dn: Mds-Host-hn=sdd124.hpcnet.ne.kr,Mds-Vo-name=local,o=grid
objectClass: MdsComputer
objectClass: MdsComputerTotal
objectClass: MdsCpu
objectClass: MdsCpuCache
objectClass: MdsCpuFree
objectClass: MdsCpuSmp
objectClass: MdsCpuTotal
objectClass: MdsCpuTotalFree
objectClass: MdsFsTotal
objectClass: MdsHost
objectClass: MdsMemoryRamTotal
objectClass: MdsMemoryVmTotal
objectClass: MdsNet
objectClass: MdsNetTotal
objectClass: MdsOs
Mds-Computer-isa: IA32
Mds-Computer-Total-nodeCount: 1
Mds-Computer-platform: i686
Mds-Cpu-Cache-l2kB: 256
Mds-Cpu-Free-15minX100: 100
Mds-Cpu-Free-1minX100: 100
Mds-Cpu-Free-5minX100: 100
Mds-Cpu-Smp-size: 1
Mds-Cpu-Total-Free-15minX100: 100
Mds-Cpu-Total-Free-1minX100: 100
Mds-Cpu-Total-Free-5minX100: 100
Mds-Cpu-Total-count: 1
Mds-Cpu-features: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmo
v pat pse36 mmx fxsr sse
Mds-Cpu-model: Pentium III (Coppermine)
Mds-Cpu-speedMHz: 664
Mds-Cpu-vendor: GenuineIntel
Mds-Cpu-version: 6.8.1
Mds-Fs-Total-count: 3
Mds-Fs-Total-freeMB: 32094
Mds-Fs-Total-sizeMB: 37764
Mds-Fs-freeMB: 124
Mds-Fs-freeMB: 15930
Mds-Fs-freeMB: 16040
Mds-Fs-sizeMB: 124
Mds-Fs-sizeMB: 17955
Mds-Fs-sizeMB: 19685
Mds-Host-hn: sdd124.hpcnet.ne.kr
Mds-Memory-Ram-Total-freeMB: 51
Mds-Memory-Ram-Total-sizeMB: 248
Mds-Memory-Ram-freeMB: 51
Mds-Memory-Ram-sizeMB: 248
Mds-Memory-Vm-Total-freeMB: 1023
Mds-Memory-Vm-Total-sizeMB: 1023
Mds-Memory-Vm-freeMB: 1023
Mds-Memory-Vm-sizeMB: 1023
Mds-Net-Total-count: 2
Mds-Net-addr: 127.0.0.1
Mds-Net-addr: 150.183.234.124
Mds-Net-name: eth0
Mds-Net-name: lo
Mds-Net-netaddr: 127.0.0.0/8
Mds-Net-netaddr: 150.183.234.0/24
Mds-Os-name: Linux
Mds-Os-release: 2.4.13-1hl
Mds-keepto: 20020524062812Z
Mds-validfrom: 20020524062812Z
Mds-validto: 20020524062812Z
# processors, sdd124.hpcnet.ne.kr, local, grid
dn: Mds-Device-Group-name=processors, Mds-Host-hn=sdd124.hpcnet.ne.kr,Mds-Vo-n
ame=local,o=grid
objectClass: MdsCpu
objectClass: MdsCpuSmp
objectClass: MdsCpuTotal
objectClass: MdsCpuCache
objectClass: MdsCpuFree
objectClass: MdsCpuTotalFree
objectClass: MdsDeviceGroup
Mds-Device-Group-name: processors
Mds-validfrom: 20020524062812Z
Mds-validto: 20020524062912Z
Mds-keepto: 20020524062912Z
Mds-Cpu-Cache-l2kB: 256
Mds-Cpu-Free-15minX100: 100
Mds-Cpu-Free-1minX100: 100
Mds-Cpu-Free-5minX100: 100
Mds-Cpu-Smp-size: 1
Mds-Cpu-Total-Free-15minX100: 100
Mds-Cpu-Total-Free-1minX100: 100
Mds-Cpu-Total-Free-5minX100: 100
Mds-Cpu-Total-count: 1
Mds-Cpu-features: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmo
v pat pse36 mmx fxsr sse
Mds-Cpu-model: Pentium III (Coppermine)
Mds-Cpu-speedMHz: 664
Mds-Cpu-vendor: GenuineIntel
Mds-Cpu-version: 6.8.1
이하 생략…
위의 명령은 단순한 anonymous query를 보여준다. 이는 서버와의 어떤 secure한 channel없이 데이타를 가져오는 것을 의미한다.
만약 security-enable query를 수행하기 위해서는 -anonymous(혹은 -x)를 제거하면 된다.
grid-info-search에 대해 좀 더 자세히 살펴보면 다음과 같다.
$grid-info-search [options]
-mdshost host (-h) // 호스트 네임, 입력하지 않으면 환경변수 $GRID_INFO_HOST의 값이 사용된다.
-mdsport port (-p) // 포트 넘버, 입력하지 않으면 환경변수 $GRID_INFO_PORT의 값이 사용된다.
-anonymous (-x) // anonymous binding
-mdsbasedn branch-point (-b) // base Distinguished Name, 입력하지 않으면 환경변수 $GRID_INFO_BASEDN의 값이 사용된다.
-s scope // 검색 범위, base | one | sub의 값을 가진다.
“attribute” // 리턴하고 하는 attribute name
“filter” // serach filter
예제 1 : GRIS에 대한 query
$ grid-info-search -h ngrid-mds.gridcenter.or.kr -p 2135 -x -b “Mds-Vo-name=local, o=Grid”
검색 결과 확인
예제 2 : GIIS에 대한 query
$ grid-info-search -h ngrid-mds.gridcenter.or.kr -p 2135 -x -b “Mds-Vo-name=ngrid-mds, o=Grid”
검색 결과 확인
FAQ : ldap_sasl_interactive_bind_s : local error [[목차]]
MDS와 관련하여 자주 등장하는 질문이 local error가 발생한다는 것입니다.
만약, MDS가 제대로 설치되었고 anonymous binding을 통한 query가 정상적으로 실행된다면, 이 문제를 해결하기 위해서 다음을 살펴보시면 됩니다.
사용자가 제대로 된 프락시를 가지고 있는가?
‘/tmp’ 디렉토리에 서버를 실행하는 계정의 proxy가 존재하지 않는가? 존재한다면 삭제하여야 한다.
이것을 확인하는 방법은 x509up_u???형태의 화일중에서 ???부분이 그 계정의 uid와 일치하는 화일을 찾으면 된다.
‘/etc/hosts’ 화일에 query를 수행하는 서버에 대한 FQDN(Fully Qualified Domain Name)이 단순히 호스트이름만을 적은 것보다 앞에 위치해야 한다.