Windows Server 2012 액티브 디렉터리의 변화, 가상화 기술내 스냅숏(Snapshot) 활용

image

마이크로소프트 기술에서 액티브 디렉터리(AD)가 차지하는 비중은 상당히 높습니다. 계정 인증에 대한 중앙 관리를 더불어, 다양한 설정 저장, 그리고 타 기술과의 연동 및 확장을 제공하는 아주 중요한 기술입니다. Windows 2000에서 처음 소개된 액티브 디렉터리는 기술 추가, 개선을 거듭하여, Windows Server 2012의 시점까지도 계속 발전해가고 있습니다.

액티브 디렉터리 기술의 많은 변화 중 가상화와 연계된 부분은 2가지 정도입니다.

  • 스냅숏 기술과 도메인 컨트롤러
  • 가상 머신 복제(Clone)을 통한 추가 도메인 컨트롤러 빠른 생성 : (관련 포스팅)

오늘은 이 중 스냅숏 부분을 먼저 살펴보려고 합니다.

액티브 디렉터리는 가용성을 위해 2대 이상의 도메인 컨트롤러(DC)를 만들어놓고 운영합니다. 두 DC는 일정 주기로, 상호 데이터를 복제하여, 동일한 데이터로 유지되고 있죠. 상호 데이터가 일치되었음을 확인하기 위해 USN(Updated Sequence Number)을 사용합니다.

image

AD에서 무언가 일이 발생하면, USN 값은 하나씩 올라가, 양 DC가 같은 USN을 가지고 있다는 의미는 동일한 데이터로 구성되어져 있음을 보장하게 됩니다. 위의 그림과 같이 계정을 100개 추가 생성했을 경우, 초기 USN값 100에서 100이 증가된 200으로 양단을 맞추게 됩니다. 가상화 기술이 대중화되어 가면서, DC를 가상 머신으로 생성하여 운영하는 경우가 많은데, DC 가상 머신의 특정 시점에 스냅숏을 생성하고, 이를 이용하여 예전 시간으로 되돌리게 되면 어떻게 될까요? (참고로 스냅숏 기술은 가상 머신의 특정 시점 상태를 가지고 있다가, 차후 병합 또는 원복을 가능하게 하는 기술입니다.)

위의 그림을 기반으로 계속 설명하게 되면 USN 100 시점에 스냅숏을 DC1에서 찍어놓고, 200까지 진행된 후, Hyper-V나 기타 가상화 기술에서 100에서 찍은 스냅숏으로 복구하게 되면, 해당 데이터가 100 시점으로 돌아갈까요? 아닙니다. USN값의 불일치는 DC에서 오래된 DC라는 형태로 받아들여지게 되고, USN 200으로 복제를 시도하게 됩니다. 문제가 더욱 심각해지는 경우는 바로 복제가 되지 않았을 경우입니다. USN 100으로 돌아온 DC1이 상호 복제전 계정을 150개 다시 만들었다면, USN이 250이 되게 되고, 동일하게 보는지, 아님 DC2 입장에서 업데이트된 50개만 받을 것인지? 그것도 아니죠.. DC2의 계정과 DC1의 계정이 불일치하는 증상, 더 심각한 것은 계정의 고유한 번호, 우리는 이를 SID(Security ID)라고 부릅니다. SID는 도메인 ID + RID(Relative ID)로 만들어집니다. RID 역시 스냅숏 반영으로 예전 숫자로 돌아가게 되고, SID는 같지만, 완전히 다른 개체가 공존하는 이상한 일도 발생하게 됩니다.

이러한 이유로 가상화 환경내에서는 도메인 컨트롤러를 운영할 수 있지만, 시간을 기반으로 진행되는 속성때문에, 스냅숏을 이용한 특정 형태의 복구를 할 수 없다고 권장하였습니다.

Windows Server 2012의 AD 개선 중 중요한 일부분이 바로 가상화 환경에서도 안전하게, 그리고 일관성있게 동작하는 AD를 만드는 것이었습니다. 이를 위해 몇가지 새로운 기술이 추가되었습니다. 바로 VM-Generation ID가 DC와 Hyper-V 기술에 추가된 것입니다.

image

아까와 동일한 그림입니다. 다만 VM-Generation ID가 추가되어져 있습니다. 이는 AD내 도메인 컨트롤러 개체에 속성값(msDS-GenerationID)에 저장되어져 있습니다.

image

AD내에서 해당 ID 값을 저장하고 있습니다. 또한 해당 ID에 대한 정보는 Hyper-V의 VMGenerationCounter 드라이버에서 제공됩니다. 만약 스냅숏이 적용되어, 시간이 되돌아 갔을 경우, 이 DC가 스냅숏이 반영되었다는 것을 AD에 알려주기 위해서, 해당 DC의 msDS-GenerationID를 변경하게 됩니다. 해당된 속성 값이 DC 개체에서 변경되었을 경우, 스냅숏이 반영되어져, 복제에 대해, 전체적인 일관성을 체크하라고 AD에 알려주는 것입니다.

image

해당 확인은 단순히 DC간의 AD 정보만을 확인하는 것이 아니라, 그룹 정책 등을 처리하는 SYSVol 공유에 대한 복제도 확인하게 되고, 이에 대한 정보도 이벤트 로그에 남겨 됩니다.

image

VM-Generation ID가 변경된 경우, 스냅숏이 반영된 머신을 최신 상태로 구성한 다음, 추가적인 개체 작업을 하게 되므로, 앞서 문제점이었던 USN 불일치에 따른 일관성 깨짐도 막을 수 있으며, RID의 충돌과 같은 부분도 해결할 수 있게 됩니다. VM-Generation ID에 대한 지원은 현 시점에서는 Windows Server 2012로 구성된 DC, 그리고 가상화 기술은 Windows Server 2012 Hyper-V에서만 제공합니다. 차후 VM-Generation ID를 가상화 기술에서 제공할 수 있게, 타 가상화 벤더도 가능하게 되지 않을까라는 생각을 같습니다. 하위 버전으로 구성된 DC, 그리고 Windows Server 2012가 아닌 가상화 기술을 이용하여, 스냅숏 적용과 같은 형태를 이용하면, 기존에 문제점은 그대로 남겨됩니다.

오늘 포스팅의 전체적인 아키텍쳐 플로우는 아래와 같습니다.

image

스냅숏 적용은 전체 도메인에서 한대씩 DC에 반영해야 합니다. 동시에 2대 이상에 반영을 하여, 여러대 DC에 반영되면, 전체적인 구성에 문제가 발생되게 됩니다. 스냅숏을 반영한 도메인 컨트롤러는 개체가 예전으로 복구되는 형태가 아니기에, AD 데이터에 대한 이전 복구는 기존과 동일한 형태의 시스템 백업과 복구를 활용하셔야 합니다.

다음 포스팅에서는 가상 하드 디스크 복사를 통한 추가 도메인 컨트롤러의 빠른 생성을 살펴보겠습니다.