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

4장 디렉토리 서버 구성

이 장에서는 디렉토리 서버 구성 방법에 대해 설명합니다. dsconf 명령을 사용할 수 있습니다(dsconf(1M) 설명서 페이지 참조).

기본 방법인 디렉토리 서비스 제어 센터(Directory Service Control Center, DSCC)를 사용할 수도 있습니다. DSCC는 구성 프로세스 중에 추가 검사 작업을 수행하여 오류를 최소화할 수 있습니다. 또한 DSCC를 사용하면 서버 인스턴스의 구성을 다른 서버 인스턴스로 복사할 수 있습니다. DSCC 사용에 대한 자세한 내용은 DSCC 온라인 도움말을 참조하십시오.

디렉토리 서버 인스턴스의 구성 표시

디렉토리 서버 인스턴스의 구성을 표시하려면 dsconf info를 실행합니다.


$ dsconf info -h host -p port
Instance path   :  instance path
Global State    :  read-write
Host Name       :  host
Port            :  port
Secure port     :  secure port
Total entries   :  20844

Suffixes        :  suffix-DN

Dest. Servers   :  host:port

On-Going Tasks  :  import
Finished Tasks  :  backup

위의 출력은 사용자가 대상 서버에서 접미어와 복제 계약을 만들었다고 가정합니다. 또한 진행 중인 가져오기 작업과 완료된 백업 작업이 표시됩니다.

DSCC를 사용하여 구성 수정

구성을 수정하려면 DSCC를 사용하는 것이 좋습니다. 이 브라우저 인터페이스는 구성을 신속하고 효율적으로 설정할 수 있도록 도와주는 작업 기반의 컨트롤을 제공합니다. DSCC를 사용하면 한 서버에서 구성 설정을 수정한 다음 해당 구성 설정을 다른 서버로 복사할 수 있습니다. 또한 DSCC 인터페이스는 사용자를 대신하여 복잡하고 상호 종속된 구성을 관리합니다. DSCC를 사용하여 구성을 수정하는 자세한 절차는 DSCC 온라인 도움말을 참조하십시오.

명령줄에서 구성 수정

명령줄 도구를 사용하는 스크립트를 작성하여 구성 작업을 자동화할 수 있습니다.

dsconf 명령을 사용하여 명령줄에서 구성을 수정합니다. 이 명령은 LDAP를 사용하여 cn=config 하위 트리를 수정합니다. dsconf에 대한 자세한 내용은 디렉토리 서버 명령줄 도구를 참조하십시오.

dsconf를 사용하여 수행할 수 없는 작업에서는 ldapmodify 명령을 사용합니다.


주 –

dsconf set-server-prop 명령을 사용하여 서버 구성 등록 정보를 수정하려면 수정 가능한 등록 정보와 해당 기본값에 대해 알고 있어야 합니다. 모든 등록 정보에 대한 도움말을 표시하려면 다음 명령을 사용합니다.


$ dsconf help-properties -v

등록 정보 도움말에서 원하는 항목을 검색합니다. 예를 들어 UNIX 플랫폼에서 다음을 입력하여 메모리 캐시 등록 정보를 검색합니다.


$ dsconf help-properties -v | grep cache

cn=config의 구성 항목과 허용되는 값 범위를 포함한 모든 구성 항목 및 속성에 대한 자세한 내용은 Sun Java System Directory Server Enterprise Edition 6.3 Reference를 참조하십시오.

dse.ldif 파일 수정

디렉토리 서버는 모든 구성 정보를 아래 파일에 저장합니다.

instance-path/config/dse.ldif


주의 – 주의 –

dse.ldif 파일의 내용을 직접 편집하여 구성을 수정할 경우 오류 발생 가능성이 커지므로 바람직하지 않습니다. 이 파일을 수동으로 편집하려면 파일을 편집하기 전에 서버를 중지하고 편집을 마친 후에 다시 시작합니다.


