AD 서버의 업그레이드 또는 교체방법

개요

최근, SQL Server 2016 Enterprise로 Always On 고가용성 구성을 이용하는 고객의 WAS 서버가 랜섬웨어에 피해를 입는 사고가 발생했다. 문제는, WAS서버에 SQL Server Always On을 위한 AD 구성이 있어 함부로 서버를 교체할 수 없는 상황이었다는 것이었다. 이에 지인의 도움으로 이 문제를 잘 해결했기에 정리해서 남겨 보고자 한다.

업그레이드 방법 또는 교체 방법

통상 AD/DS는 2대로 구성을 하게 된다. 하지만, 지인의 말을 빌리자면, 안전한 업그레이드와 교체를 위해서는 +1 또는 +2로 추가 AD/DS(GC)를 구성해서 FSMO Role(역할)을 임시 서버로 전환 해서 하는 방법을 권장한다고 팁을 주었다. 이러한 이유는 AD/DS가 이중화 된 상태에서 1대씩 곧바로 작업하게 되는 경우 남은 1대의 장애시 연계된 시스템의 전체 장애로 이어질 수 있기 때문이라고 추측된다. 이에 추가 서버를 붙여서 작업하는 것을 권장한다.

FSMO(Flexible Single Master Operation)?

AD/DS는 여러 GC를 통해 “멀티 마스터 복제"를 구성할 수 있다. 하지만, 이를 관장하는 작업 마스터(Operation Master)가 있다. 이것은 GC 중 반드시 단 1대만 존재해야만 한다. 여기에는 5개의 마스터가 있다.

  • 스키마 마스터(Schema Master) AD의 모든 개체들의 속성과 클래스를 정의하는 데이터메이스이며, 업데이트 제어와 다른 DC에 복제하는 역할이다.
  • 도메인 명명 마스터(Domain Naming Master) Forest에 새로운 도메인을 추가하거나 제거하는 역할이다.
  • 인프라 마스터(Infrastructure Master) GC에서 도메인 간 참조 및 개체 업데이트를 한다.
  • 주 도메인 컨트롤러(PDC, Primary Domain Controller) FSMO 역할의 사용과 AD 기능을 하며, 다른 DC와의 시간 동기화를 위한 원본 역할 등을 한다.
  • 상대 ID 마스터(RID 풀 관리자, Relative ID Master) 모든 객체의 SID/RID에 대한 고유값을 관리 및 보장을 한다.

AD/DS 서버 추가 및 FSMO Role 확인하기

여기에서는 FSMO Role을 확인하는 것으로 사전에 AD/DS 기능을 설치하고 GC로 승격을 했다고 가정을한다.

명령 프롬포트 창을 열어 다음의 명령어를 입력한다.

C:\Users\administrator.knlab>netdom query fsmo
스키마 마스터               DC01.knlab.io
도메인 명명 마스터        DC01.knlab.io
PDC                         DC01.knlab.io
RID 풀 관리자            DC01.knlab.io
인프라 마스터       DC01.knlab.io
명령을 완료했습니다.

만약 GUI에서 확인하고자 한다면, 스키마 마스터의 경우 확인이 되지않기 때문에 다음의 방법을 사용해야 한다.

  1. <시작> - <실행> - regsvr32 schmmgmt.dll
  2. <시작> - <실행> - mmc 입력 - “스냅인 추가/제거” - “Active Directory 스키마” 추가
  3. “Active Directory 스키마” - 마우스 우클릭 - “작업 마스터”

FSMO Role 이동시키기

  1. <시작> - <실행> - ntdsutil 을 입력한다.

  2. roles 을 입력한다.

ntdsutil.exe: roles
  1. connections 를 입력한다.
fsmo maintenance: connections
  1. 이동시키고자 하는 AD/DC의 이름을 입력한다.
server connections: connect to server DC02.knlab.io
DC02.knlab.io에 바인딩 중...
로컬에서 로그온 된 사용자의자격 증명을 사용하여 DC02.knlab.io에 연결되었습니다.
  1. 세션 연결이 되었으므로 connections 모드를 빠져나온다.
server connection: quit
  1. ? 를 입력해서 명령어를 확인한다.
fsmo maintenance: ?

 ?                             - 이 도움말 정보를 표시합니다.
 Connections                   - 특정 AD DC/LDS 인스턴스에 연결합니다.
 Help                          - 이 도움말 정보를 표시합니다.
 Quit                          - 이전 메뉴로 되돌아갑니다.
 Seize infrastructure master   - 연결된 서버의 구조 역할을 덮어씁니다.
 Seize naming master           - 연결된 서버의 명명 마스터 역할을 덮어씁니다.
 Seize PDC                     - 연결된 서버의 PDC 역할을 덮어씁니다.
 Seize RID master              - 연결된 서버의 RID 역할을 덮어씁니다.
 Seize schema master           - 연결된 서버의 스키마 역할을 덮어씁니다.
 Select operation target       - 사이트, 서버, 도메인, 역할 및 명명
                                 컨텍스트를 선택합니다.
 Transfer infrastructure master - 연결된 서버를 인프라 마스터로 만듭니다.
 Transfer naming master        - 연결된 서버를 명명 마스터로 만듭니다.
 Transfer PDC                  - 연결된 서버를 PDC로 만듭니다.
 Transfer RID master           - 연결된 서버를 RID 마스터로 만듭니다.
 Transfer schema master        - 연결된 서버를 스키마 마스터로 만듭니다.
  1. 이전 명령어들을 순차적으로 입력하여 이전을 한다.
fsmo maintenance: Transfer infrastructure master
fsmo maintenance: Transfer naming master
fsmo maintenance: Transfer PDC
fsmo maintenance: Transfer RID master
fsmo maintenance: Transfer schema master
  1. 다른 명령 프롬포트창을 오픈하여 정상적으로 이전이 되었는지 확인한다.
C:\Users\administrator.knlab>netdom query fsmo
스키마 마스터               DC02.knlab.io
도메인 명명 마스터        DC02.knlab.io
PDC                         DC02.knlab.io
RID 풀 관리자            DC02.knlab.io
인프라 마스터       DC02.knlab.io
명령을 완료했습니다.

결론

해당 고객의 경우 시간이 좀 소요되었지만, SQL Server Always On 고가용성이 원활하게 구동되는 상태에서 안정적으로 AD/DS의 서버 초기화 및 재구축이 완료되었다. 이번 기회에 AD/DS의 유지관리에 대한 기술을 익히게 되어 좋은 경험을 했다고 생각된다.