개요
최근, 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에서 확인하고자 한다면, 스키마 마스터의 경우 확인이 되지않기 때문에 다음의 방법을 사용해야 한다.
- <시작> - <실행> -
regsvr32 schmmgmt.dll
- <시작> - <실행> -
mmc
입력 - “스냅인 추가/제거” - “Active Directory 스키마” 추가 - “Active Directory 스키마” - 마우스 우클릭 - “작업 마스터”
FSMO Role 이동시키기
<시작> - <실행> -
ntdsutil
을 입력한다.roles 을 입력한다.
ntdsutil.exe: roles
- connections 를 입력한다.
fsmo maintenance: connections
- 이동시키고자 하는 AD/DC의 이름을 입력한다.
server connections: connect to server DC02.knlab.io
DC02.knlab.io에 바인딩 중...
로컬에서 로그온 된 사용자의자격 증명을 사용하여 DC02.knlab.io에 연결되었습니다.
- 세션 연결이 되었으므로 connections 모드를 빠져나온다.
server connection: quit
- ? 를 입력해서 명령어를 확인한다.
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 - 연결된 서버를 스키마 마스터로 만듭니다.
- 이전 명령어들을 순차적으로 입력하여 이전을 한다.
fsmo maintenance: Transfer infrastructure master
fsmo maintenance: Transfer naming master
fsmo maintenance: Transfer PDC
fsmo maintenance: Transfer RID master
fsmo maintenance: Transfer schema master
- 다른 명령 프롬포트창을 오픈하여 정상적으로 이전이 되었는지 확인한다.
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의 유지관리에 대한 기술을 익히게 되어 좋은 경험을 했다고 생각된다.