복제 구성 및 관리

Red Hat Directory Server 12

다른 Directory Server 인스턴스에 데이터 복제

Red Hat Customer Content Services

초록

한 Directory Server 인스턴스의 데이터를 다른 Directory Server 인스턴스로 자동으로 동기화하려면 단일 공급 업체, 멀티 공급자 및 계단식 복제 메커니즘을 사용할 수 있습니다. 복제 변경 로그를 관리하려면 트리밍 및 암호화를 사용할 수 있습니다.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선할 수 있는지 알려 주십시오. 이렇게 하려면 다음을 수행합니다.

  • Jira (계정 필요)를 통해 피드백을 제출하려면 다음을 수행합니다.

    1. Jira 웹 사이트에 로그인합니다.
    2. 상단 탐색 모음에서 생성 을 클릭합니다.
    3. 요약 필드에 설명 제목을 입력합니다.
    4. 설명 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
    5. 대화 상자 하단에서 생성 을 클릭합니다.
  • Bugzilla (계정 필요)를 통해 피드백을 제출하려면 다음을 수행합니다.

    1. Bugzilla 웹 사이트로 이동하십시오.
    2. 구성 요소로 문서를 사용합니다.
    3. 설명 필드에 문서 개선을 위한 제안 사항을 기입하십시오. 관련된 문서의 해당 부분 링크를 알려주십시오.
    4. 버그 제출을 클릭합니다.

1장. 명령줄을 사용하여 단일 공급 업체 복제 구성

단일 공급 후속 복제 환경에서 쓰기 가능한 하나의 공급업체는 하나 또는 여러 개의 읽기 전용 소비자에 데이터를 복제합니다. 예를 들어 접미사가 많은 수의 검색 요청을 수신하지만 적은 수의 쓰기 요청만 수신하는 경우 단일 공급값 복제를 설정합니다. 부하를 분산하기 위해 고객은 읽기 전용 소비자에서 접미사를 검색하고 공급 업체에게 쓰기 요청을 보낼 수 있습니다.

이 섹션에서는 복제 토폴로지의 공급업체 역할을 할 vendor.example.com 이라는 호스트에서 실행 중인 기존 Directory Server 인스턴스가 있다고 가정합니다. 이 절차에서는 consumer.example.com 이라는 읽기 전용 소비자를 토폴로지에 추가하는 방법과 dc=example,dc=com 접미사에 대한 단일 공급 업체 복제를 구성하는 방법을 설명합니다.

1.1. 명령줄을 사용하여 새 소비자 준비

consumer.example.com 호스트를 준비하려면 복제를 활성화합니다. 이 프로세스는 다음과 같습니다.

  • 복제 토폴로지에서 이 서버의 역할을 설정합니다.
  • 복제되는 접미사를 정의합니다.
  • 공급업체가 이 호스트에 연결하는 데 사용하는 복제 관리자 계정을 생성합니다.

복제 토폴로지에 추가할 소비자에서 다음 절차를 수행합니다.

사전 요구 사항

  • Directory Server 인스턴스가 설치되어 있어야 합니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.

절차

  • dc=example,dc=com 접미사의 복제를 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication enable --suffix "dc=example,dc=com" --role "consumer" --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"

    이 명령은 dc=example,dc=com 접미사의 소비자로 consumer.example.com 호스트를 구성합니다. 또한 이 명령은 지정된 암호를 사용하여 cn=replication manager,cn=config 사용자를 생성하고 이 계정에서 이 호스트에 대한 접미사 변경 사항을 복제할 수 있습니다.

검증

  • 복제 구성을 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 2
    ...

    이러한 매개변수는 다음을 나타냅니다.

    • nsDS5ReplicaBindDN 은 복제 관리자 계정을 지정합니다.
    • nsDS5ReplicaRoot 는 복제된 접미사를 설정합니다.
    • nsDS5ReplicaType2 로 설정하면 이 호스트가 소비자임을 정의합니다.

1.2. 명령줄을 사용하여 기존 서버를 소비자에게 공급업체로 구성

provider .example.com 호스트를 준비하려면 다음을 수행해야합니다.

  • 접미사에 대한 복제를 활성화합니다.
  • 소비자에 대한 복제 계약을 만듭니다.
  • 소비자를 초기화합니다.

복제 토폴로지의 기존 공급 업체에 대해 이 절차를 수행하십시오.

사전 요구 사항

  • 소비자의 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.

