[클러스터] 그리드 관련 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)이 단순히 호스트이름만을 적은 것보다 앞에 위치해야 한다.

  

서진우

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

You may also like...

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