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

접미어 데이터의 배포를 위해 디렉토리 프록시 서버 구성

데이터 배포의 간단한 사례는 A에서 시작하여 M까지의 UID가 한 디렉토리 집합에 있는 항목을 저장하고, N에서 시작하여 Z까지의 UID가 다른 디렉토리 집합에 있는 항목을 저장하는 것으로 구성되어 있습니다. 디렉토리 프록시 서버는 모든 클라이언트 작업을 수신합니다. 서버에서는 어떤 디렉토리 집합이 A에서 M까지 처리하고, 어떤 디렉토리 집합이 N에서 Z까지 처리하는지를 결정해야 합니다.

    이 데이터 배포 시나리오를 처리하도록 Directory Proxy Server를 구성하는 핵심 단계는 다음과 같습니다.

  1. 디렉토리를 디렉토리 프록시 서버에 대한 데이터 소스로 추가합니다.

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

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

  4. LDIF가 적합한 데이터 소스로 로드되도록 분할합니다.

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

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

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

작업 기반 가중치가 설정되면 클라이언트 응용 프로그램은 데이터가 물리적으로 배포되지 않았던 것처럼 디렉토리 프록시 서버를 통해 검색할 수 있습니다.

다음 검색에서는 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