절차

  1. dc=example,dc=com 접미사의 복제를 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1

    이 명령은 provider .example.com 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 항목의 복제본 ID를 1 로 설정합니다.

    중요

    복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

  2. 복제 계약을 추가하고 소비자를 초기화합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt create --suffix "dc=example,dc=com" --host "consumer.example.com" --port 389 --conn-protocol=LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method=SIMPLE --init example-agreement

    이 명령은 example-agreement 라는 복제 계약을 생성합니다. 복제 계약은 공급업체가 이 소비자에게 데이터를 연결하고 복제할 때 사용하는 소비자의 호스트 이름, 프로토콜 및 인증 정보와 같은 설정을 정의합니다.

    계약이 생성되면 Directory Server가 consumer.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 복제 구성을 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 3
    ...

    이러한 매개변수는 다음을 나타냅니다.

    • nsDS5ReplicaRoot 는 복제된 접미사를 설정합니다.
    • nsDS5ReplicaType3 으로 설정하면 이 호스트가 공급업체임을 정의합니다.
  2. 초기화에 성공했는지 확인합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement
    Agreement successfully initialized.
  3. 복제 상태를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement
    Status For Agreement: "example-agreement" (consumer.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210330075608Z
    Last Update End: 20210330075608Z
    Number Of Changes Sent: 1:3/0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210330074603Z
    Last Init End: 20210330074606Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (6062d73c000000010000) consumer (Unavailable) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Replication Lag Time: Unavailable

    복제 상태마지막 업데이트 상태 필드를 확인합니다.

문제 해결

  1. 기본적으로 서버의 모든 계약에 대한 복제 유휴 타임아웃은 1시간입니다. 시간 초과로 인해 대규모 데이터베이스를 초기화하지 못하는 경우 nsslapd-idletimeout 매개변수를 더 높은 값으로 설정합니다. 예를 들어 매개변수를 7200 (2시간)으로 설정하려면 다음을 입력합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com config replace nsslapd-idletimeout=7200

    무제한 기간을 설정하려면 nsslapd-idletimeout0 으로 설정합니다.

2장. 웹 콘솔을 사용한 단일 제공 복제 구성

단일 공급 후속 복제 환경에서 쓰기 가능한 하나의 공급업체는 하나 또는 여러 개의 읽기 전용 소비자에 데이터를 복제합니다. 예를 들어 접미사가 많은 수의 검색 요청을 수신하지만 적은 수의 쓰기 요청만 수신하는 경우 단일 공급값 복제를 설정합니다. 부하를 분산하기 위해 고객은 읽기 전용 소비자에서 접미사를 검색하고 공급 업체에게 쓰기 요청을 보낼 수 있습니다.

이 섹션에서는 복제 토폴로지의 공급업체 역할을 할 vendor.example.com 이라는 호스트에서 실행 중인 기존 Directory Server 인스턴스가 있다고 가정합니다. 이 절차에서는 consumer.example.com 이라는 읽기 전용 소비자를 토폴로지에 추가하는 방법과 dc=example,dc=com 접미사에 대한 단일 공급 업체 복제를 구성하는 방법을 설명합니다.

2.1. 웹 콘솔을 사용하여 새 소비자 준비

consumer.example.com 호스트를 준비하려면 복제를 활성화합니다. 이 프로세스는 다음과 같습니다.

  • 복제 토폴로지에서 이 서버의 역할을 설정합니다.
  • 복제되는 접미사를 정의합니다.
  • 공급업체가 이 호스트에 연결하는 데 사용하는 복제 관리자 계정을 생성합니다.

복제 토폴로지에 추가할 소비자에서 다음 절차를 수행합니다.

사전 요구 사항

  • Directory Server 인스턴스가 설치되어 있어야 합니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제 활성화를 클릭합니다.
  4. 복제 역할 필드에서 Consumer 를 선택하고 복제 관리자 계정과 암호를 입력하여 만듭니다.

    소비자에서 복제 활성화

    이러한 설정은 호스트를 dc=example,dc=com 접미사의 소비자로 구성합니다. 또한 서버는 cn=replication manager,cn=config 사용자를 생성하고 이 계정에서 이 호스트에 대한 접미사 변경 사항을 복제할 수 있습니다.

  5. 복제 활성화를 클릭합니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. Replica Role 필드에 Consumer 값이 포함되어 있으면 복제가 활성화되고 호스트는 소비자로 구성됩니다.

2.2. 웹 콘솔을 사용하여 기존 서버를 소비자에게 공급업체로 구성

provider .example.com 호스트를 준비하려면 다음을 수행해야합니다.

  • 접미사에 대한 복제를 활성화합니다.
  • 소비자에 대한 복제 계약을 만듭니다.
  • 소비자를 초기화합니다.

복제 토폴로지의 기존 공급 업체에 대해 이 절차를 수행하십시오.

사전 요구 사항

  • 소비자의 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제를 활성화합니다.

    1. 복제 활성화를 클릭합니다.
    2. 복제 역할 필드에서 provider를 선택하고 복제본 ID, 복제 관리자 자격 증명을 입력하고 Bind Group DN 필드를 비워 둡니다.

      단일 공급업체 복제를 위한 공급업체 복제 활성화

      이 설정은 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 항목의 복제본 ID를 1 로 설정합니다.

      중요

      복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

    3. 복제 활성화를 클릭합니다.
  4. 복제 계약을 추가하고 소비자를 초기화합니다.

    1. 계약 탭에서 계약 생성을 클릭하고 필드를 작성합니다.

      복제 계약 단일 공급업체 생성

      이러한 설정은 example-agreement 라는 복제 계약을 생성합니다. 복제 계약은 공급업체가 이 소비자에게 데이터를 연결하고 복제할 때 사용하는 소비자의 호스트 이름, 프로토콜 및 인증 정보와 같은 설정을 정의합니다.

    2. Consumer Initialization 필드에서 Do Online Initialization 을 선택하여 계약을 저장한 후 소비자를 자동으로 초기화합니다.
    3. Save Agreement 를 클릭합니다.

      계약이 생성되면 Directory Server가 consumer.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 계약 탭에서 테이블의 State 열에 있는 연결 상태를 확인합니다.

    복제 계약이 초기화되었습니다.

3장. 명령줄을 사용하여 다중 공급 업체 복제 구성

다중 공급 업체의 복제 환경에서 두 개 이상의 쓰기 가능한 공급업체가 서로 데이터를 복제합니다. 예를 들어 장애 조치(fail-over) 환경을 제공하고 여러 서버에 부하를 분산하도록 다중 제공 복제를 설정합니다. 그러면 클라이언트는 읽기-쓰기 복제본인 모든 호스트에서 읽기 및 쓰기 작업을 수행할 수 있습니다.

이 섹션에서는 provider 1.example.com 이라는 호스트에서 실행 중인 기존 Directory Server 인스턴스가 있다고 가정합니다. 이 절차에서는 provider 2.example.com이라는 다른 읽기-쓰기 복제본을 토폴로지에 추가하는 방법과 dc=example,dc=com 접미사에 대한 다중 공급 업체 복제를 구성하는 방법을 설명합니다.

3.1. 명령줄을 사용하여 새 공급자 준비

provider 2.example.com 호스트를 준비하려면 복제를 활성화합니다. 이 프로세스는 다음과 같습니다.

  • 복제 토폴로지에서 이 서버의 역할을 설정합니다.
  • 복제되는 접미사를 정의합니다.
  • 공급업체가 이 호스트에 연결하는 데 사용하는 복제 관리자 계정을 생성합니다.

복제 토폴로지에 추가하려는 공급업체에 대해 이 절차를 수행합니다.

사전 요구 사항

  • Directory Server 인스턴스가 설치되어 있어야 합니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.

절차

  • dc=example,dc=com 접미사의 복제를 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"

    이 명령은 provider 2.example.com 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 항목의 복제본 ID를 1 로 설정합니다. 또한 이 명령은 지정된 암호를 사용하여 cn=replication manager,cn=config 사용자를 생성하고 이 계정에서 이 호스트에 대한 접미사 변경 사항을 복제할 수 있습니다.

    중요

    복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

검증

  • 복제 구성을 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 3
    ...

    이러한 매개변수는 다음을 나타냅니다.

    • nsDS5ReplicaBindDN 은 복제 관리자 계정을 지정합니다.
    • nsDS5ReplicaRoot 는 복제된 접미사를 설정합니다.
    • nsDS5ReplicaType3 으로 설정하면 이 호스트가 공급업체임을 정의합니다.

3.2. 명령줄을 사용하여 기존 서버를 새 서버에 공급업체로 구성

기존 서버 provider 1.example.com 을 공급업체로 준비하려면 다음을 수행해야 합니다.

  • 접미사에 대한 복제를 활성화합니다.
  • 새로운 공급 업체에 대한 복제 계약을 작성하십시오.
  • 새 공급자를 초기화합니다.

복제 토폴로지의 기존 공급 업체에 대해 이 절차를 수행하십시오.

사전 요구 사항

  • 공급업체의 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.

절차

  1. dc=example,dc=com 접미사의 복제를 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 2 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"

    이 명령은 provider 1.example.com 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 항목의 복제본 ID를 2 로 설정합니다. 또한 이 명령은 지정된 암호를 사용하여 cn=replication manager,cn=config 사용자를 생성하고 이 계정에서 이 호스트에 대한 접미사 변경 사항을 복제할 수 있습니다.

    중요

    복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

  2. 복제 계약을 추가하고 새 서버를 초기화합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt create --suffix "dc=example,dc=com" --host "supplier2.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier1-to-supplier2

    이 명령은 example-agreement-supplier1-to-supplier2 라는 복제 계약을 생성합니다. 복제 계약은 공급업체가 새로운 공급 업체에 데이터를 연결하고 복제할 때 사용하는 새로운 공급업체의 호스트 이름, 프로토콜 및 인증 정보와 같은 설정을 정의합니다.

    계약이 생성된 후 Directory Server는 provider 2.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 복제 구성을 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 3
    ...

    이러한 매개변수는 다음을 나타냅니다.

    • nsDS5ReplicaBindDN 은 복제 관리자 계정을 지정합니다.
    • nsDS5ReplicaRoot 는 복제된 접미사를 설정합니다.
    • nsDS5ReplicaType3 으로 설정하면 이 호스트가 공급업체임을 정의합니다.
  2. 초기화에 성공했는지 확인합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier1-to-supplier2
    Agreement successfully initialized.
  3. 복제 상태를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement-supplier1-to-supplier2
    Status For Agreement: "example-agreement-supplier1-to-supplier2" (supplier2.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210331071545Z
    Last Update End: 20210331071546Z
    Number Of Changes Sent: 2:1/0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210331071541Z
    Last Init End: 20210331071544Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (6064219e000100020000) consumer (Unavailable) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)

    복제 상태마지막 업데이트 상태 필드를 확인합니다.

문제 해결

  1. 기본적으로 서버의 모든 계약에 대한 복제 유휴 타임아웃은 1시간입니다. 시간 초과로 인해 대규모 데이터베이스를 초기화하지 못하는 경우 nsslapd-idletimeout 매개변수를 더 높은 값으로 설정합니다. 예를 들어 매개변수를 7200 (2시간)으로 설정하려면 다음을 입력합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com config replace nsslapd-idletimeout=7200

    무제한 기간을 설정하려면 nsslapd-idletimeout0 으로 설정합니다.

3.3. 명령줄을 사용하여 새 서버를 기존 서버에 공급업체로 구성

새로운 서버 provider 2.example.com 을 공급업체로 준비하려면 다음 방법 중 하나를 사용합니다.

  • 접미사에 대한 복제를 활성화합니다.
  • 기존 서버에 대한 복제 계약을 만듭니다.
주의

새 서버에서 기존 공급업체를 초기화하지 마십시오. 그렇지 않으면 새 서버의 빈 데이터베이스가 기존 공급업체의 데이터베이스를 덮어씁니다.

기존 공급자에게 다음 절차를 적용합니다.

  • 새 서버에 대한 복제 계약을 만듭니다.
  • 새 서버를 초기화합니다.

사전 요구 사항

  • 새 서버에서 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.
  • 기존 서버에서 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.
  • 연결할 새 서버가 초기화됩니다.

절차

  • 기존 인스턴스에 복제 계약을 추가합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com repl-agmt create --suffix "dc=example,dc=com" --host "supplier1.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE example-agreement-supplier2-to-supplier1
  • --init 옵션을 사용하여 새 인스턴스에 복제 계약을 추가합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt create --suffix "dc=example,dc=com" --host "supplier2.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier1-to-supplier2

검증

  1. 계약 상태를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier2-to-supplier1
    Agreement successfully initialized.
  2. 복제 상태를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement-supplier2-to-supplier1
    Status For Agreement: ""example-agreement-supplier2-to-supplier1 (supplier1.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210331073540Z
    Last Update End: 20210331073540Z
    Number Of Changes Sent: 7:1/0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210331073535Z
    Last Init End: 20210331073539Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (60642649000000070000) consumer (Unavailable) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Replication Lag Time: Unavailable

    복제 상태마지막 업데이트 상태 필드를 확인합니다.

문제 해결

  1. 기본적으로 서버의 모든 계약에 대한 복제 유휴 타임아웃은 1시간입니다. 시간 초과로 인해 대규모 데이터베이스를 초기화하지 못하는 경우 nsslapd-idletimeout 매개변수를 더 높은 값으로 설정합니다. 예를 들어 매개변수를 7200 (2시간)으로 설정하려면 다음을 입력합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com config replace nsslapd-idletimeout=7200

    무제한 기간을 설정하려면 nsslapd-idletimeout0 으로 설정합니다.

4장. 웹 콘솔을 사용하여 다중 공급 업체 복제 구성

다중 공급 업체의 복제 환경에서 두 개 이상의 쓰기 가능한 공급업체가 서로 데이터를 복제합니다. 예를 들어 장애 조치(fail-over) 환경을 제공하고 여러 서버에 부하를 분산하도록 다중 제공 복제를 설정합니다. 그러면 클라이언트는 읽기-쓰기 복제본인 모든 호스트에서 읽기 및 쓰기 작업을 수행할 수 있습니다.

이 섹션에서는 provider 1.example.com 이라는 호스트에서 실행 중인 기존 Directory Server 인스턴스가 있다고 가정합니다. 이 절차에서는 provider 2.example.com이라는 다른 읽기-쓰기 복제본을 토폴로지에 추가하는 방법과 dc=example,dc=com 접미사에 대한 다중 공급 업체 복제를 구성하는 방법을 설명합니다.

4.1. 웹 콘솔을 사용하여 새 공급자 준비

provider 2.example.com 호스트를 준비하려면 복제를 활성화합니다. 이 프로세스는 다음과 같습니다.

  • 복제 토폴로지에서 이 서버의 역할을 설정합니다.
  • 복제되는 접미사를 정의합니다.
  • 공급업체가 이 호스트에 연결하는 데 사용하는 복제 관리자 계정을 생성합니다.

복제 토폴로지에 추가하려는 공급업체에 대해 이 절차를 수행합니다.

사전 요구 사항

  • Directory Server 인스턴스가 설치되어 있어야 합니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제를 활성화합니다.

    1. 복제 활성화를 클릭합니다.
    2. 복제 역할 필드에서 device를 선택하고, 복제본 ID와 생성할 복제 관리자 계정의 고유 이름(DN) 및 암호를 입력합니다.

      다중 공급업체 복제 1에 대한 복제 활성화

      이 설정은 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 항목의 복제본 ID를 1 로 설정합니다.

      중요

      복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

      복제 관리자 DN이 없는 경우 바인딩 그룹 DN을 설정합니다. 그러면 복제 계약에 이 그룹의 멤버를 사용할 수 있습니다.

    3. 복제 활성화를 클릭합니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. Replica Role 필드에egin value 가 포함된 경우 복제가 활성화되고 호스트는 공급업체로 구성됩니다.

4.2. 웹 콘솔을 사용하여 기존 서버를 새 서버에 공급업체로 구성

기존 서버 provider 1.example.com 을 공급업체로 준비하려면 다음을 수행해야 합니다.

  • 접미사에 대한 복제를 활성화합니다.
  • 새로운 공급 업체에 대한 복제 계약을 작성하십시오.
  • 새 공급자를 초기화합니다.

복제 토폴로지의 기존 공급 업체에 대해 이 절차를 수행하십시오.

사전 요구 사항

  • 공급업체의 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제를 활성화합니다.

    1. 복제 활성화를 클릭합니다.
    2. 복제 역할 필드에서 device를 선택하고, 복제본 ID와 생성할 복제 관리자 계정의 고유 이름(DN) 및 암호를 입력합니다.

      다중 공급업체 복제 2에서 복제 활성화

      이 설정은 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 항목의 복제본 ID를 2 로 설정합니다.

      중요

      복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

    3. 복제 활성화를 클릭합니다.
  4. 복제 계약을 추가하고 새 서버를 초기화합니다.

    1. 계약 탭에서 계약 생성을 클릭하고 필드를 작성합니다.

      복제 계약 다중 공급업체 1 생성

      이러한 설정은 example-agreement-supplier1-to-supplier2 라는 복제 계약을 생성합니다. 복제 계약은 공급업체가 새로운 공급 업체에 데이터를 연결하고 복제할 때 사용하는 새로운 공급업체의 호스트 이름, 프로토콜 및 인증 정보와 같은 설정을 정의합니다.

    2. Consumer Initialization 필드에서 Do Online Initialization 을 선택하여 계약을 저장한 후 새 서버를 자동으로 초기화합니다.
    3. Save Agreement 를 클릭합니다.

      계약이 생성된 후 Directory Server는 provider 2.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 계약 탭에서 테이블의 State 열에 있는 연결 상태를 확인합니다.

    복제 계약이 초기화되었습니다.

4.3. 웹 콘솔을 사용하여 기존 서버에 새 서버를 공급업체로 구성

새로운 서버 provider 2.example.com 을 공급업체로 준비하려면 다음을 수행해야 합니다.

  • 접미사에 대한 복제를 활성화합니다.
  • 기존 서버에 대한 복제 계약을 만듭니다.
  • 기존 서버를 초기화합니다.

복제 토폴로지의 기존 공급 업체에 대해 이 절차를 수행하십시오.

주의

기존 서버에서 복제 계약을 초기화하지 않은 경우 계속 진행하지 마십시오. 그렇지 않으면 새 서버의 빈 데이터베이스가 기존 공급업체의 데이터베이스를 덮어씁니다.

사전 요구 사항

  • 새 서버에서 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.
  • 기존 서버에서 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.
  • 연결할 새 서버가 초기화됩니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제 계약을 추가하고 기존 서버를 초기화합니다.

    1. 계약 탭에서 계약 생성을 클릭하고 필드를 작성합니다.

      복제 계약 다중 공급업체 2

      이러한 설정으로 example-agreement-supplier2-to-supplier1 이라는 복제 계약이 생성됩니다. 복제 계약은 공급업체가 기존 공급자에게 데이터를 연결하고 복제할 때 사용하는 기존 서버의 호스트 이름, 프로토콜 및 인증 정보와 같은 설정을 정의합니다.

    2. Consumer Initialization 필드에서 Do Online Initialization 을 선택하여 계약을 저장한 후 새 서버를 자동으로 초기화합니다.
    3. Save Agreement 를 클릭합니다.

      계약이 생성된 후 Directory Server는 provider 1.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 계약 탭에서 테이블의 State 열에 있는 연결 상태를 확인합니다.

    복제 계약이 초기화되었습니다.

5장. 인증서 기반 인증을 사용하여 다중 공급 업체 복제 구성

두 개의 Directory Server 인스턴스 간에 복제를 설정할 때 바인딩 DN과 암호를 사용하여 복제 파트너에 인증하는 대신 인증서 기반 인증을 사용할 수 있습니다.

복제 토폴로지에 새 서버를 추가하고 인증서 기반 인증을 사용하여 새 호스트와 기존 서버 간에 복제 계약을 설정하면 됩니다.

중요

인증서 기반 인증에는 TLS 암호화 연결이 필요합니다.

5.1. 인증서 기반 인증과 복제 계약에 사용할 계정 및 바인딩 그룹 준비

복제 계약에 인증서 기반 인증을 사용하려면 먼저 계정을 준비하고 이러한 계정의 userCertificate 속성에 클라이언트 인증서를 저장합니다. 또한 이 절차에서는 나중에 복제 계약에 사용하는 바인딩 그룹을 생성합니다.

기존 호스트 server1.example.com 에서 이 절차를 수행합니다.

사전 요구 사항

  • Directory Server에서 TLS 암호화를 사용하도록 설정했습니다.
  • 클라이언트 인증서를 DER(고유 인코딩 규칙) 형식으로 /root/server1.der/root/server2.der 파일에 저장했습니다.

    클라이언트 인증서에 대한 자세한 내용과 CA(인증 기관)에서 요청하는 방법은 CA 문서를 참조하십시오.

절차

  1. ou=services 항목이 없는 경우 해당 항목을 생성합니다.

    # ldapadd -D "cn=Directory Manager" -W -H ldaps://server1.example.com -x
    
    dn: ou=services,dc=example,dc=com
    objectClass: organizationalunit
    objectClass: top
    ou: services
  2. cn=server1,ou=services,dc=example,dc=comcn=server1,ou=services,dc=example,dc=com 과 같은 두 서버에 대한 계정을 만듭니다.

    # ldapadd -D "cn=Directory Manager" -W -H ldaps://server1.example.com -x
    
    dn: cn=server1,ou=services,dc=example,dc=com
    objectClass: top
    objectClass: person
    objectClass: inetOrgPerson
    sn: server1
    cn: server1
    userPassword: password
    userCertificate:< file:///root/server1.der
    
    adding new entry "cn=server1,ou=services,dc=example,dc=com"
    
    dn: cn=server2,ou=services,dc=example,dc=com
    objectClass: top
    objectClass: person
    objectClass: inetOrgPerson
    sn: server2
    cn: server2
    userPassword: password
    userCertificate:< file:///root/server2.der
    
    adding new entry "cn=server2,ou=services,dc=example,dc=com"
  3. cn=repl_servers,dc=groups,dc=example,dc=com 과 같은 그룹을 만듭니다.

    # dsidm -D "cn=Directory Manager" ldaps://server1.example.com -b "dc=example,dc=com" group create --cn "repl_servers"
  4. 두 개의 복제 계정을 그룹에 멤버로 추가합니다.

    # dsidm -D "cn=Directory Manager" ldaps://server1.example.com -b "dc=example,dc=com" group add_member repl_servers "cn=server1,ou=services,dc=example,dc=com"
    
    # dsidm -D "cn=Directory Manager" ldaps://server1.example.com -b "dc=example,dc=com" group add_member repl_servers "cn=server2,ou=services,dc=example,dc=com"

5.2. 임시 복제 관리자 계정을 사용하여 새 서버 초기화

인증서 기반 인증은 디렉터리에 저장된 인증서를 사용합니다. 그러나 새 서버를 초기화하기 전에 server2.example.com 의 데이터베이스가 비어 있고 연결된 인증서의 계정이 존재하지 않습니다. 따라서 데이터베이스를 초기화하기 전에 인증서를 사용한 복제가 불가능합니다. 임시 복제 관리자 계정으로 server2.example.com 을 초기화하여 이 문제를 해결할 수 있습니다.

사전 요구 사항

  • server2.example.com 에 Directory Server 인스턴스를 설치했습니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.
  • 서버, server1.example.comserver2.example.com 의 Directory Server에서 TLS 암호화를 활성화했습니다.

절차

  1. server2.example.com 에서 dc=example,dc=com 접미사에 대해 복제를 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldaps://server2.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 2 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"

    이 명령은 server2.example.com 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 호스트의 복제본 ID를 2 로 설정합니다. 또한 명령은 지정된 암호를 사용하여 임시 cn=replication manager,cn=config 사용자를 생성하고 이 계정에서 이 호스트에 대한 접미사 변경 사항을 복제할 수 있습니다.

    복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

  2. server1.example.com 에서 다음을 수행합니다.

    1. 복제를 활성화합니다.

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication enable --suffix="dc=example,dc=com" --role="supplier" --replica-id="1"
    2. 인증을 위해 이전 단계의 임시 계정을 사용하는 임시 복제 계약을 만듭니다.

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt create --suffix="dc=example,dc=com" --host="server1.example.com" --port=636 --conn-protocol=LDAPS --bind-dn="cn=Replication Manager,cn=config" --bind-passwd="password" --bind-method=SIMPLE --init temporary_agreement

검증

  1. 초기화에 성공했는지 확인합니다.

    # dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt init-status --suffix "dc=example,dc=com" temporary_agreement
    Agreement successfully initialized.

5.3. 인증서 기반 인증을 사용하여 다중 공급 업체 복제 구성

인증서 기반 인증이 있는 다중 공급 복제 환경에서 복제본은 인증서를 사용하여 서로 인증합니다.

사전 요구 사항

  • 호스트, server1.example.comserver2.example.com 둘 다에 인증서 기반 인증을 설정합니다.
  • Directory Server는 클라이언트 인증서를 발행하는 CA(인증 기관)를 신뢰합니다.
  • 클라이언트 인증서는 서버의 /etc/dirsrv/slapd-instance_name/certmap.conf 에 설정된 요구 사항을 충족합니다.

절차

  1. server1.example.com 에서 다음을 수행합니다.

    1. 임시 복제 계약을 제거합니다.

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt delete --suffix="dc=example,dc=com" temporary_agreement
    2. cn=repl_servers,dc=groups,dc=example,dc=com 바인딩 그룹을 복제 설정에 추가합니다.

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group "cn=repl_servers,dc=groups,dc=example,dc=com"
    3. bind 그룹의 변경 사항을 자동으로 확인하도록 Directory Server 구성:

      # dsconf -D "cn=Directory Manager" ldaps://server1.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group-interval=0
  2. server2.example.com 에서 다음을 수행합니다.

    1. 임시 복제 관리자 계정을 제거합니다.

      # dsconf -D "cn=Directory Manager" ldaps://server2.example.com replication delete-manager --suffix="dc=example,dc=com" --name="Replication Manager"
    2. cn=repl_servers,dc=groups,dc=example,dc=com 바인딩 그룹을 복제 설정에 추가합니다.

      # dsconf -D "cn=Directory Manager" ldaps://server2.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group "cn=repl_servers,dc=groups,dc=example,dc=com"
    3. bind 그룹의 변경 사항을 자동으로 확인하도록 Directory Server 구성:

      # dsconf -D "cn=Directory Manager" ldap://server2.example.com replication set --suffix="dc=example,dc=com" --repl-bind-group-interval=0
    4. 인증서 기반 인증을 사용하여 복제 계약을 생성합니다.

      dsconf -D "cn=Directory Manager" ldaps://server2.example.com repl-agmt create --suffix="dc=example,dc=com" --host="server1.example.com" --port=636 --conn-protocol=LDAPS --bind-method="SSLCLIENTAUTH" --init server2-to-server1
  3. server1.example.com 에서 인증서 기반 인증을 사용하여 복제 계약을 생성합니다.

    dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt create --suffix="dc=example,dc=com" --host="server2.example.com" --port=636 --conn-protocol=LDAPS --bind-method="SSLCLIENTAUTH" --init server1-to-server2

검증

  1. 각 서버에서 초기화에 성공했는지 확인합니다.

    # dsconf -D "cn=Directory Manager" ldaps://server1.example.com repl-agmt init-status --suffix "dc=example,dc=com" server1-to-server2
    Agreement successfully initialized.
    
    # dsconf -D "cn=Directory Manager" ldaps://server2.example.com repl-agmt init-status --suffix "dc=example,dc=com" server2-to-server1
    Agreement successfully initialized.

6장. 명령줄을 사용하여 상태 복제 구성

계단식 복제 시나리오에서 하나의 서버, 허브는 소비자와 공급업체 역할을 모두 수행합니다. hub는 변경 로그를 유지 관리하는 읽기 전용 복제본입니다. 이는 공급업체로부터 업데이트를 받으며 이러한 업데이트를 소비자에게 제공합니다. 대규모 트래픽 부하의 균형을 유지하거나 지역적으로 분산된 환경에 공급 업체를 유지하기 위해 계단 복제를 사용하십시오.

6.1. 명령줄을 사용하여 새 허브 서버 준비

hub.example.com 호스트를 준비하려면 복제를 활성화합니다. 이 프로세스는 다음과 같습니다.

  • 복제 토폴로지에서 이 서버의 역할을 설정합니다.
  • 복제되는 접미사를 정의합니다.
  • 공급업체가 이 호스트에 연결하는 데 사용하는 복제 관리자 계정을 생성합니다.

복제 토폴로지에 추가할 허브에서 다음 절차를 수행합니다.

사전 요구 사항

  • Directory Server 인스턴스가 설치되어 있어야 합니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.

절차

  • dc=example,dc=com 접미사의 복제를 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com replication enable --suffix "dc=example,dc=com" --role "hub" --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"

    이 명령은 hub.example.com 호스트를 dc=example,dc=com 접미사의 허브로 구성합니다. 또한 이 명령은 지정된 암호를 사용하여 cn=replication manager,cn=config 사용자를 생성하고 이 계정에서 이 호스트에 대한 접미사 변경 사항을 복제할 수 있습니다.

검증

  • 복제 구성을 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 2
    nsDS5ReplicaId: 65535
    ...

    이러한 매개변수는 다음을 나타냅니다.

    • nsDS5ReplicaBindDN 은 복제 관리자 계정을 지정합니다.
    • nsDS5ReplicaRoot 는 복제된 접미사를 설정합니다.
    • nsDS5ReplicaType2 로 설정하면 이 호스트가 허브에도 유효한 소비자임을 정의합니다.
    • nsDS5ReplicaId65535 로 설정하여 이 호스트가 허브임을 정의합니다. dsconf 유틸리티는 --role "hub" 옵션을 정의하는 경우 이 값을 자동으로 설정합니다.

6.2. 명령줄을 사용하여 기존 서버를 허브 서버에 공급업체로 구성

공급업체로서 기존 서버를 준비하려면 다음이 필요합니다.

  • 접미사에 대한 복제를 활성화합니다.
  • 허브에 대한 복제 계약을 만듭니다.
  • 허브를 초기화합니다.

복제 토폴로지의 기존 공급 업체에 대해 이 절차를 수행하십시오.

사전 요구 사항

  • 허브의 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.

절차

  1. dc=example,dc=com 접미사의 복제를 활성화합니다.

    # [command]`dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1

    이 명령은 provider .example.com 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 항목의 복제본 ID를 1 로 설정합니다.

    중요

    복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

  2. 복제 계약을 추가하고 새 서버를 초기화합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt create --suffix "dc=example,dc=com" --host "hub.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier-to-hub

    이 명령은 example-agreement-supplier-to-hub 라는 복제 계약을 생성합니다. 복제 계약은 공급업체가 데이터를 허브에 연결하고 복제할 때 사용하는 허브의 호스트 이름, 프로토콜 및 인증 정보와 같은 설정을 정의합니다.

    계약이 생성되면 Directory Server에서 hub.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 복제 구성을 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 3
    ...

    이러한 매개변수는 다음을 나타냅니다.

    • nsDS5ReplicaRoot 는 복제된 접미사를 설정합니다.
    • nsDS5ReplicaType3 으로 설정하면 이 호스트가 공급업체임을 정의합니다.
  2. 초기화에 성공했는지 확인합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier-to-hub
    Agreement successfully initialized.
  3. 복제 상태를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement-supplier-to-hub
    Status For Agreement: "example-agreement-supplier-to-hub" (hub.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210331105030Z
    Last Update End: 20210331105030Z
    Number Of Changes Sent: 0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210331105026Z
    Last Init End: 20210331105029Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (Unknown) consumer (Unknown) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Replication Lag Time: Unavailable

    복제 상태마지막 업데이트 상태 필드를 확인합니다.

문제 해결

  1. 기본적으로 서버의 모든 계약에 대한 복제 유휴 타임아웃은 1시간입니다. 시간 초과로 인해 대규모 데이터베이스를 초기화하지 못하는 경우 nsslapd-idletimeout 매개변수를 더 높은 값으로 설정합니다. 예를 들어 매개변수를 7200 (2시간)으로 설정하려면 다음을 입력합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com config replace nsslapd-idletimeout=7200

    무제한 기간을 설정하려면 nsslapd-idletimeout0 으로 설정합니다.

6.3. 명령줄을 사용하여 허브의 새 소비자 준비

consumer.example.com 호스트를 준비하려면 복제를 활성화합니다. 이 프로세스는 다음과 같습니다.

  • 복제 토폴로지에서 이 서버의 역할을 설정합니다.
  • 복제되는 접미사를 정의합니다.
  • 허브에서 이 호스트에 연결하는 데 사용하는 복제 관리자 계정을 만듭니다.

복제 토폴로지에 추가할 소비자에서 다음 절차를 수행합니다.

사전 요구 사항

  • Directory Server 인스턴스가 설치되어 있어야 합니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.

절차

  • dc=example,dc=com 접미사의 복제를 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication enable --suffix "dc=example,dc=com" --role "consumer" --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"

    이 명령은 dc=example,dc=com 접미사의 소비자로 consumer.example.com 호스트를 구성합니다. 또한 이 명령은 지정된 암호를 사용하여 cn=replication manager,cn=config 사용자를 생성하고 이 계정에서 이 호스트에 대한 접미사 변경 사항을 복제할 수 있습니다.

검증

  • 복제 구성을 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication get --suffix "dc=example,dc=com"
    dn: cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    ...
    nsDS5ReplicaBindDN: cn=replication manager,cn=config
    nsDS5ReplicaRoot: dc=example,dc=com
    nsDS5ReplicaType: 2
    ...

    이러한 매개변수는 다음을 나타냅니다.

    • nsDS5ReplicaBindDN 은 복제 관리자 계정을 지정합니다.
    • nsDS5ReplicaRoot 는 복제된 접미사를 설정합니다.
    • nsDS5ReplicaType2 로 설정하면 이 호스트가 소비자임을 정의합니다.

6.4. 명령줄을 사용하여 허브 서버를 소비자의 공급업체로 구성

허브를 준비하려면 다음이 필요합니다.

  • 소비자에 대한 복제 계약을 만듭니다.
  • 소비자를 초기화합니다.

복제 토폴로지의 허브에서 이 절차를 수행합니다.

사전 요구 사항

  • 허브가 초기화되어 공급 업체에서 허브로 복제됩니다.
  • 허브에서 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.

절차

  • 복제 계약을 추가하고 소비자를 초기화합니다.

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com repl-agmt create --suffix "dc=example,dc=com" --host "consumer.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-hub-to-consumer

    이 명령은 example-agreement-hub-to-consumer 라는 복제 계약을 생성합니다. 복제 계약은 공급업체가 이 소비자에게 데이터를 연결하고 복제할 때 사용하는 소비자의 호스트 이름, 프로토콜 및 인증 정보와 같은 설정을 정의합니다.

    계약이 생성되면 Directory Server가 consumer.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 초기화에 성공했는지 확인합니다.

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-hub-to-consumer
    Agreement successfully initialized.
  2. 복제 상태를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://hub.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement-hub-to-consumer
    Status For Agreement: "example-agreement-hub-to-consumer" (consumer.example.com:389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20210331131534Z
    Last Update End: 20210331131534Z
    Number Of Changes Sent: 0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20210331131530Z
    Last Init End: 20210331131533Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: Not in Synchronization: supplier (Unknown) consumer (Unknown) State (green) Reason (error (0) replica acquired successfully: incremental update succeeded)
    Replication Lag Time: Unavailable

    복제 상태마지막 업데이트 상태 필드를 확인합니다.

문제 해결

  1. 기본적으로 서버의 모든 계약에 대한 복제 유휴 타임아웃은 1시간입니다. 시간 초과로 인해 대규모 데이터베이스를 초기화하지 못하는 경우 nsslapd-idletimeout 매개변수를 더 높은 값으로 설정합니다. 예를 들어 매개변수를 7200 (2시간)으로 설정하려면 다음을 입력합니다.

    # dsconf -D "cn=Directory Manager" ldap://hub .example.com config replace nsslapd-idletimeout=7200

    무제한 기간을 설정하려면 nsslapd-idletimeout0 으로 설정합니다.

7장. 웹 콘솔을 사용하여 cascading 복제 구성

계단식 복제 시나리오에서 하나의 서버, 허브는 소비자와 공급업체 역할을 모두 수행합니다. hub는 변경 로그를 유지 관리하는 읽기 전용 복제본입니다. 이는 공급업체로부터 업데이트를 받으며 이러한 업데이트를 소비자에게 제공합니다. 대규모 트래픽 부하의 균형을 유지하거나 지역적으로 분산된 환경에 공급 업체를 유지하기 위해 계단 복제를 사용하십시오.

7.1. 웹 콘솔을 사용하여 새 허브 서버 준비

hub.example.com 호스트를 준비하려면 복제를 활성화합니다. 이 프로세스는 다음과 같습니다.

  • 복제 토폴로지에서 이 서버의 역할을 설정합니다.
  • 복제되는 접미사를 정의합니다.
  • 공급업체가 이 호스트에 연결하는 데 사용하는 복제 관리자 계정을 생성합니다.

복제 토폴로지에 추가할 허브에서 다음 절차를 수행합니다.

사전 요구 사항

  • Directory Server 인스턴스가 설치되어 있어야 합니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제를 활성화합니다.

    1. 복제 활성화를 클릭합니다.
    2. 복제 역할 필드에서 Consumer 를 선택하고 복제 관리자 계정과 암호를 입력하여 만듭니다.

      허브에서 복제 활성화

      이러한 설정은 호스트를 dc=example,dc=com 접미사의 허브로 구성합니다.

    3. 복제 활성화를 클릭합니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. Replica Role 필드에 값 Hub 가 포함된 경우 복제가 활성화되고 호스트는 소비자로 구성됩니다.

7.2. 웹 콘솔을 사용하여 기존 서버를 허브 서버에 공급업체로 구성

공급업체로서 기존 서버를 준비하려면 다음이 필요합니다.

  • 접미사에 대한 복제를 활성화합니다.
  • 허브에 대한 복제 계약을 만듭니다.
  • 허브를 초기화합니다.

복제 토폴로지의 기존 공급 업체에 대해 이 절차를 수행하십시오.

사전 요구 사항

  • 허브의 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제를 활성화합니다.

    1. 복제 활성화를 클릭합니다.
    2. 복제 역할 필드에서 device를 선택하고, 복제본 ID와 생성할 복제 관리자 계정의 고유 이름(DN) 및 암호를 입력합니다.

      다중 공급업체 복제 1에 대한 복제 활성화

      이 설정은 호스트를 dc=example,dc=com 접미사의 공급업체로 구성하고 이 항목의 복제본 ID를 1 로 설정합니다.

      중요

      복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유 정수여야 합니다.

    3. 복제 활성화를 클릭합니다.
  4. 복제 계약을 추가하고 새 서버를 초기화합니다.

    1. 계약 탭에서 계약 생성을 클릭하고 필드를 작성합니다.

      복제 계약 cascasing 복제 공급업체를 허브로 생성

      이러한 설정은 example-agreement-supplier-to-hub 라는 복제 계약을 생성합니다. 복제 계약은 공급업체가 이 허브에 데이터를 연결 및 복제할 때 사용하는 허브의 호스트 이름, 프로토콜 및 인증 정보와 같은 설정을 정의합니다.

    2. Consumer Initialization 필드에서 Do Online Initialization 을 선택하여 계약을 저장한 후 새 서버를 자동으로 초기화합니다.
    3. Save Agreement 를 클릭합니다.

      계약이 생성되면 Directory Server에서 hub.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 계약 탭에서 테이블의 State 열에 있는 연결 상태를 확인합니다.

    복제 계약이 초기화되었습니다.

7.3. 웹 콘솔을 사용하여 허브의 새 소비자 준비

consumer.example.com 호스트를 준비하려면 복제를 활성화합니다. 이 프로세스는 다음과 같습니다.

  • 복제 토폴로지에서 이 서버의 역할을 설정합니다.
  • 복제되는 접미사를 정의합니다.
  • 공급업체가 이 호스트에 연결하는 데 사용하는 복제 관리자 계정을 생성합니다.

복제 토폴로지에 추가할 소비자에서 다음 절차를 수행합니다.

사전 요구 사항

  • Directory Server 인스턴스가 설치되어 있어야 합니다.
  • dc=example,dc=com 접미사의 데이터베이스가 있습니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제 활성화를 클릭합니다.
  4. 복제 역할 필드에서 Consumer 를 선택하고 복제 관리자 계정과 암호를 입력하여 만듭니다.

    소비자에서 복제 활성화

    이러한 설정은 호스트를 dc=example,dc=com 접미사의 소비자로 구성합니다. 또한 서버는 cn=replication manager,cn=config 사용자를 생성하고 이 계정에서 이 호스트에 대한 접미사 변경 사항을 복제할 수 있습니다.

  5. 복제 활성화를 클릭합니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. Replica Role 필드에 Consumer 값이 포함되어 있으면 복제가 활성화되고 호스트는 소비자로 구성됩니다.

7.4. 웹 콘솔을 사용하여 허브 서버를 소비자의 공급업체로 구성

허브를 준비하려면 다음이 필요합니다.

  • 소비자에 대한 복제 계약을 만듭니다.
  • 소비자를 초기화합니다.

복제 토폴로지의 허브에서 이 절차를 수행합니다.

사전 요구 사항

  • 허브가 초기화되어 공급 업체에서 허브로 복제됩니다.
  • 허브에서 dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 복제 계약을 추가하고 소비자를 초기화합니다.

    1. 계약 탭에서 계약 생성을 클릭하고 필드를 작성합니다.

      소비자에 대한 복제 계약 cascsing 복제 허브 생성

      이러한 설정은 example-agreement-hub-to-consumer 라는 복제 계약을 생성합니다. 복제 계약은 소비자의 호스트 이름, 프로토콜 및 이 소비자에게 데이터를 연결 및 복제할 때 사용하는 인증 정보와 같은 설정을 정의합니다.

    2. Consumer Initialization 필드에서 Do Online Initialization 을 선택하여 계약을 저장한 후 소비자를 자동으로 초기화합니다.
    3. Save Agreement 를 클릭합니다.

      계약이 생성되면 Directory Server가 consumer.example.com 을 초기화합니다. 복제할 데이터의 양에 따라 초기화 시간이 오래 걸릴 수 있습니다.

검증

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 계약 탭에서 테이블의 State 열에 있는 연결 상태를 확인합니다.

    복제 계약이 초기화되었습니다.

8장. 다중 공급 복제 환경에서 대기 시간 개선

특정 다중 공급 업체 복제 환경에서(예: 서버가 WAN(wide area network)을 통해 연결되어 있는 경우, 여러 공급업체가 동시에 업데이트를 수신하는 경우 복제 대기 시간이 길 수 있습니다. 이는 한 공급업체가 장기간 배포하지 않고 복제본에만 액세스할 때 발생합니다. 이러한 상황에서 다른 공급업체는 이 소비자에게 업데이트를 보낼 수 없으므로 복제 대기 시간이 증가합니다.

일정 시간 후에 복제본을 해제하려면 공급자 및 허브에서 nsds5ReplicaReleaseTimeout 매개변수를 설정합니다.

참고

대부분의 환경에는 60 초의 기본값이 적합합니다. 너무 높거나 너무 낮게 설정된 값은 복제 성능에 부정적인 영향을 미칠 수 있습니다. 값을 너무 낮게 설정하면 복제 서버가 지속적으로 서로 복구되며 서버는 많은 업데이트를 보낼 수 없습니다. 트래픽이 많은 복제 환경에서 시간 초과가 길어지면 한 공급업체가 복제본에 독점적으로 액세스하는 상황을 개선할 수 있습니다. 그러나 대부분의 경우 120 초 이상의 값이 복제 속도가 느려집니다.

8.1. 명령줄을 사용하여 복제 릴리스 시간 제한 설정

다중 공급 업체 복제 환경에서 복제 효율성을 개선하려면 모든 허브 및 공급업체에서 복제 릴리스 시간 초과 값을 업데이트합니다.

사전 요구 사항

  • 여러 공급업체와 허브 간 복제를 구성했습니다.

절차

  1. 접미사의 시간 초과 값을 설정합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix="dc=example,dc=com" --repl-release-timeout=70

    이 명령을 실행하면 example,dc=com 접미사의 복제 시간 초과를 70 초로 변경합니다.

  2. 인스턴스를 다시 시작하십시오.

    # dsctl instance_name restart

8.2. 웹 콘솔을 사용하여 복제 릴리스 시간 제한 설정

다중 공급 업체 복제 환경에서 복제 효율성을 개선하려면 모든 허브 및 공급업체에서 복제 릴리스 시간 초과 값을 업데이트합니다.

사전 요구 사항

  • 여러 공급업체와 허브 간 복제를 구성했습니다.

절차

  1. 복제 탭에서 접미사 항목을 선택합니다.
  2. 고급 설정 표시를 클릭합니다.
  3. 복제 릴리스 제한 필드에서 값을 업데이트합니다.
  4. Save Configuration 을 클릭합니다.

9장. 복제 토폴로지에서 인스턴스 제거

하드웨어 중단 또는 구조적 변경과 같은 특정 상황에서는 관리자가 복제 토폴로지에서 Directory Server 인스턴스를 제거하려고 합니다. 인스턴스 제거 절차는 제거할 복제본의 역할에 따라 다릅니다.

9.1. 복제 토폴로지에서 소비자 또는 허브 제거

복제 토폴로지에 소비자 또는 허브가 더 이상 필요하지 않은 경우 제거합니다.

사전 요구 사항

  • 제거할 인스턴스는 소비자 또는 허브입니다.
  • 삭제할 호스트가 토폴로지의 다른 서버에 대한 공급업체 역할을 하는 허브인 경우 다른 공급업체 또는 허브를 구성하여 이러한 서버로 데이터를 복제하여 분리되지 않도록 합니다.

절차

  1. 제거할 소비자 또는 허브에서 다음을 수행합니다.

    1. 접미사와 해당 데이터베이스를 나열합니다.

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix list
      dc=example,dc=com (userroot)

      데이터베이스 이름을 기록해 둡니다.

    2. 추가 업데이트를 방지하려면 데이터베이스를 읽기 전용 모드로 설정합니다.

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"
  2. 삭제하려는 소비자 또는 허브와 복제 계약이 있는 모든 공급업체에서 다음을 수행합니다.

    1. 복제된 접미사의 복제 계약을 나열합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt list --suffix "dc=example,dc=com"
      dn: cn=example-agreement,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
      cn: example-agreement
      ...

      cn 속성에는 다음 단계에서 필요한 복제 계약 이름이 포함되어 있습니다.

    2. 복제 계약을 제거합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
  3. 제거할 소비자 또는 허브에서 모든 접미사에 대해 복제를 비활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"

    이 호스트가 허브인 경우 복제를 비활성화하면 이 서버에서 이 접미사에 대한 모든 복제 계약도 자동으로 삭제됩니다.

다음 단계

  • 테스트 목적으로 삭제된 인스턴스를 사용하려면 읽기 전용 모드를 비활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userroot
    중요

    테스트 목적으로 토폴로지에서 제거한 인스턴스를 사용하려는 경우 클라이언트가 계속 사용하지 않아야 합니다.

  • 인스턴스를 제거합니다.

    # dsctl instance_name remove --do-it

9.2. 복제 토폴로지에서 공급자 제거

복제 토폴로지에서 공급업체를 완전히 제거하는 것은 허브 또는 소비자를 제거하는 것보다 더 어렵습니다. 이는 토폴로지의 모든 공급업체가 다른 공급 업체에 대한 정보를 저장하고 공급 업체를 실수로 사용할 수 없는 경우에도 해당 정보를 유지하기 때문입니다.

Directory Server는 RUV(복제 업데이트 벡터)라는 메타데이터 집합의 복제 토폴로지에 대한 정보를 유지합니다. RUV에는 해당 지역의 ID, URL, 최신 변경 상태 번호(CSN) 및 첫 번째 변경의 CSN과 같은 공급 업체에 대한 정보가 포함되어 있습니다. 공급업체와 소비자 모두 RUV 정보를 저장하고 복제 업데이트를 제어하는 데 사용합니다.

공급업체를 완전히 제거하려면 구성 항목과 함께 메타데이터를 제거해야 합니다.

사전 요구 사항

  • 삭제 방법은 공급업체입니다.
  • 호스트가 토폴로지의 다른 서버에 공급업체 역할을 하는 경우 다른 공급업체 또는 허브를 구성하여 이러한 서버로 데이터를 복제하여 분리되지 않도록 합니다.

절차

  1. 제거할 공급업체의 경우:

    1. 접미사와 해당 데이터베이스를 나열합니다.

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix list
      dc=example,dc=com (userroot)

      데이터베이스 이름을 기록해 둡니다.

    2. 추가 업데이트를 방지하려면 데이터베이스를 읽기 전용 모드로 설정합니다.

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --enable-readonly "userroot"
    3. 토폴로지의 다른 모든 서버가 이 공급자로부터 모든 데이터를 수신할 때까지 기다립니다. 확인하려면 다른 서버의 CSN이 공급 업체의 CSN보다 크거나 같은지 확인하려면 다음을 수행하십시오.

      # ds-replcheck online -D "cn=Directory Manager" -w password -m ldap://host-to-remove.example.com:389 -r ldap://server.example.com:389 -b dc=example,dc=com
      ================================================================================
               Replication Synchronization Report  (Tue Mar  5 09:46:20 2021)
      ================================================================================
      
      Database RUV's
      =====================================================
      
      Supplier RUV:
        {replica 1 ldap://host-to-remove.example.com:389} 5c7e8927000100010000 5c7e89a0000100010000
        {replicageneration} 5c7e8927000000010000
      
      Replica RUV:
        {replica 1 ldap://host-to-remove.example.com:389} 5c7e8927000100010000 5c7e8927000400010000
        {replica 2 ldap://server.example.com:389}
        {replicageneration} 5c7e8927000000010000
    4. 복제본 ID를 표시합니다.

      # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication get --suffix "dc=example,dc=com" | grep -i "nsds5replicaid"
      nsDS5ReplicaId: 1

      이 예에서 복제 ID는 1 입니다. 이 절차의 마지막 단계에 대한 복제본 ID를 기록하십시오.

  2. 삭제하려는 호스트와 복제 계약에 동의한 모든 공급업체에서 다음을 수행합니다.

    1. 복제된 접미사의 복제 계약을 나열합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt list --suffix "dc=example,dc=com"
      dn: cn=example-agreement,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
      cn: example-agreement
      ...

      cn 속성에는 다음 단계에서 필요한 복제 계약 이름이 포함되어 있습니다.

    2. 복제 계약을 제거합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
  3. 제거할 공급업체에서 모든 접미사에 대한 복제를 비활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com replication disable --suffix "dc=example,dc=com"

    복제를 비활성화하면 이 서버에서 이 접미사에 대한 모든 복제 계약도 자동으로 삭제됩니다.

  4. 진행하기 전에 ds-replcheck 출력의 Replica RUV 섹션에 나열된 모든 Directory Server 인스턴스가 온라인 상태인지 확인합니다.
  5. 토폴로지의 나머지 공급업체 중 하나에서 복제본 ID의 RUV를 정리합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-tasks cleanallruv --suffix "dc=example,dc=com" --replica-id 1

    이 명령을 실행하려면 이 절차의 이전 단계에 표시된 복제본 ID를 지정해야 합니다.

검증

  • ds-replcheck 명령 출력에서 제거한 호스트의 복제본 ID 및 URL이 있는 항목이 남아 있지 않은지 확인합니다.

    # ds-replcheck online -D "cn=Directory Manager" -w password -m ldap://host-to-remove.example.com:389 -r ldap://server.example.com:389 -b dc=example,dc=com

다음 단계

  • 테스트 목적으로 삭제된 인스턴스를 사용하려면 읽기 전용 모드를 비활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://host-to-remove.example.com backend suffix set --disable-readonly userroot
    중요

    테스트 목적으로 토폴로지에서 제거한 인스턴스를 사용하려는 경우 클라이언트가 계속 사용하지 않아야 합니다.

  • 인스턴스를 제거합니다.

    # dsctl instance_name remove --do-it

10장. 다중 버전 복제 토폴로지에서 복제본의 고정화 방지

다중 공급 업체의 복제 토폴로지에서는 업데이트 부하가 많은 공급 업체가 다른 공급업체도 업데이트할 수 없도록 복제본을 모놀리식화할 수 있습니다.

이 섹션에서는 단조화가 발생하는 상황, 이 문제를 식별하는 방법, 독점 상황을 피하기 위해 공급 업체를 구성하는 방법에 대한 정보를 제공합니다.

10.1. monopolization이 발생할 때

다중 공급 업체 복제의 기능 중 하나는 공급 업체가 복제본에 독점적 인 액세스를 얻는 것입니다. 공급업체가 잠긴 동안 액세스를 취득하려고 하면 해당 복제본은 사용 중인 응답을 다시 전송하고, 공급업체는 다른 시도를 시작하기 전에 nsds5ReplicaBusyWaitTime 매개변수에 설정된 시간을 기다립니다. 그동안 공급자는 업데이트를 다른 복제본으로 보냅니다. 첫 번째 복제본이 다시 무료인 경우 공급자는 이 호스트에 업데이트를 보냅니다.

종속된 공급업체가 업데이트 로드가 크거나 변경 로그에 보류 중인 업데이트가 많이 있는 경우 문제가 될 수 있습니다. 이 상황에서 잠금 공급업체는 업데이트 전송을 완료하고 동일한 사본을 회수하려고 즉시 시도합니다. 이러한 시도는 대부분의 경우 성공합니다. 다른 공급업체가 여전히 대기 중이기 때문입니다. nsds5ReplicaSessionPauseTime 매개변수에서 두 개의 업데이트 세션 사이에 일시 중지를 설정할 수 있습니다. 이로 인해 단일 공급업체가 몇 시간 이상 복제본을 단조할 수 있습니다.

10.2. 복제 로깅 활성화로 복제본의 고정화 확인

하나 이상의 공급업체가 많은 업데이트 로드를 사용하고 복제본이 자주 업데이트를 수신하지 못하는 경우 복제 메시지를 기록하여 단조화 상황을 확인할 수 있습니다.

사전 요구 사항

  • 복제 토폴로지에는 여러 공급업체가 있습니다.

절차

  1. 복제 로깅을 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-level=8192

    이 명령은 복제 로깅만 활성화하며 다른 오류 메시지를 로깅하는 것은 비활성화되어 있습니다.

  2. /var/log/dirsrv/slapd-instance_name/errors 로그 파일을 모니터링하고 다음 오류 메시지를 검색합니다.

    Replica Busy! Status: [Error (1) Replication error acquiring replica: replica busy]

    Directory Server가 때때로 이 오류를 기록하는 것은 정상입니다. 그러나 복제본이 자주 업데이트를 받지 못하고 공급자에서 이 오류를 기록하는 경우 이 문제를 해결하기 위해 구성을 업데이트하는 것이 좋습니다.

10.3. 복제본의 단조화를 방지하기 위해 공급업체 구성

이 절차에서는 복제본의 단조화를 방지하기 위해 공급업체에서 매개변수를 설정하는 방법을 설명합니다.

환경과 로드의 차이로 인해 해당 상황에서 관련된 매개변수만 설정하고 환경에 따라 값을 조정합니다.

사전 요구 사항

  • 복제 토폴로지에는 여러 공급업체가 있습니다.
  • Directory Server는 자주 로그 Replica Busy! 상태: [Error (1) 복제 오류 replica: replica busy] 오류입니다.

절차

  1. nsds5ReplicaBusyWaitTime 매개변수를 설정하여 복제본이 사용 중인 응답을 보낸 후 복제본에 대한 액세스 권한을 얻기 전에 공급업체가 대기하는 시간을 설정합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --suffix "dc=example,dc=com" --busy-wait-time 5 replication_agreement_name

    이 명령은 대기 시간을 5 초로 설정합니다. 이 설정은 지정된 복제 계약에만 적용됩니다.

  2. 공급업체가 두 개의 업데이트 세션 사이에 대기하는 시간을 구성하려면 nsds5ReplicaSessionPauseTime 매개변수를 설정합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --suffix "dc=example,dc=com" --session-pause-time 15 replication_agreement_name

    이 명령은 일시 중지를 15 초로 설정합니다. 기본적으로 nsds5ReplicaSessionPauseTimensds5ReplicaBusyWaitTime 의 값보다 1초입니다. 이 설정은 지정된 복제 계약에만 적용됩니다.

  3. 업데이트 전송 완료 여부에 관계없이 지정된 시간 후에 nsds5ReplicaReleaseTimeout 매개변수를 설정하여 복제 세션을 종료합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication set --suffix "dc=example,dc=com" --repl-release-timeout 90

    이 명령은 타임아웃을 90 초로 설정합니다. 이 설정은 지정된 접미사의 모든 복제 계약에 적용됩니다.

  4. 선택 사항: 공급 업체의 시간 초과 기간을 설정하여 느리거나 손상된 연결을 통해 업데이트를 전송하려고 하지 않도록 소비자에게 연결을 유지하지 않도록 합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt set --conn-timeout 600 --suffix "dc=example,dc=com" replication_agreement_name

    이 명령은 시간 제한을 600 초(10분)로 설정합니다. 예기치 않은 값을 확인하려면 복제 프로세스가 걸리는 평균 시간 동안 액세스 로그를 확인하고 그에 따라 시간 초과 기간을 설정합니다.

추가 리소스

11장. 복제 환경에서 인스턴스가 오프라인인 후 복제 업데이트 강제 적용

정기적인 유지 관리를 위해 복제와 관련된 Directory Server 인스턴스를 중지한 경우 공급업체는 다시 온라인 상태가 될 때 디렉터리 데이터를 즉시 업데이트해야 합니다. 명령줄 및 웹 콘솔을 사용하여 이 업데이트를 적용할 수 있습니다.

11.1. 명령줄을 사용하여 복제 업데이트 강제 적용

공급업체에서 다음 단계를 수행하여 example-agreement 에서 dc=example,dc=com 접미사에 대한 복제 업데이트를 적용합니다.

사전 요구 사항

  • 복제가 설정되어 있습니다.
  • 사용자가 초기화되었습니다.

절차

  1. 복제 계약에 업데이트 일정이 구성되어 있는지 확인합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt get --suffix "dc=example,dc=com" example-agreement

    명령 출력에 nsDS5ReplicaUpdateSchedule: * 또는 nsDS5ReplicaUpdateSchedule 매개변수가 없으면 업데이트 일정이 구성되지 않습니다.

    nsDS5ReplicaUpdateSchedule 에 다음에 표시된 것과 같은 일정이 포함되어 있으면 값을 기록하십시오.

    nsDS5ReplicaUpdateSchedule: 0800-2200 0246
  2. 업데이트 일정이 구성된 경우 다음 명령을 입력하여 임시로 비활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt set --schedule \* --suffix "dc=example,dc=com" example-agreement
  3. 복제 계약을 일시적으로 비활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt disable --suffix "dc=example,dc=com" example-agreement
  4. 복제 계약을 다시 활성화하여 복제 업데이트를 강제 적용합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt enable --suffix "dc=example,dc=com" example-agreement
  5. 이 절차의 시작 부분에 복제 일정이 구성된 경우 일정을 이전 값으로 설정합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt set --schedule "0800-2200 0246" --suffix "dc=example,dc=com" example-agreement

검증

  • 복제 상태를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement
    ...
    Last Update Start: 20210406120631Z
    Last Update End: 20210406120631Z
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    ...

11.2. 웹 콘솔을 사용하여 복제 업데이트 강제 적용

공급 업체에서 다음 단계를 수행하여 복제 업데이트를 적용합니다.

사전 요구 사항

  • 복제가 설정되어 있습니다.
  • 사용자가 초기화됨
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 복제 메뉴를 엽니다.
  2. dc=example,dc=com 접미사를 선택합니다.
  3. 계약 탭을 엽니다.
  4. 복제 계약에 업데이트 일정이 구성되어 있는지 확인합니다.

    1. 계약 옆에 있는 오버플로 메뉴를 클릭하고 계약 편집 을 선택합니다.
    2. Scheduling 탭에서 현재 설정된 값을 기록해 둡니다.

      복제 일정

      Use a Custom Schedule is not selected, no schedule is configured.

  5. 복제 계약 옆에 있는 오버플로 메뉴를 클릭하고 계약 비활성화/사용을 선택하여 계약을 비활성화합니다.

    State 열의 계약 상태는 이제 Disabled 입니다.

  6. 복제 계약 옆에 있는 오버플로 메뉴를 다시 클릭하고 비활성화/계약 비활성화를 선택하여 복제 계약을 다시 활성화하고 복제 업데이트를 적용합니다.

    State 열의 계약 상태가 활성화 되었습니다.

  7. 이 절차의 시작 부분에 복제 일정이 구성된 경우 일정을 이전 값으로 설정합니다.

    1. 오버플로 메뉴를 클릭하고 ActionsEdit Agreement 를 선택합니다.
    2. Scheduling 탭에서 이전 값을 설정합니다.

검증

  • 복제 상태를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt status --suffix "dc=example,dc=com" example-agreement
    ...
    Last Update Start: 20210406120631Z
    Last Update End: 20210406120631Z
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    ...

12장. 복제본의 역할 변경

복제 토폴로지에서는 복제본의 역할을 변경할 수 있습니다. 예를 들어 하드웨어 중단으로 인해 공급업체를 사용할 수 없는 경우 공급업체에게 소비자를 승격할 수 있습니다. 다른 방법, 예를 들어 하드웨어 리소스가 낮은 공급 업체를 소비자에게 시연하고 나중에 새로운 하드웨어를 갖춘 다른 공급 업체를 추가 할 수 있습니다.

12.1. 명령줄을 사용하여 복제본 승격

승격할 수 있습니다.

  • 허브 또는 공급 업체에 대한 소비자
  • A hub to a provider

이 섹션에서는 dc=example,dc=com 접미사의 복제본을 승격하는 방법을 설명합니다.

사전 요구 사항

  • Directory Server 인스턴스는 복제 토폴로지의 멤버입니다.
  • 승격할 복제본은 소비자 또는 허브입니다.

절차

  1. 승격할 복제본이 복제 계약의 허브이고 승격 후 허브에서 더 이상 다른 호스트에 데이터를 전송해서는 안 되는 경우 복제 계약을 제거하십시오.

    1. 허브에 복제 계약을 나열합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt list --suffix "dc=example,dc=com"
      dn: cn=example-agreement,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
      cn: example-agreement
      ...

      cn 속성에는 다음 단계에서 필요한 복제 계약 이름이 포함되어 있습니다.

    2. 허브에서 복제 계약을 제거합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
  2. 인스턴스를 승격합니다.

    • 소비자 또는 허브를 공급업체로 승격하는 경우 다음을 입력합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication promote --suffix "dc=example,dc=com" --newrole "supplier" --replica-id 2
      중요

      복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유한 정수 값이어야 합니다.

    • 소비자를 허브로 승격하는 경우 다음을 입력합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication promote --suffix "dc=example,dc=com" --newrole "hub"
  3. 새 역할의 복제본이 토폴로지의 다른 호스트에 업데이트를 보내야 하는 경우 복제 계약을 생성합니다.

12.2. 웹 콘솔을 사용하여 복제본 승격

승격할 수 있습니다.

  • 허브 또는 공급 업체에 대한 소비자
  • A hub to a provider

이 섹션에서는 dc=example,dc=com 접미사의 복제본을 승격하는 방법을 설명합니다.

사전 요구 사항

  • Directory Server 인스턴스는 복제 토폴로지의 멤버입니다.
  • 승격할 복제본은 소비자 또는 허브입니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 승격할 복제본이 복제 계약의 허브이고 승격 후 허브에서 더 이상 다른 호스트에 데이터를 전송해서는 안 되는 경우 복제 계약을 제거하십시오.

    1. 복제이동합니다.
    2. 삭제할 계약 옆에 있는 작업을 클릭하고 계약 삭제 를 선택합니다.
  2. 복제 구성으로 이동하여 역할 변경 버튼을 클릭합니다.

    • 소비자 또는 허브를 공급업체로 승격하는 경우 provider를 선택하고 고유한 복제본 ID를 입력합니다.

      중요

      복제본 ID는 토폴로지의 모든 공급자의 접미사에 대해 1 에서 65534 사이의 고유한 정수 값이어야 합니다.

    • 소비자를 허브로 승격하는 경우 Hub 를 선택합니다.
  3. Yes, I is sure 를 선택합니다.
  4. 역할 변경을 클릭합니다.
  5. 새 역할의 복제본이 토폴로지의 다른 호스트에 업데이트를 보내야 하는 경우 복제 계약을 생성합니다.

12.3. 명령줄을 사용하여 복제본 데모

데모할 수 있습니다:

  • 소비자에 대한 공급업체 또는 허브
  • 소비자로의 허브

이 섹션에서는 dc=example,dc=com 접미사의 복제본을 평가하는 방법을 설명합니다.

사전 요구 사항

  • Directory Server 인스턴스는 복제 토폴로지의 멤버입니다.
  • demote의 사본은 공급 업체 또는 허브입니다.

절차

  1. 예를 들어 소비자에게 복제본을 시연하기 때문에 더 이상 필요하지 않은 복제 계약이 있는 경우 복제 계약을 제거하십시오.

    1. 복제본에 복제 계약을 나열합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt list --suffix "dc=example,dc=com"
      dn: cn=example-agreement,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
      cn: example-agreement
      ...

      cn 속성에는 다음 단계에서 필요한 복제 계약 이름이 포함되어 있습니다.

    2. 복제본에서 복제 계약을 제거합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-agmt delete --suffix "dc=example,dc=com" example-agreement
  2. 인스턴스를 demote합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication demote --suffix "dc=example,dc=com" --newrole "hub_or_consumer"

    구성할 역할에 따라 --newrole 매개변수를 hub 또는 consumer 로 설정합니다.

  3. 복제본을 허브로 구성하고 토폴로지의 다른 호스트에 업데이트를 보내야 하는 경우 복제 계약을 생성합니다.

12.4. 웹 콘솔을 사용하여 복제본 데모

데모할 수 있습니다:

  • 소비자에 대한 공급업체 또는 허브
  • 소비자로의 허브

이 섹션에서는 dc=example,dc=com 접미사의 복제본을 평가하는 방법을 설명합니다.

사전 요구 사항

  • Directory Server 인스턴스는 복제 토폴로지의 멤버입니다.
  • demote의 사본은 공급 업체 또는 허브입니다.
  • 웹 콘솔에서 인스턴스에 로그인되어 있습니다.

절차

  1. 예를 들어 소비자에게 복제본을 시연하기 때문에 더 이상 필요하지 않은 복제 계약이 있는 경우 복제 계약을 제거하십시오.

    1. 복제이동합니다.
    2. 삭제할 계약 옆에 있는 작업을 클릭하고 계약 삭제 를 선택합니다.
  2. 복제 구성으로 이동하여 역할 변경 버튼을 클릭합니다.
  3. 새 복제본 역할을 선택합니다.
  4. Yes, I is sure 를 선택합니다.
  5. 역할 변경을 클릭합니다.
  6. 새 역할의 복제본이 토폴로지의 다른 호스트에 업데이트를 보내야 하는 경우 복제 계약을 생성합니다.

13장. 복제 변경 로그 트리밍

Directory Server 변경 로그는 수신 및 처리된 변경 사항 목록을 관리합니다. 복제 파트너로부터 수신된 클라이언트 변경 및 변경 사항이 포함됩니다.

기본적으로 Directory Server는 7일 이상 된 changelog 항목을 트리밍합니다. 그러나 다음을 구성할 수 있습니다.

  • nsslapd-changelogmaxage 매개변수의 변경 로그의 최대 기간입니다.
  • nsslapd-changelogmaxentries 매개변수의 변경 로그의 총 레코드 수입니다.

이러한 설정 중 하나를 활성화한 경우 Directory Server는 기본적으로 5분마다 변경 로그를 트리밍합니다(nsslapd-changelogtrim-interval).

트리밍 설정을 사용하도록 설정한 경우에도 이후에 생성된 모든 레코드 및 레코드는 토폴로지의 모든 서버에 성공적으로 복제될 때까지 변경 로그에 남아 있습니다. 복제 토폴로지에서 공급업체 제거에 설명된 대로 토폴로지에서 공급업체를 제거하면 Directory Server가 다른 서버의 변경 로그에서 이 공급자의 모든 업데이트를 트리밍합니다.

13.1. 명령줄을 사용하여 복제 변경 로그 트리밍 구성

Directory Server에서는 기본적으로 7일이 지난 변경 로그 항목을 트리밍합니다. 그러나 Directory Server가 항목을 제거한 후 시간을 구성할 수 있습니다. 항목 수가 구성된 값을 초과하는 경우 항목을 자동으로 제거하도록 Directory Server를 구성할 수도 있습니다.

이 섹션에서는 dc=example,dc=com 접미사에 대한 변경 로그 트리밍을 구성하는 방법을 설명합니다.

참고

Red Hat은 최대 항목 수 대신 최대 기간을 설정하는 것이 좋습니다. 최대 수명은 cn=replica,cn=suffixDN,cn=mapping tree,cn=config 항목의 nsDS5ReplicaPurgeDelay 매개변수에 설정된 복제 제거 지연과 일치해야 합니다.

공급자에게 이 절차를 수행하십시오.

사전 요구 사항

  • dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.

절차

  1. 변경 로그 트리밍을 구성합니다.

    • 최대 변경 로그 항목의 기간을 설정하려면 다음을 입력합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w"

      이 명령은 최대 사용 기간을 4주로 설정합니다. 매개변수는 다음 단위를 지원합니다.

      • S(S) for seconds
      • m (M)(분)
      • H( h ) for hours
      • D(D) for days
      • w (W)를 몇 주 동안
    • 최대 항목 수를 설정하려면 다음을 입력합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-entries "100000"

      이 명령은 변경 로그의 최대 항목 수를 10.0.0.1으로 설정합니다.

  2. 기본적으로 Directory Server는 5분(300초)마다 변경 로그를 트래킹합니다. 다른 간격을 설정하려면 다음을 입력합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --trim-interval 600

    이 명령은 간격을 10분(600초)으로 설정합니다.

검증

  • 접미사의 변경 로그 설정을 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication get-changelog --suffix "dc=example,dc=com"
    dn: cn=changelog,cn=userroot,cn=ldbm database,cn=plugins,cn=config
    cn: changelog
    nsslapd-changelogmaxage: 4w
    nsslapd-changelogtrim-interval: 600
    ...

    명령은 기본값과 다른 매개변수만 표시합니다.

13.2. 대규모 변경 로그의 크기를 수동으로 줄입니다.

복제 변경 로그 트리밍이 활성화되지 않은 경우와 같은 특정 상황에서는 변경 로그가 과도하게 큰 크기로 증가할 수 있습니다. 이 문제를 해결하려면 수동으로 변경 로그 크기를 줄일 수 있습니다.

다음 절차에서는 dc=example,dc=com 접미사의 변경 로그를 트리밍하는 방법을 설명합니다. 공급자에게 이 절차를 수행하십시오.

사전 요구 사항

  • dc=example,dc=com 접미사에 대한 복제를 활성화했습니다.

절차

  1. 선택 사항: 변경 로그 크기를 표시합니다.

    1. dc=example,dc=com 접미사의 백엔드 데이터베이스를 확인합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
      dc=example,dc=com (userroot)

      대괄호로 있는 이름은 해당 접미사의 데이터를 저장하는 백엔드 데이터베이스입니다.

    2. userroot 백엔드의 changelog 파일의 크기를 표시합니다.

      # ls -lh /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db
      -rw-------. 1 dirsrv dirsrv 517M Jul  5 12:58 /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db
  2. 변경 로그 크기를 단축한 후 매개변수를 재설정할 수 있도록 하려면 해당 매개변수의 현재 값을 표시하고 기록해 둡니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication get-changelog --suffix "dc=example,dc=com"
    dn: cn=changelog,cn=userroot,cn=ldbm database,cn=plugins,cn=config
    cn: changelog
    nsslapd-changelogmaxage: 4w
    nsslapd-changelogtrim-interval: 300

    출력에 특정 속성이 표시되지 않으면 Directory Server에서 기본값을 사용합니다.

  3. 임시로 trimming 관련 매개변수를 줄입니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "300s" --max-entries 500 --trim-interval 60
    중요

    성능상의 이유로 너무 짧은 간격 설정을 영구적으로 사용하지 마십시오.

  4. --trim-interval 매개변수에 설정된 시간이 만료될 때까지 기다립니다.
  5. 디스크 공간을 복구하려면 changelog를 압축하십시오.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend compact-db --only-changelog
  6. 일시적으로 감소하기 전에 보유 값으로 changelog 매개변수를 재설정하십시오.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --suffix "dc=example,dc=com" --max-age "4w" --trim-interval 300

검증

  • 변경 로그 크기를 표시합니다.

    # ls -lh /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db
    -rw-------. 1 dirsrv dirsrv 12M Jul  5 12:58 /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db

14장. 복제 변경 로그 암호화

복제 변경 로그를 암호화하여 인스턴스의 보안을 높입니다. 공격자가 서버의 파일 시스템에 액세스할 수 있는 경우

변경 로그 암호화는 서버의 TLS 암호화 키와 동일한 generated을 사용하여 키를 잠금 해제합니다. 서버를 시작할 때 CloudEvent를 수동으로 입력하거나 CloudEvent 파일을 사용해야 합니다.

Directory Server는 임의로 생성된 대칭 암호화 키를 사용하여 변경 로그를 암호화하고 암호 해독합니다. 서버는 구성된 각 암호에 대해 별도의 키를 사용합니다. 이러한 키는 서버의 TLS 인증서에서 공개 키를 사용하여 래핑되며 결과의 래핑 키는 서버의 구성 파일에 저장됩니다. 특성 암호화의 효과적인 장점은 래핑에 사용되는 서버의 TLS 키의 기능과 동일합니다. 서버의 개인 키와 CloudEvent에 액세스하지 않으면 래핑된 복사본에서 대칭 키를 복구할 수 없습니다.

14.1. 명령줄을 사용하여 변경 로그 암호화

복제 토폴로지의 보안을 강화하기 위해 공급자 및 허브의 변경 로그를 암호화하십시오. 다음 절차에서는 dc=example,dc=com 접미사에 대해 변경 로그 암호화를 활성화하는 방법을 설명합니다.

사전 요구 사항

  • 서버에는 TLS 암호화가 활성화되어 있습니다.
  • 호스트는 복제 토폴로지의 공급업체 또는 허브입니다.

절차

  1. 예를 들어 변경 로그를 /tmp/changelog.ldif 파일로 내보냅니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication export-changelog to-ldif -o /tmp/changelog.ldif -r "dc=example,dc=com"
  2. dc=example,dc=com 접미사의 변경 로그 암호화를 활성화합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication --suffix "dc=example,dc=com" --encrypt
  3. /tmp/changelog.ldif 파일에서 changelog를 가져옵니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication import-changelog from-ldif -r "dc=example,dc=com" /tmp/changelog.ldif
  4. 인스턴스를 다시 시작하십시오.

    # dsctl instance_name restart

검증

  1. 항목 업데이트와 같은 LDAP 디렉토리를 변경합니다.
  2. 인스턴스를 중지합니다.

    # dsctl instance_name stop
  3. 접미사와 해당 데이터베이스를 나열합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)

    변경 로그 암호화를 활성화한 데이터베이스의 이름을 기록해 둡니다.

  4. 다음 명령을 입력하여 변경 로그의 일부를 표시합니다.

    # dbscan -f /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db | tail -50

    변경 로그가 암호화된 경우 암호화된 데이터만 볼 수 있습니다.

  5. 인스턴스를 시작합니다.

    # dsctl instance_name start

16장. 명령줄을 사용하여 복제 토폴로지 모니터링

공급업체, 소비자 및 허브 간 디렉터리 데이터 복제 상태를 모니터링하려면 복제 진행률, 복제본 ID, 변경 수 및 기타 매개변수에 대한 정보를 제공하는 복제 토폴로지 보고서를 사용할 수 있습니다. 보고서를 더 빠르게 생성하고 더 읽기 쉽게 하려면 고유한 자격 증명 및 별칭을 구성할 수 있습니다.

16.1. 명령줄을 사용하여 복제 토폴로지 보고서 표시

복제 토폴로지의 각 연결의 복제 상태에 대한 전체 정보를 보려면 복제 토폴로지 보고서를 표시할 수 있습니다. 이렇게 하려면 dsconf 복제 모니터 명령을 사용합니다.

사전 요구 사항

  • 호스트는 복제 토폴로지의 멤버입니다.
  • 소비자를 초기화했습니다.

절차

  • 복제 토폴로지 보고서를 보려면 다음을 입력합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication monitor

    dsconf 유틸리티는 토폴로지의 각 인스턴스에 대한 인증 자격 증명을 요청합니다.

    Enter password for cn=Directory Manager on ldap://supplier.example.com: password
    Enter a bind DN for consumer.example.com:389: cn=Directory Manager
    Enter a password for cn=Directory Manager on consumer.example.com:389: password
    
    Supplier: server.example.com:389
    --------------------------------
    Replica Root: dc=example,dc=com
    Replica ID: 1
    Replica Status: Online
    Max CSN: 5e3acb77001d00010000
    
    Status For Agreement: "example-agreement" (consumer.example.com:1389)
    Replica Enabled: on
    Update In Progress: FALSE
    Last Update Start: 20211209122116Z
    Last Update End: 20211209122116Z
    Number Of Changes Sent: 1:21/0
    Number Of Changes Skipped: None
    Last Update Status: Error (0) Replica acquired successfully: Incremental update succeeded
    Last Init Start: 20211209122111Z
    Last Init End: 20211209122114Z
    Last Init Status: Error (0) Total update succeeded
    Reap Active: 0
    Replication Status: In Synchronization
    Replication Lag Time: 00:00:00
    
    Supplier: consumer.example.com:1389
    -----------------------------------
    Replica Root: dc=example,dc=com
    Replica ID: 65535
    Replica Status: Online
    Max CSN: 00000000000000000000

16.2. .dsrc 파일에서 복제 모니터링을 위한 인증 정보 설정

기본적으로 dsconf 복제 모니터 명령은 원격 인스턴스에 인증할 때 DN과 암호를 바인딩하도록 요청합니다. 향후 보고서를 더 빠르고 쉽게 생성하려면 사용자의 ~/.dsrc 파일의 토폴로지에 있는 각 서버에 대해 바인딩 DN 및 암호(선택 사항)를 설정할 수 있습니다.

사전 요구 사항

  • 호스트는 복제 토폴로지의 멤버입니다.
  • 소비자를 초기화했습니다.

절차

  1. 선택사항: ~/.dsrc 파일을 생성합니다.
  2. ~/.dsrc 파일에서 바인딩 DNs 및 암호를 설정합니다. 예를 들면 다음과 같습니다.

    [repl-monitor-connections]
    connection1 = server1.example.com:389:cn=Directory Manager:*
    connection2 = server2.example.com:389:cn=Directory Manager:[~/pwd.txt]
    connection3 = hub1.example.com:389:cn=Directory Manager:S3cret

    이 예에서는 connection1을 사용하여 connection3을 각 항목의 키로 사용합니다. 그러나 고유한 키를 사용할 수 있습니다.

    dsconf 복제 모니터 명령을 실행하면 dsconf 유틸리티가 인스턴스의 복제 계약에 구성된 모든 서버에 연결됩니다. 유틸리티가 ~/.dsrc 에서 호스트 이름을 찾으면 정의된 자격 증명을 사용하여 원격 서버에 인증합니다. 위의 예에서 dsconf 는 서버에 연결할 때 다음과 같은 인증 정보를 사용합니다.

    호스트 이름DN 바인딩암호 설정 방법

    server1.example.com

    cn=Directory Manager

    암호를 요청

    server2.example.com

    cn=Directory Manager

    ~/pwd.txt에서 암호를 읽습니다.

    hub1.example.com

    cn=Directory Manager

    S3cret

검증

16.3. 복제 토폴로지 모니터링 출력에서 별칭 사용

보고서를 더 읽기 쉽게 하려면 보고서 출력에 표시되는 고유한 별칭을 설정할 수 있습니다.To make the report more readable, you can set your own aliases that will be displayed in the report output. 기본적으로 복제 모니터링 보고서에는 원격 서버의 호스트 이름이 포함됩니다.

사전 요구 사항

  • 호스트는 복제 토폴로지의 멤버입니다.
  • 소비자를 초기화했습니다.

절차

보고서에 별칭을 표시하려면 다음 방법 중 하나를 사용합니다.

  • ~/.dsrc 파일에 별칭을 정의합니다.

    [repl-monitor-aliases]
    M1 = server1.example.com:389
    M2 = server2.example.com:389
  • -a alias=host_name:port 매개변수를 dsconf 복제 모니터 명령에 전달하여 별칭을 정의합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication monitor -a M1=server1.example.com:389 M2=server2.example.com:389

두 경우 모두 dsconf replication monitor 명령은 출력에 별칭을 표시합니다.

...
Supplier: M1 (server1.example.com:389)
--------------------------------
Replica Root: dc=example,dc=com

...
Supplier: M2 (server2.example.com:389)
--------------------------------
Replica Root: dc=example,dc=com

17장. 웹 콘솔을 사용하여 복제 토폴로지 모니터링

공급업체, 소비자 및 허브 간 디렉터리 데이터 복제 상태를 모니터링하려면 복제 진행률, 복제본 ID, 변경 수 및 기타 매개변수에 대한 정보를 제공하는 복제 토폴로지 보고서를 사용할 수 있습니다. 보고서를 더 빠르게 생성하고 더 읽기 쉽게 하려면 고유한 자격 증명 및 별칭을 구성할 수 있습니다.

17.1. 웹 콘솔을 사용하여 복제 토폴로지 보고서 표시

복제 토폴로지의 각 연결의 복제 상태에 대한 전체 정보를 보려면 복제 토폴로지 보고서를 표시할 수 있습니다.

사전 요구 사항

  • 호스트는 복제 토폴로지의 멤버입니다.
  • 소비자를 초기화했습니다.
  • 웹 콘솔에 로그인되어 있습니다.

절차

  1. MonitoringReplication (복제) 로 이동합니다. 복제 모니터링 페이지가 열립니다.
  2. Report 생성을 클릭합니다.
  3. 원격 인스턴스에 로그인할 암호를 입력하고 Confirm Credentials Input (자격 증명 입력 확인)을 클릭합니다. Directory Server는 기존 복제 계약의 바인딩 DN 값을 사용합니다.

    복제 토폴로지 보고서가 Report Result 탭에서 생성됩니다.

    참고

    다른 복제 토폴로지 보고서를 생성하려면 Prepare Report 탭으로 이동합니다.

17.2. 웹 콘솔을 사용하여 복제 모니터링에 대한 인증 정보 설정

복제 토폴로지 보고서를 더 빠르고 쉽게 생성하려면 인증을 위해 토폴로지의 각 서버에 대해 자체 바인딩 DN 및 선택적으로 암호를 설정할 수 있습니다. 이 경우 복제 토폴로지 보고서를 생성할 때마다 복제 자격 증명을 확인할 필요가 없습니다. 기본적으로 Directory Server는 기존 복제 계약에서 이러한 자격 증명을 가져옵니다.

사전 요구 사항

  • 호스트는 복제 토폴로지의 멤버입니다.
  • 소비자를 초기화했습니다.
  • 웹 콘솔에 로그인되어 있습니다.

절차

  1. MonitoringReplication (복제) 로 이동합니다. 복제 모니터링 페이지가 열립니다.
  2. 자격 증명 추가를 클릭합니다.
  3. 원격 인스턴스에 대한 인증에 사용할 복제 로그인 자격 증명을 입력합니다.

    • 호스트 이름. 서버에서 인증할 원격 인스턴스 호스트 이름입니다.
    • 포트. 원격 인스턴스 포트입니다.
    • DN 바인딩. 원격 인스턴스에 인증에 사용된 DN을 바인딩합니다.
    • 암호. 인증에 사용되는 암호입니다.
    • 대화형 입력. 선택된 경우 Directory Server는 복제 토폴로지 보고서를 생성할 때마다 암호를 요청합니다.
  4. 저장을 클릭합니다.

검증

복제 토폴로지 보고서를 생성하여 보고서가 자격 증명을 요청하는 경우 확인합니다. 자세한 내용은 웹 콘솔을 사용하여 복제 토폴로지 보고서 표시를 참조하십시오.

17.3. 웹 콘솔을 사용하여 복제 이름 별칭 구성

보고서를 더 읽기 쉽게 하려면 보고서 출력에 표시되는 고유한 별칭을 설정할 수 있습니다.To make the report more readable, you can set your own aliases that will be displayed in the report output. 기본적으로 복제 모니터링 보고서에는 서버의 호스트 이름이 포함됩니다.

사전 요구 사항

  • 호스트는 복제 토폴로지의 멤버입니다.
  • 소비자를 초기화했습니다.
  • 웹 콘솔에 로그인되어 있습니다.

절차

  1. MonitoringReplication (복제) 로 이동합니다. 복제 모니터링 페이지가 열립니다.
  2. 별칭 추가를 클릭합니다.
  3. 별칭 세부 정보를 입력합니다.

    • 별칭. 복제 토폴로지 보고서에 표시되는 별칭입니다.
    • 호스트 이름. 인스턴스 호스트 이름.
    • 포트. 인스턴스 포트입니다.
  4. 저장을 클릭합니다.

검증

18장. 두 개의 Directory Server 인스턴스 비교

ds-replcheck 유틸리티를 사용하여 두 개의 Directory Server 인스턴스가 동기화되었는지 확인할 수 있습니다. 온라인 또는 두 개의 LDIF 형식의 파일을 오프라인 모드에서 두 서버를 비교할 수 있습니다.

18.1. 두 Directory Server 인스턴스의 복제 상태 표시

ds-replcheck 유틸리티를 사용하여 두 Directory Server 인스턴스의 복제 상태를 표시할 수 있습니다.

절차

  • 다음 명령을 사용하여 두 Directory Server 인스턴스의 복제 상태를 표시합니다.

    # ds-replcheck state -D "cn=Directory Manager" -W -m ldap://server1.example.com:389 -r ldap://server2.example.com:389 -b "dc=example,dc=com"
    Replication State: Replica is behind Supplier by: 264 seconds

18.2. 두 개의 온라인 Directory Server 인스턴스 비교

두 개의 온라인 서버를 비교하면 일반적으로 데이터베이스 내용이 부하가 많은 경우 달라집니다. 이 문제를 해결하기 위해 ds-replcheck-l time_in_seconds 매개변수를 ds-replcheck 에 전달하여 지연 시간 값을 사용합니다. 기본적으로 이 값은 300 초(5분)로 설정됩니다. 유틸리티가 지연 시간 내에 있는 불일치를 감지하면 유틸리티에서 이를 보고하지 않습니다. 이는 false positive를 줄이는 데 도움이 됩니다.

기본적으로 복제 계약의 특정 속성을 제외한 경우 ds-replcheck 는 이러한 속성을 다르게 보고합니다. 이러한 속성을 무시하려면 -i attribute_list 매개변수를 유틸리티에 전달합니다.

절차

  • provider.example.com 및 replica.example .comdc=example,dc=com 접미사를 온라인으로 비교하려면 다음을 입력하십시오.

    # ds-replcheck online -D "cn=Directory Manager" -W -m ldap://supplier.example.com:389 -r ldap://replica.example.com:389 -b "dc=example,dc=com"

    -m-r 매개변수는 공급 업체 및 복제본에 대한 URL을 설정합니다.

18.3. 오프라인 두 디렉터리 서버 인스턴스 비교

두 개의 오프라인 Directory Server 인스턴스를 비교하려면 두 호스트의 데이터베이스를 내보내고 ds-replcheck 를 사용하여 비교합니다.

기본적으로 복제 계약의 특정 속성을 제외한 경우 ds-replcheck 는 이러한 속성을 다르게 보고합니다. 이러한 속성을 무시하려면 -i attribute_list 매개변수를 유틸리티에 전달합니다.

절차

  1. 공급자에서 접미사와 해당 데이터베이스를 나열합니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend suffix list
    dc=example,dc=com (userroot)
    o=test (test_database)

    비교하려는 데이터베이스의 이름 또는 접미사를 확인합니다.

  2. 인스턴스가 실행되는 동안 데이터베이스를 내보냅니다.

    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend export -r -l /var/lib/dirsrv/slapd-instance_name/ldif/export-supplier.ldif userRoot

    r 매개변수를 사용하면 내보내기에 복제 상태 정보가 포함됩니다. -l 은 내보내기 파일의 경로를 설정합니다. dirsrv 사용자는 해당 파일을 만들려면 대상 디렉터리에 쓰기 권한이 있어야 합니다.

  3. 공급자와 비교할 복제본에 대한 이전 단계를 반복합니다.
  4. 내보낸 파일을 한 호스트에서 다른 호스트로 복사합니다. 예를 들어 replica.example.com 에서 provider.example.com으로 LDIF 파일을 복사하려면 복제본에 다음 명령을 입력합니다 .

    # scp /var/lib/dirsrv/slapd-instance_name/ldif/export-replica.ldif supplier.example.com:/var/lib/dirsrv/slapd-instance_name/ldif/

    이 명령을 사용하려면 SSH를 사용하여 공급업체에 액세스할 수 있어야 합니다.

  5. 공급자의 경우 두 개의 LDIF 파일을 비교합니다.

    # ds-replcheck offline -m /var/lib/dirsrv/slapd-instance_name/ldif/export-supplier.ldif -r /var/lib/dirsrv/slapd-instance_name/ldif/export-replica.ldif -rid 1 -b "dc=example,dc=com"

    -m-r 매개변수는 공급 업체 및 복제본에 대한 경로를 설정하고 -rid 는 공급 업체의 복제 식별자를 설정합니다.

18.4. ds-replcheck 출력에 대한 설명

ds-replcheck 유틸리티 출력에는 다음 섹션이 포함되어 있습니다.

데이터베이스 RUV

최소 및 최대 시퀀스 번호(CSN)를 포함하여 데이터베이스의 RUV( Replication Update Vector)를 나열합니다. 예를 들면 다음과 같습니다.

  Supplier RUV:
    {replica 1 ldap://supplier.example.com:389} 58e53b92000200010000 58e6ab46000000010000
    {replica 2 ldap://replica.example.com:389} 58e53baa000000020000 58e69d7e000000020000
    {replicageneration} 58e53b7a000000010000

  Replica RUV:
    {replica 1 ldap://supplier.example.com:389} 58e53ba1000000010000 58e6ab46000000010000
    {replica 2 ldap://replica.example.com:389} 58e53baa000000020000 58e7e8a3000000020000
    {replicageneration} 58e53b7a000000010000
항목 수

tombstone 항목을 포함하여 두 서버의 총 항목 수를 표시합니다. 예를 들면 다음과 같습니다.

  Supplier:  12
  Replica: 10
Tombstones

각 복제본에 있는 tombstone 항목의 수를 표시합니다. 이러한 항목은 총 항목 수에 추가됩니다. 예를 들면 다음과 같습니다.

  Supplier:  4
  Replica: 2
충돌 항목

각 충돌 항목의 고유 이름(DN), 충돌 유형 및 생성된 날짜를 나열합니다. 예를 들면 다음과 같습니다.

  Supplier Conflict Entries: 1

   - nsuniqueid=48177227-2ab611e7-afcb801a-ecef6d49+uid=user1,dc=example,dc=com
      - Conflict:   namingConflict (add) uid=user1,dc=example,dc=com
      - Glue entry: no
      - Created:    Wed Apr 26 20:27:40 2021


  Replica Conflict Entries: 1

   - nsuniqueid=48177227-2ab611e7-afcb801a-ecef6d49+uid=user1,dc=example,dc=com
      - Conflict:   namingConflict (add) uid=user1,dc=example,dc=com
      - Glue entry: no
      - Created:    Wed Apr 26 20:27:40 2021
누락된 항목

누락된 각 항목의 DN과 항목이 있는 다른 서버의 생성 날짜를 나열합니다. 예를 들면 다음과 같습니다.

  Entries missing on Supplier:
   - uid=user2,dc=example,dc=com (Created on Replica at: Wed Apr 12 14:43:24 2021)
   - uid=user3,dc=example,dc=com (Created on Replica at: Wed Apr 12 14:43:24 2021)

  Entries missing on Replica:
   - uid=user4,dc=example,dc=com (Created on Supplier at: Wed Apr 12 14:43:24 2021)
entry Inconsistencies

다른 서버의 속성을 포함하는 항목의 DN을 나열합니다. 상태 정보를 사용할 수 있는 경우 해당 정보도 표시됩니다. 속성에 대한 상태 정보를 사용할 수 없는 경우 원본 값으로 나열됩니다. 즉, 복제가 처음 초기화된 이후 값이 업데이트되지 않았습니다. 예를 들면 다음과 같습니다.

  cn=group1,dc=example,dc=com
  ---------------------------
  Replica missing attribute "objectclass":

   - Supplier's State Info: objectClass;vucsn-58e53baa000000020000: top
   - Date: Wed Apr  5 14:47:06 2021

   - Supplier's State Info: objectClass;vucsn-58e53baa000000020000: groupofuniquenames
   - Date: Wed Apr  5 14:47:06 2021

19장. 일반적인 복제 문제 해결

다중 제공 복제에서는 결국 일관성 복제 모델을 사용합니다. 즉, 다른 서버에서 동일한 항목을 변경할 수 있습니다. 이러한 두 서버 간에 복제가 발생하면 Directory Server에서 충돌하는 변경 사항을 해결해야 합니다. 대부분의 경우 각 서버의 변경과 관련된 타임 스탬프에 따라 해상도가 자동으로 수행됩니다. 가장 최근의 변경 사항은 priority입니다. 그러나 문제 해결에 도달하기 위해 수동으로 개입해야 하는 경우도 있습니다.

19.1. 이름 충돌 식별 및 해결

사용자가 복제 중에 다른 서버에서 동일한 고유 이름(DN)을 사용하여 두 개의 항목을 생성하면 자동 충돌 해결 프로시저가 DN의 항목 고유 식별자를 포함하여 생성된 마지막 항목을 변경합니다. 모든 디렉터리 항목에는 nsuniqueid operational 속성에 저장된 고유 식별자가 포함됩니다. 이름 지정 충돌이 발생하면 복제 절차에서는 이 고유 ID를 고유하지 않은 DN에 추가합니다.

예를 들어 uid=user_name,ou=People,dc=example,dc=com 항목이 두 개의 다른 서버에서 생성된 경우 복제는 생성된 마지막 항목의 DN에 고유 ID를 추가합니다. 즉, 다음 항목이 있습니다.

  • uid=user_name,ou=People,dc=example,dc=com
  • asuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com

절차

  1. 충돌 항목을 나열합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict list dc=example,dc=com
    dn: nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=people,dc=example,dc=com
    cn: user_name
    displayName: user
    gidNumber: 99998
    homeDirectory: /var/empty
    legalName: user name
    loginShell: /bin/false
    nsds5replconflict: namingConflict (ADD) uid=user_name,ou=people,dc=example,dc=com
    objectClass: top
    objectClass: nsPerson
    objectClass: nsAccount
    objectClass: nsOrgPerson
    objectClass: posixAccount
    objectClass: ldapsubentry
    uid: user_name
    uidNumber: 99998

    이 경우 Directory Server가 첫 번째 항목을 복제하기 전에 두 개의 다른 서버에서 사용자가 수동으로 생성되었습니다.

  2. 충돌 항목이 있는 경우 진행 방법을 결정합니다.

    • 유효한 항목(uid=user_name,ou=People,dc=example,dc=com)만 유지하고 conflict 항목을 삭제하려면 다음을 입력합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict delete nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com
    • 충돌 항목 (nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com)만 유지하려면 다음을 입력합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict swap nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com
    • 두 항목을 유지하려면 새로운 상대적 고유 이름(RDN)을 지정하여 충돌 항목의 이름을 변경합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict convert --new-rdn=uid=user_name_NEW nsuniqueid=a7f1758b-512211ec-b115e2e9-7dc2d46b+uid=user_name,ou=People,dc=example,dc=com

      이 명령은 충돌 항목의 이름을 uid=user_name_NEW,ou=People,dc=example,dc=com으로 변경합니다.

19.2. 고립 입력 충돌 식별 및 해결

Directory Server에서 삭제 작업을 복제하고 소비자 서버에서 삭제할 항목에 하위 항목이 있음을 발견하면 충돌 해결 프로시저에서 디렉터리에 고립된 항목이 없도록 하기 위해 이전 항목을 만듭니다.

마찬가지로 Directory Server가 추가 작업을 복제하고 소비자 서버가 상위 항목을 찾을 수 없는 경우 충돌 해결 프로시저에서 상위 항목을 생성합니다.

Gluue 항목은 접착 상태 및 확장 가능한 오브젝트를 포함하는 임시 항목입니다. Glud 항목은 다음과 같은 여러 가지 방법으로 만들 수 있습니다.

  • 충돌 해결 절차에서 일치하는 고유 식별자가 있는 삭제된 항목을 발견하면 obue 항목은 삭제된 항목과 같지만 추가된 F sds5ReplConflict 속성이 있습니다.

    이러한 경우 접착제 오브젝트 클래스 및 nsds5ReplConflict 속성을 제거하여 항목을 일반 항목으로 유지하거나luue 항목 및 해당 하위 항목을 삭제합니다.

  • 서버는 obue 및 extensibleObject 오브젝트 클래스를 사용하여 항목을 생성합니다.

절차

  1. 고립 항목 충돌을 나열합니다.

    # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict list-glue suffix
    dn: ou=parent,dc=example,dc=com
    objectClass: top
    objectClass: organizationalunit
    objectClass: glue
    objectClass: extensibleobject
    ou: parent
  2. 고립된 항목 충돌이 존재하는 경우 다음을 수행하는 방법을 결정합니다.

    • 접착제 항목 및 해당 하위 항목을 삭제하려면 다음을 입력합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict delete-glue "ou=parent,dc=example,dc=com"
      dn: ou=parent,dc=example,dc=com
      objectClass: top
      objectClass: organizationalunit
      objectClass: extensibleobject
      ou: parent
    • 접착 항목을 일반 항목으로 변환하려면 다음을 입력합니다.

      # dsconf -D "cn=Directory Manager" ldap://server.example.com repl-conflict convert-glue "ou=parent,dc=example,dc=com"

19.3. 더 이상 사용되지 않거나 누락된 공급자에 대한 오류 식별 및 해결

Directory Server는 복제 토폴로지에 대한 정보를 RUV(복제 업데이트 벡터)라는 메타데이터 세트에 다른 복제본에 보내는 모든 공급업체와 같은 정보를 저장합니다. RUV에는 ID 및 URL, 로컬 서버의 마지막 변경 상태 번호(CSN) 및 첫 번째 변경의 CSN과 같은 공급 업체에 대한 정보가 포함되어 있습니다. 공급업체와 소비자 모두 RUV 정보를 저장하고 복제 업데이트를 제어하는 데 사용합니다.

복제 토폴로지에서 공급업체를 제거해도 다른 복제본의 RUV에 대한 정보는 남아 있을 수 있습니다. cleanallruv 작업을 사용하여 토폴로지의 모든 공급업체를 폼 RUV 항목을 제거할 수 있습니다.

사전 요구 사항

  • 복제는 에서 활성화되어 있습니다.

절차

  1. /var/log/dirsrv/slapd-instance_name/errors 로그 파일을 모니터링하고 다음과 유사한 항목을 검색합니다.

    [22/Jan/2021:17:16:01 -0500] NSMMReplicationPlugin - ruv_compare_ruv: RUV [changelog max RUV] does not contain element [{replica 8 ldap://server2.example.com:389} 4aac3e59000000080000 4c6f2a02000000080000] which is present in RUV [database RUV]
    ...
    [22/Jan/2021:17:16:01 -0500] NSMMReplicationPlugin - replica_check_for_data_reload: Warning: for replica dc=example,dc=com there were some differences between the changelog max RUV and the database RUV. If there are obsolete elements in the database RUV, you should remove them using the CLEANALLRUV task. If they are not obsolete, you should check their status to see why there are no changes from those servers in the changelog.

    이 경우 복제본 ID 8 으로 인해 이 오류가 발생합니다.

  2. 유효한 것과 유효하지 않은 RUV 레코드 및 복제본 ID를 모두 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://server1.example.com replication get-ruv --suffix "dc=example,dc=com"
    RUV:        {replica 1 ldap://server1.example.com} 61a4d8f8000100010000 61a4f5b8000000010000
    
    Replica ID: 1
    LDAP URL:   ldap://server1.example.com
    Min CSN:    2021-11-29 13:43:20 1 0 (61a4d8f8000100010000)
    Max CSN:    2021-11-29 15:46:00 (61a4f5b8000000010000)
    RUV:        {replica 2 ldap://server2.example.com} 61a4d8fb000100020000 61a4f550000000020000
    
    Replica ID: 2
    LDAP URL:   ldap://server2.example.com
    Min CSN:    2021-11-29 13:43:23 1 0 (61a4d8fb000100020000)
    Max CSN:    2021-11-29 15:44:16 (61a4f550000000020000)
     RUV:        {replica 8 ldap://server3.example.com} 61a4d903000100080000 61a4d908000000080000
    
    Replica ID: 8
    LDAP URL:   ldap://server3.example.com
    Min CSN:    2021-11-29 13:43:31 1 0 (61a4d903000100080000)
    Max CSN:    2021-11-29 13:43:36 (61a4d908000000080000)

    반환된 복제본 ID 목록을 기록해 둡니다. 1,2, 8.

  3. 복제본 ID 8 에 대해 정리 작업을 실행합니다.

    # dsconf -D "cn=Directory Manager" ldap://server1.example.com repl-tasks cleanallruv --suffix="dc=example,dc=com" --replica-id=8

    Directory Server는 RUV 정리 작업을 복제합니다. 따라서 하나의 공급 업체에서만 작업을 시작해야합니다.

    복제본 중 하나를 조인할 수 없는 경우, 예를 들어 다운된 경우 --force-cleaning 옵션을 사용하여 RUV를 즉시 정리할 수 있습니다.

검증

  • RUV 레코드 및 복제본 ID를 표시합니다.

    # dsconf -D "cn=Directory Manager" ldap://server1.example.com replication get-ruv --suffix "dc=example,dc=com"
    RUV:        {replica 1 ldap://server1.example.com} 61a4d8f8000100010000 61a4f5b8000000010000
    
    Replica ID: 1
    LDAP URL:   ldap://server1.example.com
    Min CSN:    2021-11-29 14:02:10 1 0 (61a4d8f8000100010000)
    Max CSN:    2021-11-29 16:00:00 (61a4f5b8000000010000)
    RUV:        {replica 2 ldap://server2.example.com} 61a4d8fb000100020000 61a4f550000000020000
    
    Replica ID: 2
    LDAP URL:   ldap://server2.example.com
    Min CSN:    2021-11-29 14:02:10 1 0 (61a4d8fb000100020000)
    Max CSN:    2021-11-29 15:58:22 (61a4f550000000020000)

    명령에서 더 이상 복제본 ID 8 의 RUV 항목을 반환하지 않습니다.

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.