[클러스터] 그리드 관련 MDS 2.2 설정하기
MDS 2.2 설정
작성자: 임민열 (mylim@grid.supercomputing.re.kr)
최종 수정 날짜: 2002-08-02
이 문서는 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.2
Globus 설치 디렉토리: /usr/local/globus
목차
MDS 2.2에 추가된 기능
기존의 MDS 2.1을 지우기
MDS 2.2을 설치하기
MDS를 위한 certificate 설정하기
Hierarchical GIIS 구성하기
MDS 서버 실행하기
MDS 서버 테스트하기
MDS 로깅 서비스
——————————————————————————–
MDS 2.2에 추가된 기능 [[목차]]
MDS 2.2는 기본적으로 MDS 2.1과 많은 변화는 없다. 몇가지 편리한 기능들이 추가되었고, 보안성을 향상 시켰다.
자세한 내용은 다음을 참고한다.
http://www.globus.org/mds/NewFeatures.html
Expanded debugging capabilities
GIIS registration status checking
: GIIS 서비스에 현재 등록된 정보를 grid-info-search의 giisregistrationstatus 옵션을 가지고 체크할 수 있다.
Improved diagnostics and logging
: OpenLDAP과 GIIS/GRIS back end message들을 로깅하기 위해 Unix syslog 데몬을 사용한다.
MDS system configuration information provider
: MDS system configuration 정보를 제공하는 provider를 새로 포함한다.
GridFTP logfile information provider
: GridFTP로부터의 performance information을 MDS를 통해 제공할 수 있도록 한다.
Mutual authentication in a GIIS hierarchy
: GIIS와 GRIS사이 또는 GIIS와 GIIS사이에 상호 인증을 통해 데이타를 주고 받을 수 있도록 한다.
즉, 잘못된 서버와의 연결로 인해 문제가 발생하지 않도록 registration message를 인증 과정을 거쳐 보낼 수 있게 된다.
이를 위해, grid-info-resource-register.conf 화일에 bindmethod라는 속성이 추가되었다.
여기에는 다음 3개의 값이 들어갈 수 있다.
AUTHC-ONLY(인증을 통한 전달), AUTHC-FIRST(인증을 먼저 시도, 안되면 익명으로 전달), ANONUM-ONLY(익명으로 전달)
Newer version of OpenLDAP
: OpenLDAP의 2.0.25버전을 사용하여 MDS 서비스를 제공한다.
Base schema changes (GLUE) in support of clustering, and provider updates
: 상호호환성을 위한 GLUE(Grid Laboratory Uniform Environment)의 스키마를 제공한다.
New core information providers
: Tru64, AIX 운영체제를 위한 새로운 core GRIS information provider를 제공한다.
New start and stop commands
: SXXgris 명령어를 globus-mds 명령어로 바꾸었다.
New location for LDAP server certificate and key
: LDAP 서버의 certificate와 key 화일을 $GLOBUS_LOCATION/etc/grid-security/ldap/ 디렉토리에 유지한다.
New command syntax to request LDAP server certificate
: LDAP 서버의 certificate를 위한 request 화일을 요청하기 위한 명령어가 grid-cert-request -service ldap 으로 바뀌었다.
Adjusted default timings for GRIS providers
: Caching capabilities를 극대화하기 위해 GRIS의 information provider들의 default timing을 조정하였다.
기존의 MDS 2.1을 지우기 [[목차]]
현재 GPT에서는 globus-uninstall이라는 명령어를 제공하기는 하지만 설치된 번들을 한번에 제공하는 기능을 제공하지 않는다.
또한, 현재 MDS 2.1위에 MDS 2.2를 다시 설치할 수 없다. 그러므로 Globus를 새로 설치해야 한다.
MDS 2.2를 설치하기 [[목차]]
Globus 2.0 설치 가이드에 있는 방법대로 설치한다. 즉, MDS 2.2를 위한 Client, SDK, Server 소스 번들을 먼저 다운받은 뒤,
globus-build 명령어를 사용하여 설치한다.
Globus 2.0 설치 가이드는 다음을 참고한다.
http://gridtest.gridcenter.or.kr
MDS를 위한 certificate 설정하기 [[목차]]
MDS 2.1부터 사용자가 MDS로부터 자원 정보를 얻기 전에 상호 인증을 할 수 있도록 제공한다.
또한, MDS 2.2부터는 GIIS와 GRIS사이 또는 GIIS와 GIIS사이에 상호 인증을 통한 데이타 전송이 가능하도록 지원한다.
MDS server certificate를 생성한다.
생성되는 화일들에 대한 디폴트 위치는 /etc/grid-security/ldap/ 이며,
/usr/local/globus/etc/grid-info-server-env.conf 화일에 설정되어 있다.
# grid-cert-request -service ldap -host “ngrid-mds.gridcenter.or.kr”
certficate를 생성하기 위한 private key와 request화일이 생성되었는지 확인한다.
% ls -al /etc/grid-security/ldap/*
-rw-r–r– 1 root root 0 8월 2 16:28 /etc/grid-security/ldap/ldapcert.pem
-rw-r–r– 1 root root 1250 8월 2 16:28 /etc/grid-security/ldap/ldapcert_request.pem
-r——– 1 root root 887 8월 2 16:28 /etc/grid-security/ldap/ldapkey.pem
%
여기서 생성된 certificate request화일(ldapcert_request.pem)을 가지고 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 서버에 대한 설정을 포함한다.
grid-info-deployment-comments.conf : MDS system에 관한 관리자의 comment를 포함한다.
여기서 입력된 내용은 자원 정보의 일부로 MDS에 포함되어 진다..
gridftp-resource.conf : GrifFTP의 성능 정보를 MDS에 포함시키기 위해 사용되는 설정화일이다.
호스트네임, URL, 로그화일의 위치등을 변경할 수 있다.
일반적으로 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=ngrid-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 : 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=*.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=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 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/globus-mds 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
giisregistrationstatus // GIIS 서비스의 registration 상태를 보여준다.
예제 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”
검색 결과 확인
예제 3 : GIIS에 대한 registration 정보
$ grid-info-search -x -b “Mds-Vo-name=ngrid-mds, o=Grid” -s base giisregistrationstatus
검색 결과 확인
MDS 로깅 서비스 [[목차]]
MDS와 OpenLDAP이 동작하면서 발생하는 다양한 정보들을 Unix syslog daemon을 통해 로깅할 수 있다.
이를 위해 필요한 설정은 /etc/syslog.conf화일의 마지막에 다음을 추가한 뒤, 데몬을 띄워주면 된다.
# vi /etc/syslog.conf
…
…
local4.* /usr/local/globus/var/MDS.log
:wq
# /sbin/syslogd