dse.ldif 파일은 LDIF(LDAP Data Interchange Format) 형식입니다. LDIF는 항목, 속성 및 해당 값을 텍스트로 표현하며 RFC 2849(http://www.ietf.org/rfc/rfc2849)에 설명된 표준 형식입니다.

dse.ldif 파일의 디렉토리 서버 구성은 다음과 같습니다.

관리 사용자 구성

디렉토리 서버에는 기본 관리 사용자, 디렉토리 관리자 및 cn=admin,cn=Administrators,cn=config 사용자가 있습니다. 이러한 모든 사용자는 동일한 액세스 권한을 갖지만 cn=admin,cn=Administrators,cn=config는 ACI를 따릅니다.

이 절에서는 루트 액세스 권한이 있는 관리 사용자를 만드는 방법과 디렉토리 관리자를 구성하는 방법에 대해 설명합니다.

Procedure루트 액세스 권한이 있는 관리 사용자를 만드는 방법

cn=admin,cn=Administrators,cn=config와 동일한 권한을 가진 새 관리 사용자를 만들려면 cn=Administrators,cn=config 그룹에서 새 사용자를 만듭니다. 이 그룹의 모든 사용자는 디렉토리 관리자와 동일한 액세스 권한이 허용되는 전역 ACI를 따릅니다.

DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.

  1. 새 관리 사용자를 만듭니다.

    예를 들어 cn=Admin24,cn=Administrators,cn=config 새 사용자를 만들려면 다음을 입력합니다.


    $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    dn: cn=admin24,cn=Administrators,cn=config
    changetype: add
    objectclass: top
    objectclass: person
    userPassword: password
    description: Administration user with the same access rights as Directory Manager.

    -D 옵션과 -w 옵션은 각각 이 항목을 작성할 수 있는 권한이 있는 사용자의 바인드 DN과 비밀번호를 제공합니다.

Procedure디렉토리 관리자를 구성하는 방법

디렉토리 관리자는 UNIX 시스템의 root 사용자와 비슷한 권한이 있는 서버 관리자입니다. 액세스 제어는 디렉토리 관리자에게 적용되지 않습니다.

대부분의 관리 작업에서는 디렉토리 관리자를 사용할 필요가 없습니다. 대신 cn=admin,cn=Administrators,cn=config 사용자나 cn=Administrators,cn=config 아래에 만든 다른 사용자를 사용할 수 있습니다. 복제 복구, tombstone 검색 등과 같은 복제 문제 해결 작업과 루트 ACI 변경 작업에서만 디렉토리 관리자가 필요합니다.

디렉토리 관리자 DN과 비밀번호를 변경하고 비밀번호를 자동으로 읽어올 수 있는 파일을 만들 수도 있습니다.

DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.

  1. 기존 디렉토리 관리자 DN을 찾습니다.


    $ dsconf get-server-prop -h host -p port root-dn
    root-dn:cn=Directory Manager
  2. 필요한 경우 디렉토리 관리자 설정을 수정합니다.

    • 디렉토리 관리자 DN을 수정하려면 다음을 입력합니다.


      $ dsconf set-server-prop -h host -p port root-dn:new-root-dn
      

      디렉토리 관리자 DN에 공백이 있는 경우 따옴표를 사용합니다. 예를 들면 다음과 같습니다.


      $ dsconf set-server-prop -h host1 -p 1389 root-dn:"cn=New Directory Manager"
    • 디렉토리 관리자 비밀번호를 변경하려면 다음을 입력합니다.


      $ dsconf set-server-prop -h host -p port root-pwd:new-root-dn-password
      

      보안상 일반 텍스트 비밀번호를 명령줄 인수로 전달하지 않으려면 비밀번호 설정을 위한 임시 파일을 만듭니다.


      $ echo password > /tmp/pwd.txt

      이 파일을 읽고 나중에 사용하기 위해 비밀번호를 저장합니다. 서버 루트 비밀번호 파일 등록 정보를 설정합니다.


      $ dsconf set-server-prop -h host -p port root-pwd-file:/tmp/pwd.txt

      이 명령은 서버에 비밀번호 파일을 읽으라는 메시지를 표시합니다. 비밀번호 파일 등록 정보를 설정한 후 임시 비밀번호 파일을 제거합니다.


      $ rm /tmp/pwd.txt

구성 정보 보호

루트 디렉토리 서버 항목(길이가 0인 DN ""을 사용한 기본 객체 검색에서 반환되는 항목)과 cn=config, cn=monitorcn=schema 아래의 하위 트리에는 디렉토리 서버에서 자동으로 생성되는 액세스 제어 지침(ACI)이 포함되어 있습니다. 이러한 ACI는 디렉토리 항목에 대한 사용자 비밀번호를 결정하는 데 사용됩니다. 이 ACI는 평가용으로 충분합니다. 그러나 작업 환경 배포를 위해서는 액세스 제어 요구 사항을 평가하여 자체 액세스 제어를 설계해야 합니다.

보안상 하나 이상의 추가 하위 트리를 숨겨서 구성 정보를 보호하려면 DIT에 추가 ACI를 저장해야 합니다.

ACI 만들기에 대한 자세한 내용은 7 장, 디렉토리 서버 액세스 제어을 참조하십시오.

DSCC 구성

이 절에서는 DSCC 구성에 관한 다음 정보에 대해 설명합니다.

Procedure일반 에이전트 컨테이너 포트 번호를 변경하는 방법

일반 에이전트 컨테이너 포트 번호 기본값은 11162입니다. 일반 에이전트 컨테이너는 DSCC 에이전트 포트를 jmxmp-connector-port로 정의합니다. 관리상 DSCC 에이전트 및 일반 에이전트 컨테이너에 다른 포트 번호를 사용해야 하는 경우 다음 절차를 수행합니다.

DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.

  1. 루트로 jmxmp-connector-port에 대한 기존 포트 번호를 확인합니다.


    $ su 
    Password: 
    # cacaoadm list-params
    ...
    jmxmp-connector-port=11162
    ...
  2. DSCC 에이전트 포트 번호를 변경합니다.

    DSCC 에이전트 포트 번호를 변경할 때 일반 에이전트 컨테이너를 중지해야 합니다.


    # cacaoadm stop
    # cacaoadm set-param jmxmp-connector-port=new-port
    # cacaoadm start

    이 명령의 위치는 명령 위치를 참조하십시오.

  3. DSCC에서 서버를 등록 취소한 다음 새 DSCC 에이전트 포트 번호를 사용하여 다시 등록합니다.

    또한 새 서버를 만들 경우 기본값이 아닌 DSCC 에이전트 포트 번호를 지정해야 합니다.

Procedure디렉토리 서비스 관리자 비밀번호를 재설정하는 방법

디렉토리 서비스 관리자 비밀번호를 재설정하려면 이 절차에 설명된 것처럼 DSCC를 사용합니다.

  1. DSCC에 액세스하는 방법에 설명된 것처럼 DSCC에 액세스합니다.

  2. 설정 탭을 클릭한 다음 디렉토리 서비스 관리자를 선택합니다.

  3. 비밀번호를 변경할 디렉토리 서비스 관리자의 이름을 클릭합니다.

  4. 등록 정보 화면에 새 비밀번호를 입력합니다.

    비밀번호 확인 필드에 새 비밀번호를 다시 입력하여 확인합니다. 확인을 눌러 변경 사항을 저장합니다.

ProcedureDSCC 세션 자동 시간 초과 지연을 확장하는 방법

일정 시간 후에 DSCC 세션 시간이 초과되고 DSCC에서 로그아웃됩니다. 시간 초과 지연을 확장하려면 다음 절차를 수행합니다. 이 절차에서는 DSCC와 Sun Java Web Console의 모든 다른 응용 프로그램에 대한 시간 초과를 확장합니다.

DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.

  1. 루트로 시간 초과 지연을 확장합니다.


    # wcadmin add -p -a ROOT session.timeout.value=mm
    

    여기서 mm은 시간이 초과되기 전의 시간(분)입니다.

    예를 들어 시간 초과를 2시간으로 설정하려면 다음을 입력합니다.


    $ su
    Password:
    # wcadmin add -p -a ROOT session.timeout.value=120
    Set 1 properties for the ROOT application.
    # wcadmin list -p
    Shared service properties (name, value):
        session.timeout.value  120
        ...
  2. Sun Java Web Console을 다시 시작합니다.


    # smcwebserver restart
    Shutting down Sun Java(TM) Web Console Version 3.0.2 ...
    Starting Sun Java(TM) Web Console Version 3.0.2 ...
    The console is running.

    이 명령의 위치는 명령 위치를 참조하십시오.

DSCC에 대한 페일오버 구성

DSCC는 DSCC에 등록된 서버를 표시합니다.

DSCC를 설치한 시스템이 실패할 경우 DSCC를 다른 시스템에 설치한 다음 서버를 다시 등록할 수 있습니다. 그러나 이 방법은 시간이 오래 걸릴 수 있습니다. DSCC를 통해 서버에 즉시 액세스하려면 DSCC 페일오버를 구성할 수 있습니다.

DSCC 페일오버를 구성하려면 다음을 고려하십시오.

DSCC 문제 해결

DSCC 문제 해결에 대한 자세한 내용은 Sun Java System Directory Server Enterprise Edition 6.3 Installation GuideTo Troubleshoot Directory Service Control Center Access를 참조하십시오.

디렉토리 서버의 포트 번호 변경

DSCC 또는 dsconf set-server-prop 명령을 사용하여 사용자 디렉토리 서버의 LDAP 포트 또는 LDAPS 보안 포트 번호를 수정할 수 있습니다.

포트 번호를 변경하는 경우 다음에 주의해야 합니다.

명령줄을 사용하여 포트 번호를 변경할 경우 다음에 주의해야 합니다.

Procedure포트 번호를 수정하고 포트를 사용 가능/사용 불가능하게 하는 방법

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.


주 –

수정한 후에는 서버를 다시 시작하여 변경 사항을 적용해야 합니다.


  1. 포트에 대한 기존 설정을 확인합니다.


    $ dsconf get-server-prop -h host -p port port-type
    

    여기서 port-type은 다음 중 하나입니다.

    ldap-port

    LDAP 기본 포트

    ldap-secure-port

    LDAPS 보안 포트

    dsml-port

    DSML 기본 포트

    dsml-secure-port

    DSML 보안 포트

    예를 들어 LDAPS 보안 포트를 표시하려면 다음을 입력합니다.


    $ dsconf get-server-prop -h host1 -p 2501 ldap-secure-port
    Enter "cn=Directory Manager" password:
    ldap-secure-port : 2511

    반환된 결과가 정수이면 포트가 사용 가능하게 됩니다. 반환된 결과가 disabled이면 포트가 사용 불가능하게 됩니다.


    주 –

    dsadm을 사용하여 LDAP 기본 포트와 LDAPS 보안 포트를 나열할 수도 있습니다.


  2. 필요한 경우 포트 번호를 수정하거나 포트를 사용 가능하게 합니다.


    $ dsconf set-server-prop -h host -p port port-type:new-port
    

    예를 들어 LDAP 포트 번호를 1389에서 1390으로 변경하려면 다음 명령을 사용합니다.


    $ dsconf set-server-prop -h host1 -p 1389 ldap-port:1390

    DSML 보안 포트를 포트 번호 2250에서 사용 가능하게 하려면 다음 명령을 사용합니다.


    $ dsconf set-server-prop -h host1 -p 1389 dsml-secure-port:2250
  3. 필요한 경우 포트를 사용 불가능하게 합니다.


    $ dsconf set-server-prop -h host -p port port-type:disabled

    예를 들어 DSML 보안 포트를 사용 불가능하게 하려면 다음 명령을 사용합니다.


    $ dsconf set-server-prop -h host1 -p 1389 dsml-secure-port:disabled

DSML 구성

디렉토리 서버는 LDAP(Lightweight Directory Access Protocol) 요청을 처리하는 동시에 Directory Service Markup Language 버전 2(DSMLv2)로 받은 요청에도 응답합니다. DSML은 클라이언트에서 디렉토리 작업을 인코딩하는 또 다른 방법입니다. 서버는 다른 요청과 마찬가지로 모든 액세스 제어 및 보안 기능을 사용하여 DSML을 처리합니다. DSML 처리는 많은 유형의 클라이언트가 디렉토리 내용에 액세스할 수 있도록 도와줍니다.

디렉토리 서버는 HTTP(Hypertext Transfer Protocol/1.1)를 통해 DSMLv2를 지원하며 SOAP(Simple Object Access Protocol) 버전 1.1을 DSML 내용 전송을 위한 프로그래밍 프로토콜로 사용합니다. 이러한 프로토콜에 대한 자세한 내용과 DSML 요청에 대한 예는 Sun Java System Directory Server Enterprise Edition 6.3 Reference의 10 장, Directory Server DSMLv2를 참조하십시오.

이 절은 다음 내용으로 구성되어 있습니다.

ProcedureDSML-over-HTTP 서비스를 사용 가능하게 하는 방법

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. DSML 모드를 on으로 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-enabled:on
  2. 보안 DSML 포트를 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-secure-port:port
    
  3. 비보안 DSML 포트를 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-port:port
    

    기본적으로 이 포트는 disabled로 설정됩니다.

  4. 서버를 다시 시작합니다.


    $ dsadm restart instance-path
    
다음 순서

정의한 매개 변수와 속성 값에 따라 DSML 클라이언트는 아래 URL을 사용하여 이 서버로 요청을 보낼 수 있습니다.

http://host:DSML-port/ relative-URL

https://host:secure-DSML-port /relative-URL


주 –

relative-URLdsml-relative-root-url 등록 정보를 사용하여 읽고 설정할 수 있습니다.


ProcedureDSML-over-HTTP 서비스를 사용 불가능하게 하는 방법

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. DSML 모드를 off로 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-enabled:off
  2. 보안 DSML 포트를 disabled로 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-secure-port:disabled
  3. 서버를 다시 시작합니다.


    $ dsasm restart instance-path
    

ProcedureDSML 보안을 구성하는 방법

DSML 요청을 승인하는 데 필요한 보안 수준을 구성할 수 있습니다. 이 작업을 수행하려면 DSML 클라이언트 인증을 구성해야 합니다.

  1. DSML 클라이언트 인증 모드를 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-client-auth-mode:dsml-mode
    

    기본적으로 dsml-client-auth-mode 등록 정보는 client-cert-first로 설정됩니다.

    dsml-mode는 다음 중 하나입니다.

    • http-basic-only - 기본값입니다. 서버에서 HTTP 인증 헤더의 내용을 사용하여 디렉토리 항목에 매핑할 수 있는 사용자 이름을 찾습니다. 이 프로세스와 해당 구성은 SSL을 통해 암호화되지만 클라이언트 인증은 사용되지 않습니다. 자세한 내용은 DSML 아이디 매핑을 참조하십시오.

    • client-cert-only - 서버에서 클라이언트 인증서의 자격 증명을 사용하여 클라이언트를 확인합니다. 이렇게 설정하면 모든 DSML 클라이언트가 보안 HTTPS 포트를 통해 DSML 요청을 보내고 인증서를 제공해야 합니다. 서버는 클라이언트 인증서가 디렉토리 항목과 일치하는지 확인합니다. 자세한 내용은 6 장, 디렉토리 서버 보안 을 참조하십시오.

    • client-cert-first - 서버에서 먼저 제공된 클라이언트 인증서를 사용하여 클라이언트 인증을 시도합니다. 클라이언트 인증서가 제공되지 않은 경우 서버는 인증 헤더의 내용을 사용하여 클라이언트를 인증합니다.

    HTTP 요청에 인증서와 인증 헤더가 모두 없으면 서버는 익명 바인드를 사용하여 DSML 요청을 처리합니다. 익명 바인드는 다음과 같은 경우에도 사용됩니다.

    • client-cert-only 값을 지정할 때 클라이언트에서 인증 헤더만 제공하고 인증서는 제공하지 않는 경우

    • http-basic-only 값을 지정할 때 클라이언트에서 인증서만 제공하고 인증 헤더는 제공하지 않는 경우

    인증서가 제공되었지만 항목에 일치시킬 수 없는 경우나 HTTP 인증 헤더가 지정되었지만 사용자 항목으로 매핑할 수 없는 경우에는 클라이언트 인증 방법에 상관없이 오류 메시지 403: "금지됨"이 표시되며 DSML 요청이 거부됩니다.

DSML 아이디 매핑

인증서 없이 기본 인증을 수행하는 경우 디렉토리 서버는 아이디 매핑이라는 메커니즘을 사용하여 DSML 요청을 승인할 때 사용할 바인드 DN을 지정합니다. 이 메커니즘은 HTTP 요청의 인증 헤더에서 필요한 정보를 추출하여 바인드에 사용할 아이디를 확인합니다.

DSML/HTTP에 대한 기본 아이디 매핑은 다음과 같은 서버 구성 항목을 통해 지정됩니다.

dn: cn=default,cn=HTTP-BASIC,cn=identity mapping,cn=config
objectClass: top
objectClass: nsContainer
objectClass: dsIdentityMapping
cn: default
dsSearchBaseDN: ou=people
dsSearchFilter: (uid=${Authorization})

이 구성에서 서버는 디렉토리 서버 접미어에 저장된 DN에 대한 uid 값으로 HTTP 사용자 아이디를 사용해야 합니다. 예를 들어 HTTP 사용자가 bjensen인 경우 서버는 uid=bjensen,ou=people DN을 사용하여 바인딩을 실행하려고 합니다.

매핑이 제대로 작동하려면 dsSearchBaseDN 값을 완료해야 합니다. 예를 들어 dsSearchBaseDN 값을 ou=people,dc=example,dc=com으로 변경할 수 있습니다. HTTP 사용자가 bjensen인 경우 서버는 uid=bjensen,ou=people,dc=example,dc=com DN을 사용하여 바인딩을 실행하려고 합니다.

dn: cn=default,cn=HTTP-BASIC,cn=identity mapping,cn=config
objectClass: top
objectClass: nsContainer
objectClass: dsIdentityMapping
cn: default
dsSearchBaseDN: ou=people,dc=example,dc=com
dsSearchFilter: (uid=${Authorization})

dsSearchFilter 매핑 항목 속성에 ${header} 형식의 자리 표시자를 사용할 수도 있습니다. 여기서 header는 HTTP 헤더의 이름입니다.

DSML 매핑에 사용되는 가장 일반적인 헤더는 다음과 같습니다.

${Authorization}

이 문자열은 HTTP 인증 헤더에 포함된 사용자 이름으로 바뀝니다. 인증 헤더에는 사용자 이름과 비밀번호가 모두 포함되어 있지만 이 자리 표시자는 사용자 이름으로만 바뀝니다.

${From}

이 문자열은 HTTP From 헤더에 포함된 전자 메일 주소로 바뀝니다.

${host}

이 문자열은 DSML 요청의 URL에 포함된 서버의 호스트 이름 및 포트 번호로 바뀝니다.

DSML 요청에 다른 종류의 아이디 매핑을 사용하려면 다음과 같이 HTTP 헤더에 대한 새 아이디 매핑을 정의합니다.

ProcedureHTTP 헤더에 대해 새 아이디 매핑을 정의하는 방법

  1. 기본 DSML-over-HTTP 아이디 매핑을 편집하거나 이 프로토콜에 대한 사용자 정의 매핑을 작성합니다.

    매핑 항목은 cn=HTTP-BASIC,cn=identity mapping,cn=config 항목 아래에 있어야 합니다.

    ldapmodify를 사용한 항목 추가에 설명된 것처럼 ldapmodify 명령을 사용하여 명령줄에서 이 항목을 추가합니다.

  2. 새 매핑을 적용하려면 디렉토리 서버를 다시 시작합니다.

    사용자 정의 매핑이 먼저 평가됩니다. 사용자 정의 매핑이 실패한 경우 기본 매핑이 평가됩니다. 모든 매핑을 평가한 후에도 DSML 요청에 대한 바인드 DN을 확인하지 못하면 이 DSML 요청은 금지되어 거부됩니다(오류 403).

서버를 읽기 전용으로 설정

디렉토리의 각 접미어는 읽기 전용 모드로 설정할 수 있으며 정의된 특정 참조를 반환할 수 있습니다. 또한 디렉토리 서버는 모든 접미어에 적용되는 서버 읽기 전용 모드를 제공하며 정의된 전역 참조를 반환할 수도 있습니다.

서버 읽기 전용 모드를 사용할 경우 관리자는 접미어를 다시 색인화하는 등의 작업을 수행하는 동안 디렉토리 내용이 수정되는 것을 방지할 수 있습니다. 이 때문에 다음과 같은 구성 분기에는 서버 읽기 전용 모드가 적용되지 않습니다.

이러한 분기는 읽기 전용으로 설정되어 있지 않더라도 관리자 이외의 사용자가 수정할 수 없도록 항상 ACI(Access Control Intstruction)를 사용하여 보호해야 합니다(7 장, 디렉토리 서버 액세스 제어 참조). 전역 읽기 전용 모드는 디렉토리 관리자가 시작한 업데이트 작업을 포함하여 디렉토리의 다른 모든 접미사에 대한 업데이트 작업을 방지합니다.

읽기 전용 모드를 사용하면 접미어에 대한 복제도 중단됩니다. 읽기 전용 모드를 사용하기 전의 변경 사항은 계속 복제되지만 더 이상 마스터 복제본에 복제할 변경 사항이 추가되지 않습니다. 읽기 전용 모드를 사용 불가능하게 할 때까지 소비자 복제본도 업데이트를 받지 못합니다. 다중 마스터 복제 환경에서는 마스터에 복제할 변경 사항이 추가되지 않을 뿐만 아니라 다른 마스터의 업데이트를 받을 수도 없습니다.

Procedure서버 읽기 전용 모드를 사용 가능/사용 불가능하게 하는 방법

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. 전역 읽기 전용 모드를 사용 가능하게 합니다.


    $ dsconf set-server-prop -h host -p port read-write-mode:read-only
  2. 준비가 되면 읽기 전용 모드를 사용 불가능하게 합니다.


    $ dsconf set-server-prop -h host -p port read-write-mode:read-write

메모리 구성

이 절에서는 다양한 유형의 메모리를 관리하는 방법에 대해 설명합니다. 다양한 유형의 캐시와 캐시 조정에 대한 자세한 내용은 Sun Java System Directory Server Enterprise Edition 6.3 Reference의 5 장, Directory Server Data Caching을 참조하십시오.

캐시 초기화

캐시 초기화란 이후의 디렉토리 서버 동작이 램프 업(ramp up)이 아니라 정상적인 작동 성능을 반영하도록 캐시에 데이터를 채우는 것을 의미합니다. 캐시 초기화를 사용하면 벤치마킹에서 재생 가능한 결과에 도달하고 잠재적인 최적화를 측정 및 분석할 수 있습니다.

가능하면 캐시를 초기화하지 마십시오. 성능을 측정하기 전에 디렉토리 서버와의 일반적인 상호 작용을 통해 캐시가 초기화되도록 합니다.

데이터베이스 캐시 초기화 도구는 http://www.slamd.com에서 확인할 수 있습니다.

Procedure데이터베이스 캐시를 수정하는 방법


주의 – 주의 –

캐시를 수정하면 서버 성능에 심각한 영향을 줄 수 있습니다. 따라서 캐시를 수정할 경우 주의하십시오.


DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. 현재 데이터베이스 캐시 수준을 확인합니다.


    $ dsconf get-server-prop -h host -p port db-cache-size
  2. 데이터베이스 캐시 수준을 변경합니다.


    $ dsconf set-server-prop -h host -p port db-cache-size:size
    

    여기서 size는 GB(G), MB(M), KB(k) 또는 바이트(b)로 표시할 수 있습니다. 사용자가 지정한 크기는 시스템에서 지원해야 합니다.

Procedure데이터베이스 캐시를 모니터하는 방법

설치 시 기본 캐시 수준은 작업 환경이 아니라 테스트 환경에 적합합니다. 조정을 위해 서버의 데이터베이스 캐시를 모니터할 수 있습니다.

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. 데이터베이스 캐시를 모니터합니다.


    $ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \
     -b "cn=monitor,cn=ldbm database,cn=plugins,cn=config" "(objectclass=*)"

    데이터베이스 캐시가 충분히 크고 캐시가 초기화되면 적중률(dbcachehitratio)이 높아야 합니다. 또한 읽은 페이지 수(dbcachepagein)와 기록되는 클린 페이지 수(dbcacheroevict)는 작아야 합니다. 여기서 "높음"과 "낮음"은 배포 제약 조건에 상대적인 의미입니다.

Procedure항목 캐시를 모니터하는 방법

조정을 위해 항목 캐시에서 하나 이상의 접미어를 확인할 수 있습니다. 항목 캐시 수준을 보려면 다음 절차를 수행합니다.

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. 항목 캐시를 모니터합니다.


    $ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \
     -b "cn=monitor,cn=db-name,cn=ldbm database,cn=plugins,cn=config" "(objectclass=*)"

    접미어를 위한 항목 캐시가 접미어에 있는 대부분의 항목을 보관하는 데 충분한 크기이고 캐시가 초기화되면 적중률(entrycachehitratio )이 높아야 합니다.

    캐시를 초기화한 경우 이전에 비어 있던 항목 캐시가 채워질수록 항목 캐시 크기(currententrycachesize)는 최대 항목 캐시 크기(maxentrycachesize)에 근접하게 됩니다. 이상적인 항목의 크기(currententrycachecount)는 접미어에 있는 총 항목 수(ldapentrycachecount)와 같거나 비슷해야 합니다.

Procedure항목 캐시를 수정하는 방법


주의 – 주의 –

캐시를 수정하면 서버 성능에 심각한 영향을 줄 수 있습니다. 따라서 캐시를 수정할 경우 주의하십시오.


DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. 현재 항목 캐시 수준을 확인합니다.


    $ dsconf get-suffix-prop -h host -p port suffix-DN entry-cache-count entry-cache-size
  2. 항목 캐시 횟수를 변경합니다.


    $ dsconf set-suffix-prop -h host -p port suffix-DN entry-cache-count:integer
    

    여기서 integer는 캐시에 저장할 항목 수입니다.

  3. 항목 캐시 크기를 변경합니다.


    $ dsconf set-suffix-prop -h host -p port suffix-DN entry-cache-size:size
    

    여기서 size는 GB(G), MB(M), KB(k) 또는 바이트(b)로 표시되는 캐시 크기입니다. 사용자가 지정한 크기는 시스템에서 지원해야 합니다.

Procedure힙 메모리 임계값을 구성하는 방법

nsslapd 프로세스에서 사용되는 힙 메모리의 양을 제한하려면 동적 메모리 범위에 대한 임계값을 설정할 수 있습니다. 자원이 공유되거나 부족한 컴퓨터에서 디렉토리 서버를 실행하는 경우 이 임계값을 설정할 수 있습니다.


주 –

이 임계값은 Solaris 및 Linux 플랫폼에서만 설정할 수 있습니다.


메모리 크기 지정에 대한 자세한 내용은 Sun Java System Directory Server Enterprise Edition 6.3 Deployment Planning GuideDirectory Server and Memory를 참조하십시오.

DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.


주 –

기본적으로 heap-high-threshold-sizeheap-low-threshold-size 등록 정보는 undefined입니다.


  1. 최대 힙 메모리의 높은 임계값을 설정합니다.


    $ dsconf set-server-prop -h host -p port heap-high-threshold-size:value
    

    여기서 value는 GB(G), MB(M), KB(k) 또는 바이트(b)로 표시되는 undefined 또는 메모리 크기입니다. 사용자가 지정한 크기는 시스템에서 지원해야 합니다.

    heap-high-threshold-size에 대한 권장 사용 값은 server(5dsconf) 설명서 페이지를 참조하십시오.

  2. 선택 사항으로 최대 힙 메모리의 낮은 임계값을 설정합니다.


    $ dsconf set-server-prop -h host -p port heap-low-threshold-size:value
    

    여기서 value는 GB(G), MB(M), KB(k) 또는 바이트(b)로 표시되는 undefined 또는 메모리 크기입니다. 사용자가 지정한 크기는 시스템에서 지원해야 합니다.

    heap-low-threshold-size에 대한 권장 사용 값은 server(5dsconf) 설명서 페이지를 참조하십시오.

각 클라이언트 계정에 대한 자원 제한 설정

각 클라이언트 계정에 대한 서버의 검색 작업 자원 제한을 제어할 수 있습니다. 계정의 작업 속성에서 이러한 제한을 설정하면 디렉토리 서버는 클라이언트에서 디렉토리에 바인드하는 데 사용하는 계정을 기반으로 해당 제한을 적용합니다.

다음과 같은 제한을 설정할 수 있습니다.


주 –

기본적으로 디렉토리 관리자가 사용할 수 있는 자원에는 제한이 없습니다.


특정 사용자 계정에 대해 설정한 자원 제한은 서버측 구성에 설정된 자원 제한보다 우선적으로 적용됩니다. 이 절에서는 각 계정에 대한 자원 제한 설정에 대해 설명합니다.

이 절에 제공된 예에서는 항목 속성에서 자원 제한을 직접 설정합니다. 서비스 클래스(CoS) 메커니즘을 사용하여 계정에 대한 자원 제한을 설정할 수도 있습니다. CoS 메커니즘은 클라이언트 응용 프로그램에 대한 항목이 검색될 때 계산된 속성을 생성합니다. CoS 정의에 대한 자세한 내용은 서비스 클래스를 참조하십시오.

Procedure힙 메모리 임계값을 구성하는 방법

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. dsconf get-server-prop 명령을 사용하여 자원 제한 서버 등록 정보를 읽습니다.


    $ dsconf get-server-prop -h host -p port look-through-limit search-size-limit \
     search-time-limit idle-timeout
    look-through-limit  :  5000  
    search-size-limit   :  2000  
    search-time-limit   :  3600
    idle-timeout        :  none

    출력은 검색에서 최대 5000개의 항목을 조회하여 최대 2000개의 항목을 반환하며, 서버에서 검색을 처리하는 데 최대 1시간(3600초)이 소요됨을 나타냅니다.

  2. 조회 제한을 변경합니다.


    $ dsconf set-server-prop -h host -p port look-through-limit:integer
    

    여기서 integer는 검색 작업 시 조사할 최대 항목 수입니다.

  3. 검색 크기 제한을 변경합니다.


    $ dsconf set-server-prop -h host -p port search-size-limit:integer
    

    여기서 integer는 검색 작업에서 반환되는 최대 항목 수입니다.

  4. 검색 시간 제한을 변경합니다.


    $ dsconf set-server-prop -h host -p port serach-time-limit:integer
    

    여기서 integer는 검색 작업 처리에 사용할 수 있는 최대 시간입니다.

  5. 유휴 시간 초과를 변경합니다.


    $ dsconf set-server-prop -h host -p port idle-timeout:integer
    

    여기서 integer는 연결이 끊기기 전에 클라이언트 연결이 유휴 상태로 유지될 수 있는 최대 시간입니다.