I. Active Directory 복제의 기본 원리
Active Directory 복제는 한 도메인 컨트롤러(DC)에서 발생한 변경 사항을 동일한 데이터를 저장하는 다른 DC로 자동으로 전송하여 디렉터리 데이터의 일관성을 유지하는 프로세스입니다.
복제의 정의와 모델
Active Directory는 다음과 같은 핵심 모델을 기반으로 복제를 수행합니다:
- 다중 마스터 복제 (Multimaster Replication): 포리스트 내의 모든 DC가 직접 업데이트될 수 있으며, 각 변경 사항은 다른 DC로 복제됩니다.
- 끌어오기 복제 (Pull Replication): 대상 DC가 원본 DC에게 변경 사항을 요청하여 데이터를 가져오는 방식입니다. 원본 DC에서 변경이 발생하면 파트너에게 알림을 보내고, 알림을 받은 대상 DC가 변경 사항을 "끌어옵니다".
- 저장 후 전달 복제 (Store-and-forward Replication): 변경 사항을 수신한 DC는 이를 저장했다가 자신의 다른 복제 파트너에게 전달합니다. 이 방식은 원본 DC가 모든 DC에 직접 변경 사항을 보낼 필요가 없어, 특히 WAN 링크를 효율적으로 사용하게 합니다.
복제 데이터 단위: 디렉터리 파티션
복제는 디렉토리 파티션(Directory Partitions) 또는 명명 컨텍스트(Naming Contexts, NCs)라 불리는 논리적 데이터 단위로 이루어집니다. 주요 파티션 유형은 다음과 같습니다:
- 스키마 파티션: 포리스트의 모든 객체 및 속성 정의를 저장하며, 포리스트의 모든 DC에 복제됩니다. 스키마 파티션은 쓰기 가능하지만, 실제 업데이트는 스키마 마스터 역할 소유자에서만 허용됩니다.
- 구성 파티션: 사이트, 서브넷, 복제 토폴로지 등 포리스트 전체의 구성 정보를 포함하며, 포리스트의 모든 DC에 복제됩니다.
- 도메인 파티션: 특정 도메인의 사용자, 컴퓨터, 그룹 등의 객체를 포함하며, 해당 도메인 내의 모든 DC에만 복제됩니다.
- 응용 프로그램 파티션: Windows Server 2003부터 지원되며, 특정 응용 프로그램 데이터를 저장하고 관리자가 지정한 DC 집합에 복제됩니다.
II. 복제 토폴로지 및 핵심 구성 요소
AD 복제 토폴로지는 복제 경로의 집합을 의미하며, KCC(지식 일관성 검사기)에 의해 자동으로 생성 및 관리됩니다.
KCC (지식 일관성 검사기)
- 역할 및 실행 주기: KCC는 모든 DC에서 실행되는 분산 응용 프로그램으로, 사이트 내/간의 복제 토폴로지를 자동으로 생성하고 유지 관리합니다. 기본적으로15분(900초)마다 실행되어 토폴로지를 검토하고 필요에 따라 수정합니다. DC 시작 후에는 기본적으로 5분(300초) 후에 첫 번째 토폴로지 검사를 실행합니다.
- 사이트 내(Intrasite) 토폴로지 생성: 사이트 내에서는 기본적으로 모든 서버를 연결하는 링 토폴로지(ring topology)를 생성합니다. 서버 수가 7개를 초과하면 복제 지연 시간을 3홉(hop) 이내로 유지하기 위해 추가적인 최적화 연결(shortcut connections)을 생성합니다.
ISTG (사이트 간 토폴로지 생성기)
- 역할 및 ISTG 선정: ISTG는 각 사이트에서 단 하나의 DC가 맡는 역할로, 해당 사이트의 사이트 간(intersite) 복제 연결 객체를 관리합니다. 현재 ISTG가 오프라인이 되거나, Windows 2000 DC만 있던 사이트에 Windows Server 2003 DC가 추가되면 역할이 이전됩니다. Windows Server 2003 이상을 실행하는 DC가 한 대라도 있다면, ISTG 역할은 해당 OS를 실행하는 DC 중 하나가 맡게 됩니다.
사이트, 서브넷, 사이트 링크
- 사이트와 서브넷의 역할: 사이트는 고속 LAN으로 연결된 물리적 위치를, 서브넷은 특정 IP 주소 범위를 나타냅니다. 이 둘을 매핑하여 복제 트래픽을 최적화하고 클라이언트가 가장 가까운 DC를 찾도록 돕습니다.
- 사이트 링크 속성: 사이트 링크는 사이트 간 복제를 제어하는 핵심 요소입니다.
- 사이트 링크 브리징: 여러 사이트 링크를 하나의 경로처럼 취급하여, 직접 연결되지 않은 사이트 간에도 복제가 가능하도록 하는 기능입니다. 이 기능은 기본적으로 활성화되어 있으며, 이를 통해 KCC는 네트워크 장애 시 대체 경로를 자동으로 계산할 수 있습니다. IP 네트워크가 완전히 라우팅되지 않은 경우 이 옵션을 비활성화할 수 있습니다.
브리지헤드 서버
브리지헤드 서버는 ISTG에 의해 지정되며, 사이트 간 복제 트래픽을 주고받는 단일 창구 역할을 합니다. 관리자는 성능이 좋거나 특정 역할을 수행하는 서버를 선호 브리지헤드 서버(Preferred Bridgehead Server)로 지정하여 KCC가 해당 서버를 우선적으로 사용하도록 할 수 있습니다. Windows 2000에서는 파티션/전송별로 단 하나의 브리지헤드 서버만 선택했지만, Windows Server 2003부터는 여러 브리지헤드 서버를 무작위로 선택하여 부하를 분산합니다.
III. 핵심 복제 메커니즘 상세
변경 사항 추적: USN의 종류와 역할
AD는 타임스탬프 대신 USN(Update Sequence Number)을 사용하여 변경 사항을 추적합니다. 각 DC는 highestCommittedUsn이라는 64비트 카운터를 가집니다. USN은 다음과 같이 저장됩니다:
- Local USN: 변경이 발생한 DC의 로컬 USN 값으로, 모든 업데이트(원본/복제) 시 속성의 메타데이터에 기록됩니다.
- uSNChanged: 객체 내 모든 속성 중 가장 높은 Local USN 값으로, 객체 자체의 속성으로 저장됩니다.
- Originating USN: 원본 쓰기에서만 할당된 USN 값으로, 속성 값과 함께 다른 DC로 복제됩니다.
복제 필터링: 업투데이트니스 벡터와 하이워터마크
- 하이워터마크 (High-Watermark): 대상 DC가 특정 원본 DC로부터 받은 마지막 업데이트의 USN을 기록한 값입니다. 이를 통해 원본 DC는 대상 DC가 이미 받은 객체는 다시 고려하지 않도록 합니다.
- 업투데이트니스 벡터 (Up-to-Dateness Vector): 대상 DC가 모든 DC로부터 받은 최신 '원본' 업데이트를 추적하는 테이블입니다. 이를 통해 다른 경로로 이미 변경 사항을 받은 경우, 중복해서 데이터를 받는 것을 방지합니다.
*하이워터마크와 업투데이트니스 벡터는 AD 개체의 표준 속성이 아니므로 ADSI 편집기로는 직접 값을 보거나 비교할 수 없습니다. 이 값들은 각 도메인 컨트롤러(DC)가 내부적으로 관리하는 복제 엔진의 상태 데이터(메타데이터)이기 때문입니다.
확인 방법: repadmin.exe
- 하이워터마크 확인 (/showrepl) repadmin /showrepl [DC이름] 명령을 실행하면, 각 복제 파트너에 대해 마지막으로 받은 USN(하이워터마크) 값을 확인할 수 있습니다.
- 업투데이트니스 벡터 확인 (/showutdvec) repadmin /showutdvec [DC이름] [파티션DN] 명령을 실행하면, 해당 DC가 특정 파티션에 대해 알고 있는 포리스트 내 모든 DC의 최신 원본 USN 테이블(업투데이트니스 벡터)을 직접 볼 수 있습니다.
충돌 해결: 스탬프와 해결 정책
다중 마스터 환경에서 충돌이 발생하면, 각 업데이트에 기록된 스탬프(stamp)를 비교하여 해결합니다. 스탬프는 다음 순서로 우선순위를 가집니다:
- 버전(Version): 원본 쓰기가 발생할 때마다 1씩 증가하는 번호로, 가장 중요한 결정 요소입니다.
- 원본 시간(Originating Time): 원본 쓰기가 발생한 시간입니다.
- 원본 DC(Originating DC): 원본 쓰기를 수행한 DC의 고유 식별자(GUID)입니다.
객체 삭제: 툼스톤과 가비지 수집
객체가 삭제되면 즉시 제거되지 않고 툼스톤(Tombstone)이라는 삭제 표시자로 변경됩니다. 툼스톤은 isDeleted 속성이 TRUE로 설정되며, 숨겨진 Deleted Objects 컨테이너로 이동됩니다. 툼스톤은 설정된 수명(기본 60일 또는 180일) 동안 유지되다가
가비지 수집(garbage collection) 프로세스에 의해 영구적으로 제거됩니다.
특별 복제: 긴급 복제와 암호 변경
- 긴급 복제: 계정 잠김, 암호 정책 변경 등 중요한 보안 이벤트는 일반적인 복제 지연이나 일정을 무시하고 즉시 파트너에게 알림을 보내 복제를 트리거합니다.
- 암호 변경: 암호 변경은 즉시 도메인의 PDC 에뮬레이터로 전달되어 인증 지연 문제를 최소화합니다. 다른 DC에서 이전 암호로 인증 실패 시, PDC 에뮬레이터에게 한 번 더 확인하여 최신 암호를 적용합니다.
연결된 값 복제 (Linked-Value Replication)
Windows Server 2003 포리스트 기능 수준 이상에서 지원되는 기능으로, 그룹의
member 속성과 같이 다중 값을 갖는 연결된 속성이 변경될 때 전체 목록이 아닌 변경된 값 하나만 복제하는 기술입니다. 이는 대규모 그룹의 멤버십 변경 시 복제 트래픽을 획기적으로 줄여줍니다.
IV. 복제 전송 및 네트워크
전송 프로토콜: RPC vs SMTP
- RPC over IP: 사이트 내/간 복제 모두에 사용되는 기본 프로토콜입니다.
- SMTP over IP: RPC 사용이 불가할 때 사이트 간 복제에 사용되는 비동기식 프로토콜입니다. 단, 쓰기 가능한 도메인 파티션은 복제할 수 없고, 인증서 기반 구조(CA)가 필요합니다.
데이터 압축 및 포트 정보
- 데이터 압축: 사이트 간 복제 데이터는 대역폭 절약을 위해 압축됩니다. Windows Server 2003부터는 CPU 부담을 크게 줄인 새로운 압축 알고리즘이 사용됩니다.
- 필요 포트: 복제를 위해 RPC(TCP 135), LDAP(TCP/UDP 389), Global Catalog(TCP 3268), Kerberos(TCP/UDP 88), DNS(TCP/UDP 53) 등 다양한 포트가 필요합니다.
이름 확인 대체 메커니즘
Windows Server 2003 SP1 이상에서는 DC가 복제 파트너의 GUID 기반 DNS 이름을 확인하는 데 실패할 경우, 대체 수단으로 파트너의 NetBIOS 이름을 사용하여 복제를 시도합니다. 이 메커니즘이 작동하면 이벤트 ID 2088이 기록됩니다.
V. 문제 해결 상세 가이드
주요 진단 도구 상세
- Repadmin: 복제 상태, 파트너, 토폴로지를 확인하고 복제 및 KCC를 강제 실행하는 데 사용하는 필수 명령줄 도구입니다.
/showreps는 복제 상태를, /kcc는 KCC 실행을, /removelingeringobjects는 잔류 객체 제거를 수행합니다.
- DCDiag: DC의 전반적인 상태를 분석하고 문제를 보고하는 종합 진단 도구입니다. 특히 dcdiag /test:dns 명령은 복제의 핵심 의존성인 DNS 문제를 진단하는 데 매우 유용합니다.
주요 문제 유형 및 해결 방안
- 잔류 객체 (Lingering Objects): DC가 툼스톤 수명보다 오래 오프라인 상태일 때 발생하며, 이미 삭제된 객체가 해당 DC에 남아있는 문제입니다.
repadmin /removelingeringobjects 명령으로 제거할 수 있습니다.
- 인증 오류: netdom resetpwd를 사용하여 암호를 재설정할 수 있습니다.
- 이벤트 ID 1311 분석: 이 이벤트는 KCC가 완전한 복제 토폴로지를 구성할 수 없음을 나타냅니다. 주요 원인으로는
특정 사이트가 사이트 링크에 포함되지 않았거나, 사이트 링크들이 서로 연결되지 않아 네트워크가 분리된 경우 등이 있습니다.
'IT' 카테고리의 다른 글
Windows Server 백업의 작동 방식 (0) | 2025.07.18 |
---|---|
Windows Server 백업 (Windows Server Backup) 주요 특징 (0) | 2025.07.18 |
Active Directory 복제 (2) | 2025.07.11 |
Active Directory 복제 및 토폴로지 (7) | 2025.07.11 |
Active Directory 이벤트 로그 수집 (0) | 2024.06.28 |