Sun Java System Directory Server Enterprise Edition 6.1 관리 설명서

접미어 데이터의 배포를 위한 Directory Proxy Server 구성

단순한 데이터 배포 사례는 UID가 A에서 M까지 시작하는 항목을 한 디렉토리 집합에 저장하고, UID가 N에서 Z까지 시작하는 항목을 다른 디렉토리 집합에 저장하는 과정으로 구성됩니다. Directory Proxy Server에서 모든 클라이언트 작업을 수신합니다. 서버에서 A부터 M까지 처리하는 디렉토리 집합과 N부터 Z까지 처리하는 디렉토리 집합을 결정해야 합니다.

    이 데이터 배포 시나리오를 다루는 Directory Proxy Server 구성에서 중요한 단계는 다음과 같습니다.

  1. 디렉토리를 Directory Proxy Server의 데이터 소스로 추가합니다.

  2. 데이터 소스를 다른 데이터 배포를 처리하는 데이터 소스 풀에 추가합니다.

  3. 클라이언트 요청을 적절한 데이터 풀에 배포하도록 설계된 데이터 보기를 만듭니다.

  4. LDIF를 분할하여 적절한 데이터 소스에 로드합니다.

  5. 분할 LDIF를 적절한 데이터 소스로 가져옵니다.

  6. 적절한 데이터 풀에 첨부된 데이터 소스에서 작업 기준의 가중치를 조정합니다.

다음 예는 포트 9389를 수신하는 Directory Proxy Server와 관련되어 있습니다. 예를 단순화하기 위해 프록시는 세 개의 Directory Server 인스턴스에서만 설명된 대로 배포하도록 구성되어 있습니다. 가용성과 읽기 확장성을 위해 복제된 디렉토리 토폴로지를 사용하여 LDAP 데이터를 저장합니다. 한 Directory Server 인스턴스 dsA-M:1389는 UID가 A에서 M까지 시작하는 사용자 항목을 처리합니다. 다른 Directory Server 인스턴스 dsN-Z:2389는 UID가 N에서 Z까지 시작하는 사용자 항목을 처리합니다. 마지막 디렉토리 인스턴스에서는 접미어가 dsBase:3389인 기본 항목을 처리합니다.

첫 번째 단계에서는 데이터 소스를 만들고 활성화합니다. 기본 데이터 소스는 UID가 없는 접미어 루트 주변의 항목을 보관합니다. 일반적인 배포에서 이러한 항목 수는 배포된 항목 수보다 훨씬 적습니다.


$ dpconf create-ldap-data-source -p 9389 dsA-M localhost:1389
$ dpconf set-ldap-data-source-prop -p 9389 dsA-M is-enabled:true

$ dpconf create-ldap-data-source -p 9389 dsN-Z localhost:2389
$ dpconf set-ldap-data-source-prop -p 9389 dsN-Z is-enabled:true

$ dpconf create-ldap-data-source -p 9389 dsBase localhost:3389
$ dpconf set-ldap-data-source-prop -p 9389 dsBase is-enabled:true

두 번째 단계에서는 데이터 소스를 데이터 소스 풀에 추가합니다.


$ dpconf create-ldap-data-source-pool -p 9389 "Base Pool"
$ dpconf attach-ldap-data-source -p 9389 "Base Pool" dsBase

$ dpconf create-ldap-data-source-pool -p 9389 "A-M Pool"
$ dpconf attach-ldap-data-source -p 9389 "A-M Pool" dsA-M

$ dpconf create-ldap-data-source-pool -p 9389 "N-Z Pool"
$ dpconf attach-ldap-data-source -p 9389 "N-Z Pool" dsN-Z

세 번째 단계에서는 클라이언트 요청을 적절한 데이터 풀에 배포하도록 설계된 데이터 보기를 만듭니다. 기본 풀에서 dc=example,dc=com을 처리하고, 배포된 데이터를 보관하는 풀에서 UID 값에 따라 ou=people,dc=example,dc=com을 처리하는 방법을 확인합니다. 이 단계에서 서버를 다시 시작해야 합니다.


$ dpconf create-ldap-data-view -p 9389 "Base View" "Base Pool" \
dc=example,dc=com

$ dpconf create-ldap-data-view -p 9389 "A-M View" "A-M Pool" \
ou=people,dc=example,dc=com
$ dpconf set-ldap-data-view-prop -p 9389 "A-M View" \
distribution-algorithm:lexicographic lexicographic-attrs:uid \
lexicographic-lower-bound:a lexicographic-upper-bound:m
The proxy server will need to be restarted in order for the changes to take effect

$ dpconf create-ldap-data-view -p 9389 "N-Z View" "N-Z Pool" \
ou=people,dc=example,dc=com
$ dpconf set-ldap-data-view-prop -p 9389 "N-Z View" \
distribution-algorithm:lexicographic lexicographic-attrs:uid \
lexicographic-lower-bound:n lexicographic-upper-bound:z
The proxy server will need to be restarted in order for the changes to take effect
$ dpadm restart /local/dps

네 번째 단계에서는 LDIF를 분할하여 적절한 데이터 소스에 로드합니다. 이 예에서는 초기 분할을 수행하기 위한 dsadm split-ldif 명령과, 모든 데이터 소스의 최상위 항목을 유지하기 위한 일부 파일 편집을 모두 사용합니다. 그러면 액세스 제어 명령을 지정하는 최상위 항목을 유지하면서도 각 데이터 소스에 단일 가져오기 명령을 사용할 수 있습니다.


