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으로 변경합니다.