[클러스터] 그리드 관련 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  

서진우

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

You may also like...

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