$ dpadm split-ldif /local/dps /local/ds6/ldif/Example.ldif /tmp/
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Java Version: 1.5.0_09
 (Java Home: /local/jre)
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Java Heap Space: Total Memory
 (-Xms) = 3MB,
 Max Memory (-Xmx) = 63MB
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Operating System: SunOS/sparc 5.10
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Entry starting at line 0 does not
 start with a DN
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Unable to parse line "# Kirsten is
 a Directory Administrator and therefore should not" of entry "uid=kvaughan, ou=People,
 dc=example,dc=com" starting at line 112 as an attribute/value pair -- no colon found.
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Unable to parse line "# Robert is
 a Directory Administrator and therefore should not" of entry "uid=rdaugherty,
 ou=People, dc=example,dc=com" starting at line 298 as an attribute/value pair --
 no colon found.
[14/May/2007:21:14:16 +0200] - INTERNAL   - ERROR - Unable to parse line "# Harry is
 a Directory Administrator and therefore should not" of entry "uid=hmiller, ou=People,
 dc=example,dc=com" starting at line 556 as an attribute/value pair -- no colon found.
[14/May/2007:21:14:16 +0200] - INTERNAL   - INFO  - SplitLDIF processing complete.
  Processed 156 entries.
$ ls /tmp/*ldif
/tmp/a-m view.ldif    /tmp/base view.ldif   /tmp/n-z view.ldif

이 단계에서도 가져오기를 수행하기 전에 LDIF에 추가된 최상위 항목이 필요합니다.


$ cp /local/ds6/ldif/Example.ldif /tmp/top.ldif
$ vi /tmp/top.ldif 
$ cat /tmp/top.ldif  
dn: dc=example,dc=com
objectclass: top
objectclass: domain
dc: example
aci: (target ="ldap:///dc=example,dc=com")(targetattr !=
 "userPassword")(version 3.0;acl "Anonymous read-search access";
 allow (read, search, compare)(userdn = "ldap:///anyone");)
aci: (target="ldap:///dc=example,dc=com") (targetattr =
  "*")(version 3.0; acl "allow all Admin group"; allow(all) groupdn =
  "ldap:///cn=Directory Administrators,ou=Groups,dc=example,dc=com";)

$ cat /tmp/top.ldif /tmp/base\ view.ldif > /tmp/top\ and\ base\ view.ldif
$ cat /tmp/top.ldif /tmp/a-m\ view.ldif > /tmp/top\ and\ a-m\ view.ldif
$ cat /tmp/top.ldif /tmp/n-z\ view.ldif > /tmp/top\ and\ n-z\ view.ldif

다섯 번째 단계에서는 분할 LDIF를 적절한 데이터 소스로 가져옵니다. 여기서 기본 항목을 처리하는 디렉토리는 포트 3389에 있습니다. A-M을 처리하는 디렉토리는 포트 1389에서 수신합니다. N-Z를 처리하는 디렉토리는 포트 2389에서 수신합니다.


$ dsconf import -p 1389 /tmp/top\ and\ a-m\ view.ldif dc=example,dc=com
...
Task completed (slapd exit code: 0).

$ dsconf import -p 2389 /tmp/top\ and\ n-z\ view.ldif dc=example,dc=com
...
Task completed (slapd exit code: 0).
$ dsconf import -p 3389 /tmp/top\ and\ base\ view.ldif dc=example,dc=com
...
Task completed (slapd exit code: 0).

여섯 번째 단계에서는 적절한 데이터 풀에 첨부된 데이터 소스에서 작업 기준의 가중치를 조정합니다. 클라이언트 응용 프로그램에서 검색 이외의 작업을 수행하는 경우에는 해당 작업에도 가중치를 설정해야 합니다.


$ dpconf set-attached-ldap-data-source-prop -p 9389 "Base Pool" dsBase search-weight:1
$ dpconf set-attached-ldap-data-source-prop -p 9389 "A-M Pool" dsA-M search-weight:1
$ dpconf set-attached-ldap-data-source-prop -p 9389 "N-Z Pool" dsN-Z search-weight:1

작업 기준의 가중치를 설정한 후에는 데이터가 물리적으로 분산되지 않은 경우와 마찬가지로 클라이언트 응용 프로그램에서 Directory Proxy Server를 통해 검색을 수행할 수 있습니다.

다음 검색에서는 UID가 R로 시작하는 사용자를 찾습니다.


$ ldapsearch -p 9389 -b dc=example,dc=com uid=rfisher
version: 1
dn: uid=rfisher, ou=People, dc=example,dc=com
cn: Randy Fisher
sn: Fisher
givenName: Randy
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: rfisher
mail: rfisher@example.com
telephoneNumber: +1 408 555 1506
facsimileTelephoneNumber: +1 408 555 1992
roomNumber: 1579

다음 검색에서는 기본 항목 중 하나를 찾습니다.


$ ldapsearch -p 9389 -b ou=groups,dc=example,dc=com cn=hr\ managers
version: 1
dn: cn=HR Managers,ou=groups,dc=example,dc=com
objectClass: top
objectClass: groupOfUniqueNames
cn: HR Managers
ou: groups
uniqueMember: uid=kvaughan, ou=People, dc=example,dc=com
uniqueMember: uid=cschmith, ou=People, dc=example,dc=com
description: People who can manage HR entries