2009년 8월 25일 화요일

Hyper-V의 고가용성 실현 [technet 펌]


한 눈에 보기:
  • Hyper-V를 사용하여 서버 통합
  • 가상 컴퓨터의 고가용성 확보
  • Windows Server 2008 장애 조치(failover) 설정

Windows Server 2008의 Hyper-V는 엔터프라이즈 IT 부서에 상당한 반향을 불러일으킨 서버 가상화를 현실화하는 기술입니다. 물리적 컴퓨터를 적은 수로 유지하여 서버를 구성하면 리소스와 비용을 크게 절감할 수 있지만 이렇게 하려면 계획 프로세스 중에 두 가지 핵심 요인을 고려해야 합니다. 메시징 및 공동 작업 플랫폼과 같은 도구와 기간 업무(LOB) 응용 프로그램을 포함하는 소프트웨어의 가용성에 대한 사용자의 기대치는 점차 높아지고 있습니다. 게다가 서버에 문제나 오류가 발생하면 작업이 더욱 큰 영향을 받습니다. Windows Server 2008과 Hyper-V를 사용하면 가상 컴퓨터(VM)에서 고가용성(HA)을 제공하고 VM 내에서 워크로드를 호스트하는 솔루션을 구축할 수 있습니다.

고가용성
가용성이란 사용자가 시스템에 액세스하여 작업을 수행할 수 있음을 의미합니다. 가용성이 높다는 것은 시스템이 운영 연속성을 제공하도록 디자인 및 구현되었음을 의미하므로 사용자는 항상 시스템에 액세스할 수 있다고 기대하게 됩니다.
Hyper-V의 고가용성은 Windows Server 2008 장애 조치(failover) 클러스터 기능을 사용함으로써 구현됩니다. 고가용성은 계획 및 비계획 가동 중지 시간에 모두 영향을 받으며 장애 조치(failover) 클러스터링으로 이러한 두 가지 범주에서 가상 컴퓨터의 가용성을 크게 높일 수 있습니다.
장애 조치(failover) 클러스터를 통해 가상 컴퓨터를 관리할 수 있으며 가상 컴퓨터 내부에서 장애 조치(failover) 클러스터를 사용하여 VM에서 호스트되는 워크로드를 모니터링하거나 이동할 수도 있습니다. 여기에서는 이러한 두 가지 구성 시나리오를 모두 설명하겠지만 이 기사의 중점 내용은 가상 컴퓨터를 관리하는 데 대한 것입니다. 시작하기에 앞서 "유용한 Hyper-V 용어" 추가 기사를 살펴보십시오.

호스트와 게스트
Hyper-V 시스템에서는 여러 운영 체제를 실행할 수 있기 때문에 계층이나 OS를 명확하게 지칭하기가 어렵습니다. 필자는 Hyper-V VM 내의 자식 파티션에서 실행되는 OS와 환경을 "게스트"라고 용어로 부르며 Hyper-V 부모 파티션의 OS에 의해 관리되는 실제 컴퓨터를 "호스트"라는 용어로 부릅니다.
호스트 가용성은 서버 통합에 의해 "모든 달걀을 한 바구니에 담는 상황"에 따른 문제를 해결합니다. Hyper-V 부모 파티션(호스트)에서 Hyper-V 자식 파티션(가상 컴퓨터나 게스트)의 상태를 모니터링하고 클러스터 노드 간을 이동하도록 Windows Server 2008 장애 조치(failover) 클러스터를 구성할 수 있습니다. 이 구성에는 다음과 같은 핵심적인 장점이 있습니다.
  • Hyper-V와 VM이 실행 중인 실제 컴퓨터에 업데이트, 변경 또는 다시 부팅이 필요한 경우 VM을 클러스터의 다른 노드로 이동하고 실제 컴퓨터를 다시 사용할 수 있게 되면 VM을 다시 원래 위치로 이동할 수 있습니다.
  • Hyper-V와 VM이 실행 중인 실제 컴퓨터에 오류가 발생(예: 메인보드 고장)하거나 심각한 작동 저하가 발생하는 경우 Windows 장애 조치(failover) 클러스터의 다른 구성원이 VM의 소유권을 넘겨받아 자동으로 온라인 상태로 만들 수 있습니다.
  • VM에 오류가 발생하는 경우 동일한 Hyper-V 서버에서 다시 시작하거나 다른 Hyper-V 서버로 이동할 수 있습니다. Windows Server 장애 조치(failover) 클러스터는 이러한 작업을 감지하고 VM의 리소스 속성의 설정에 따라 자동으로 복구 단계를 수행합니다. 감지와 복구 자동화 덕분에 작동 중단 시간이 최소화됩니다.
그림 1에는 이러한 경우에 어떤 일이 발생하는지 보여 줍니다. VM2는 처음에는 호스트 A에 있다가 호스트 B로 이동합니다. 이러한 이동 중에 SAN 저장소 LUN 2는 호스트 A에서 호스트 B로 변경됩니다. 여러분의 고가용성 솔루션이 가용성 요구를 충족할 수 있도록 VM의 위치를 신중하게 고려해야 하며 용량과 성능을 모두 감안해야 합니다.
그림 1 새로운 호스트로 이동하는 가상 컴퓨터와 해당 저장소 (더 크게 보려면 이미지를 클릭하십시오.)
노드의 용량은 모든 VM을 호스트하고 x개의 노드가 실패하거나 활성 클러스터 참여에서 x개의 노드를 제거하도록 허용할 만큼 충분해야 합니다. 여기에서 x는 클러스터에서 손실되더라도 모든 VM을 호스트할 수 있는 노드의 수를 나타냅니다. 용량을 결정할 때는 일부 노드가 정식으로 VM을 호스트하지 않고 예약 상태로 유지하도록 선택할 수 있습니다. 또는 x개의 노드가 실패하는 경우 각 노드가 성공적으로 소유권을 가져오고 VM을 시작할 수 있는 충분한 공간을 확보하도록 VM을 모든 노드에 걸쳐 분산시키는 방법도 있습니다.
일상적인 작업의 성능을 감안하면 VM을 클러스터의 모든 노드에 걸쳐 분산시키는 것이 좋습니다. 노드가 예약되고 VM을 전혀 호스트하지 않는 경우 VM을 호스트하는 노드가 리소스를 더 많이 사용하며 VM은 물론 관리 파티션의 성능이 저하될 수 있습니다. 노드에 걸쳐 VM을 분산시키면 각 노드에 적용되는 부하가 줄어들며 VM과 관리 파티션의 성능이 개선됩니다. 그러나 용량 계획은 더 까다로워집니다. System Center Virtual Machine Manager 2008과 같은 관리 소프트웨어를 사용하면 노드 실패와 VM 배치를 위한 용량 계산을 수행하는 데 도움이 됩니다.

게스트 가용성
게스트 가용성은 VM 내에서 실행되는 워크로드의 가용성을 높게 만드는 데 초점을 맞춥니다. 일반적인 워크로드에는 파일 및 인쇄 서버, IIS 및 LOB 응용 프로그램이 있습니다. VM 내의 고가용성 요구와 워크로드를 위한 솔루션을 분석하는 과정은 독립 실행형 서버에서와 동일합니다. 솔루션은 특정 워크로드에 의존하게 됩니다.
일부 네트워크는 여러 서버가 공용 네트워크 이름을 통해 풀의 일부가 될 수 있도록 허용하는 Windows NLB(Network Load Balance)를 통해 고가용성을 달성할 수 있습니다. 클라이언트는 가상 네트워크 이름을 사용하여 요청을 수행하며 NLB 클러스터의 노드 중 하나에 연결합니다. NLB 클러스터링을 사용하는 일반적인 시나리오로는 각 개별 시스템에 같은 웹 페이지가 있고 같은 데이터에 액세스하는 IIS로 웹 팜을 구성하는 예가 있습니다. NLB는 관리를 위해서나 서버에 문제가 발생했을 때 멤버 자격에서 서버를 제공하는 기능은 물론 부하 분산을 제공하여 높은 수준의 가용성을 보장합니다. Hyper-V VM이 Windows Server 2008(또는 NLB를 포함하는 Windows Server 이전 버전)에서 실행 중인 경우 게스트는 NLB 클러스터의 구성원일 수 있으며 이때 다른 게스트는 동일 또는 다른 Hyper-V 호스트에 있을 수 있습니다.
Windows Server 2008을 실행하는 게스트는 Windows 장애 조치(failover) 클러스터 기능을 사용하여 자체 워크로드에 고가용성을 제공할 수 있습니다. 게스트 내에서 Windows 장애 조치(failover) 클러스터링을 사용(게스트 클러스터링)하면 몇 가지 장점이 있습니다.
워크로드 상태 모니터링 Windows 장애 조치(failover) 클러스터의 리소스 모니터는 클러스터와 연결된 리소스 DLL에 대한 호출을 수행합니다. 각 리소스에는 리소스가 관리하는 응용 프로그램이나 서비스가 올바르게 작동하는지 테스트하는 상태 모니터링이 있습니다. 이러한 검사를 일반적으로 isAlive/looksAlive 검사라고 합니다. 리소스의 이러한 호출 중 하나가 실패하면 발생하면 리소스 자체가 실패합니다. 이 경우 리소스는 해당 속성 구성에 따라 서비스나 응용 프로그램을 다시 시작하려고 시도하거나 Windows 장애 조치(failover) 클러스터의 다른 노드로 이동할 수 있습니다.
가상 컴퓨터 유지 관리 VM의 구성을 변경해야 하거나 OS나 소프트웨어를 업데이트 또는 변경해야 하는 경우, 워크로드를 클러스터의 다른 노드로 이동하여 최종 사용자의 작업 중단을 최소화하면서 VM을 종료하거나 업데이트할 수 있습니다.
호스트 컴퓨터 유지 관리 Hyper-V VM을 호스팅하는 실제 컴퓨터에 유지 관리나 소프트웨어 업데이트가 필요하며 Windows 장애 조치(failover) 클러스터의 다른 구성원이 다른 Hyper-V 호스트에 있는 경우 VM의 워크로드를 클러스터의 다른 노드로 이동하고 실제 서버의 변경이나 다시 부팅을 위해 VM을 종료할 수 있습니다.
가상 컴퓨터나 호스트 컴퓨터 오류 실제 Hyper-V 호스트나 가상 컴퓨터 게스트에 오류가 발생하면 Windows 장애 조치(failover) 클러스터의 다른 노드가 해당 클러스터 구성원이 더 이상 응답하지 않거나 클러스터에 참여하지 않는다는 것을 감지하고 남아 있는 노드가 오류가 발생한 VM에서 실행 중이던 응용 프로그램이나 서비스를 온라인으로 만듭니다.

유용한 Hyper-V 용어
다음은 고가용성 Hyper-V 시스템(호스트 클러스터)의 구성 요소나 기능을 정의하는 데 도움이 되는 용어 목록입니다.
부모 파티션 하이퍼바이저 서버에서 실행되는 모든 운영 체제에는 RAM, CPU 및 다른 시스템 구성 요소를 포함하는 하드웨어 리소스가 할당됩니다. Hyper-V에서 하이퍼바이저와 시스템 리소스의 구성을 관리하는 파티션을 부모 파티션이라고 부르는 경우가 많습니다. Hyper-V 역할이 구성되고 서버가 다시 부팅되면 시스템의 네이티브 OS였던 Windows Server 2008 설치가 Hyper-V 서버의 부모 파티션에서 OS가 됩니다.
자식 파티션 게스트 운영 체제를 저장하고 해당 운영 체제에 하드웨어 리소스를 제공하도록 구성된 Hyper-V 서버 상의 격리된 환경
Hyper-V 호스트 Hyper-V와 부모 파티션 내에서 실행되는 운영 체제를 호스팅하는 실제 서버
Hyper-V 가상 컴퓨터 Hyper-V 자식 파티션을 부팅하고 실행하는 데 사용되는 Hyper-V 구성 정보 및 데이터입니다. 여기에는 자식 파티션과 VHD 파일 또는 해당 데이터를 포함하는 통과 디스크를 만들기 위한 구성 정보가 포함됩니다.
통과 디스크 Hyper-V 게스트에서 독점적으로 사용하도록 할당되며 디스크 관리에서 실제 디스크로 공개되는 저장소 장치입니다. Hyper-V 게스트는 디스크를 탑재하고 로컬에 연결된 저장소 장치처럼 디스크를 사용합니다.
VHD(가상 하드 디스크) Hyper-V 자식 파티션에 연결되며 운영 체제에는 저장소 장치(디스크)로 공개되는 파일입니다. .vhd 파일은 부모 파티션에 의해 탑재되는 저장소 장치에 위치하며 직접 연결 저장소 장치이거나 SAN, NAS 또는 SMB를 통해 연결되는 저장소일 수 있습니다.
고가용성 VM 구현
장애 조치(failover) 클러스터 관리에서 HA 역할 마법사를 사용하면 간단하게 가상 컴퓨터를 고가용성으로 구성할 수 있습니다. Hyper-V 가상 컴퓨터를 고가용성으로 관리하기 위해 고려해야 하는 몇 가지 핵심 구성 요소가 있습니다. 몇 가지 중요한 개념과 일반적인 필수 구성 요소를 살펴보겠습니다.
장애 조치(failover) 클러스터 노드 장애 조치(failover) 클러스터를 구성하는 각 실제 서버를 노드라고 합니다. 호스트 클러스터링의 경우 장애 조치(failover) 클러스터 서비스는 Windows Server 2008에서 Hyper-V 시스템의 부모 파티션 상에서 실행됩니다. 이를 통해 동일한 실제 서버의 자식 파티션에서 실행 중인 VM을 고가용성 가상 컴퓨터로 구성할 수 있습니다. HA로 구성된 가상 컴퓨터는 장애 조치(failover) 클러스터 관리 콘솔에 리소스로 표시됩니다.
HA 저장소 VHD(가상 하드 디스크), 통과 디스크 및 차이점 보관용 디스크를 사용하도록 고가용성 가상 컴퓨터를 구성할 수 있습니다. 장애 조치(failover) 클러스터 노드 간에 가상 컴퓨터가 이동할 수 있도록 하려면 장애 조치(failover) 클러스터 서비스에서 관리되며 VM을 호스트하는 모든 노드가 액세스할 수 있는 저장소(디스크 관리에 디스크로 표시됨)가 필요합니다. 통과 디스크는 장애 조치(failover) 클러스터에 디스크 리소스로 추가해야 하며 VHD 파일은 장애 조치(failover) 클러스터에 디스크 리소스로 추가된 디스크에 있어야 합니다.
가상 컴퓨터 리소스 가상 컴퓨터를 나타내는 장애 조치(failover) 클러스터 리소스 유형입니다. 가상 컴퓨터 리소스가 온라인 상태가 되면 Hyper-V가 자식 파티션을 만들고 가상 컴퓨터의 OS가 시작됩니다. 가상 컴퓨터 리소스의 오프라인 기능이 호스팅된 노드 상의 Hyper-V에서 VM을 제거하며 자식 파티션은 Hyper-V 호스트에서 제거됩니다. 가상 컴퓨터가 종료, 중지 또는 저장된 상태가 되면 이 리소스는 오프라인 상태가 됩니다.
가상 컴퓨터 구성 리소스 VM의 구성 정보를 관리하는 데 사용되는 장애 조치(failover) 클러스터 리소스 유형입니다. 각 가상 컴퓨터에 대한 가상 컴퓨터 구성 리소스는 하나입니다. 이 리소스의 속성에는 가상 컴퓨터를 Hyper-V 호스트에 추가하는 데 필요한 모든 정보가 있는 구성 파일에 대한 경로가 포함되어 있습니다. 가상 컴퓨터 리소스를 시작하려면 구성 파일을 사용할 수 있어야 합니다. 구성은 별도의 리소스가 관리하므로 VM이 오프라인인 동안에도 VM 리소스의 구성을 수정할 수 있습니다.
가상 컴퓨터 서비스 및 응용 프로그램 그룹 장애 조치(failover) 클러스터링을 통해 서비스나 응용 프로그램을 고가용성으로 유지하려면 같은 장애 조치(failover) 클러스터 노드에 여러 리소스를 호스트해야 합니다. 이러한 리소스가 항상 같은 노드에 있도록 하고 올바르게 상호 운용될 수 있도록 하기 위해 리소스는 Windows Server 2008 장애 조치(failover) 클러스터가 "서비스 또는 응용 프로그램"이라고 참조하는 그룹에 넣어집니다. 가상 컴퓨터 리소스와 VM의 가상 컴퓨터 구성 리소스는 항상 같은 서비스 또는 응용 프로그램 그룹에 있습니다. 서버 또는 응용 프로그램 그룹에는 VHD나 구성 파일을 포함하는 하나 이상의 실제 디스크(또는 다른 저장소 유형) 리소스나 통과 디스크도 있을 수 있습니다.
리소스 종속성 가상 컴퓨터 리소스가 온라인(시작)이 되기 전에 가상 컴퓨터 구성 리소스를 온라인으로 만들고, 가상 컴퓨터 리소스를 오프라인(중지)이 된 후에 가상 컴퓨터 구성 리소스를 오프라인으로 만드는 것이 중요합니다. 가상 컴퓨터 구성 리소스에 종속되도록 가상 컴퓨터 리소스의 속성을 설정하면 이러한 온라인/오프라인 순서를 보장할 수 있습니다. 가상 컴퓨터 구성 리소스나 가상 컴퓨터 리소스의 파일을 포함하는 저장소 리소스가 있는 경우 리소스가 해당 저장소 리소스에 종속되도록 해야 합니다. 예를 들어 가상 컴퓨터가 디스크 G:에 있는 VHD 파일과 디스크 H를 사용하는 경우 가상 컴퓨터 리소스는 디스크 G:에 있는 구성 파일 리소스와 리소스, 그리고 디스크 H에 있는 리소스에 종속되도록 해야 합니다.

필수 구성 요소
다음은 Windows Server 2008 장애 조치(failover) 클러스터 기능을 사용하여 Hyper-V 가상 컴퓨터를 고가용성으로 만들기 위한 세 가지 필수 구성 요소입니다.
  1. 클러스터의 각 노드에 대해 Windows Server 2008 장애 조치(failover) 클러스터 기능을 구성해야 합니다. 장애 조치(failover) 클러스터 구성 및 관리에 대한 자세한 내용은 "Hyper-V 리소스" 추가 기사를 참조하십시오.
  2. Hyper-V 역할을 설치해야 합니다. Hyper-V 업데이트를 설치해야 하며 장애 조치(failover) 클러스터의 각 노드에 역할을 구성해야 합니다. 마찬가지로 "Hyper-V 리소스" 추가 기사를 참조하십시오. Hyper-V에는 Hyper-V 서버 구성 요소를 설치하는 업데이트 패키지와 Hyper-V 관리 콘솔을 설치하는 업데이트 패키지가 있습니다. Hyper-V 서버 구성 요소용 업데이트를 설치한 다음에는 서버 관리자나 ServerManagerCMD를 통해 역할을 추가할 수 있습니다.
  3. 가상 컴퓨터에서 공유 저장소를 사용할 수 있도록 해야 합니다. 저장소는 장애 조치(failover) 클러스터에 의해 기본 제공 실제 디스크 리소스 유형으로서 관리될 수 있으며 타사 솔루션을 사용하여 공유 스토리지를 관리할 수도 있습니다. 물론 타사 솔루션은 Windows Server 2008 장애 조치(failover) 클러스터를 지원해야 합니다.

HA 단계별 안내
다음은 고가용성 솔루션을 설정하는 방법을 살펴보겠습니다. 첫 번째 단계는 가상 컴퓨터를 설정하는 것입니다. 장애 조치(failover) 클러스터에서 Hyper-V 역할이 설치된 노드 중 하나에서 Hyper-V 관리자를 사용하여 가상 컴퓨터를 구성합니다(그림 2 참조). 이때 수동으로 새로운 VM을 구성하거나 기존 VM을 가져올 수 있습니다. VHD는 Windows Server 2008 장애 조치(failover) 클러스터에 의해 관리되며 VM이 구성되고 있는 노드 상에서 현재 온라인 상태인 디스크에 있어야 합니다.
그림 2 가상 컴퓨터 구성 (더 크게 보려면 이미지를 클릭하십시오.)
이제 가상 컴퓨터를 종료하거나 끄거나 또는 저장 상태로 설정하여 중지된 상태로 만듭니다. 장애 조치(failover) 클러스터는 가상 컴퓨터가 중지된 상태가 되어야만 관리를 위해 구성할 수 있습니다.
Windows Server 2008 장애 조치(failover) 클러스터 역할을 실행하는 임의의 서버에서 또는 RSAT(원격 서버 관리 도구)를 실행하는 Windows Vista 클라이언트에서 장애 조치(failover) 클러스터 관리 콘솔(그림 3 참조)을 엽니다. 클러스터 관리… 작업을 선택하고 노드나 클러스터 이름을 선택하거나 콘솔이 실행 중인 노드의 클러스터에 연결하는 옵션을 선택하여 장애 조치(failover) 클러스터에 연결합니다.
그림 3 장애 조치(failover) 클러스터 관리의 가상 컴퓨터 (더 크게 보려면 이미지를 클릭하십시오.)
장애 조치(failover) 클러스터 관리 콘솔에서 서비스 또는 응용 프로그램 구성… 작업을 선택합니다. 이렇게 하면 장애 조치(failover) 클러스터에서 관리되는 서비스, 응용 프로그램 또는 가상 컴퓨터를 구성하는 과정을 안내하는 고가용성 마법사가 열립니다. 마법사의 서비스 또는 응용 프로그램 선택 페이지에서 가상 컴퓨터를 선택하고 다음을 선택합니다.
가상 시스템 선택 페이지에는 장애 조치(failover) 클러스터의 임의의 노드에 구성된 모든 가상 컴퓨터가 표시됩니다. 가상 컴퓨터를 선택하고 다음을 선택합니다. 모든 경고나 오류를 보여 주는 마법사의 확인 페이지가 표시됩니다. 이 단계에서는 HA 리소스로 구성할 수 있는지 확인하고 노드가 이를 호스트할 수 있는지 확인하기 위해 가상 컴퓨터 구성이 검사됩니다. 이제 다음을 선택하면 가상 컴퓨터가 고가용성 리소스로서 장애 조치(failover) 클러스터에 추가됩니다.
요약 페이지에는 모든 경고를 포함하여 가상 컴퓨터를 고가용성 리소스로 추가한 결과에 대한 정보가 표시됩니다. 보고서 보기… 단추를 클릭하면 모든 경고나 오류를 포함하여 가상 컴퓨터를 고가용성으로 만드는 작업에 대한 세부 정보를 볼 수 있습니다. 마지막으로 마침을 선택하면 고가용성 마법사가 닫힙니다.
그림 3의 창에 나와 있는 것처럼 장애 조치(failover) 클러스터 관리 콘솔은 왼쪽 창에서 클러스터 이름과 서비스 또는 응용 프로그램 아래에 Virtual Machine(x)이라는 기본 이름으로 개체를 나열합니다. 해당 트리 구조에서 가상 컴퓨터를 선택하면 서비스 또는 응용 프로그램 그룹의 일부인 리소스가 콘솔의 가운데 창에 표시됩니다. 선택된 것과 동일한 저장소에 해당 파일이 있는 가상 컴퓨터가 있으면 해당 항목도 그룹에 추가됩니다. 그룹에 추가된 각 가상 컴퓨터에 해당하는 가상 컴퓨터 및 가상 컴퓨터 구성 리소스가 표시됩니다.
서비스 또는 응용 프로그램 그룹의 정보 창에는 그룹의 상태, 알림, 기본 설정 소유자 및 현재 소유자 정보가 표시됩니다. 소유자 노드는 가상 컴퓨터가 현재 구성되거나 실행 중인 가상 컴퓨터입니다. 가상 컴퓨터를 오프라인으로 만든 다음 다른 노드에서 온라인으로 만들려면 가상 컴퓨터를 다른 노드로 이동 작업을 선택합니다. 장애 조치(failover) 클러스터 내에서 VM을 호스트할 수 있는 각 노드에 VM을 이동하여 이동이 성공하고 VM이 시작되고 실행되는지 확인하는 것이 일반적으로 최선의 방법입니다.

고려 사항
다음은 가상 컴퓨터를 고가용성으로 설정할 때 기억해야 할 몇 가지 핵심 요점입니다.
저장소 가상 컴퓨터의 VHD 파일이 동일한 공유 디스크에 있는 경우 동일한 디스크의 다른 볼륨에 있다고 하더라도 동일한 서비스 또는 응용 프로그램 그룹에 포함됩니다. 디스크를 공유하는 데 따르는 장점 중 하나는 공유 저장소 공간을 더욱 잘 사용할 수 있다는 것입니다.
그러나 가상 컴퓨터의 문제에 따른 자동 복구에 의한 것이든 또는 관리자의 선택에 의한 것이든 가상 컴퓨터가 이동할 때마다 그룹 내의 모든 가상 컴퓨터가 이동한다는 것이 단점입니다.
드라이버 문자와 GUID 드라이브 문자를 할당하지 않고도 볼륨을 만들 수 있습니다. 가상 컴퓨터에서 이러한 볼륨을 사용할 수 있으며 장애 조치(failover) 클러스터에서 볼륨을 관리할 수 있습니다. 디스크 리소스에 드라이브 문자 대신 GUID를 사용하는 볼륨이 있으면 클러스터 관리에 해당 GUID가 표시됩니다. 가상 컴퓨터를 만들고 VHD의 경로를 지정할 때는 경로의 GUID가 클러스터 관리에서 볼륨에 표시되는 GUID와 일치하도록 하는 것이 매우 중요합니다. GUID가 일치하지 않으면 가상 컴퓨터가 장애 조치(failover) 클러스터의 다른 노드에서 올바르게 시작(온라인)할 수 없습니다.
GUID가 일치하지 않게 되는 몇 가지 상황이 있습니다. 볼륨을 장애 조치(failover) 클러스터 관리 디스크 리소스로 추가하기 전에 노드에서 온라인으로 만들면 볼륨이 각 노드에서 다른 GUID를 가지게 됩니다. 단일 노드에서 한 볼륨이 여러 GUID를 가지는 경우도 있습니다. 디스크가 장애 조치(failover) 클러스터에 실제 디스크 리소스로 추가되면 온라인 상태인 디스크가 있는 노드에서 사용 중인 볼륨 GUID가 디스크 리소스의 속성에 표시됩니다.
디스크 리소스가 온라인이 되면 볼륨의 GUID가 노드에 추가됩니다. 이를 통해서 장애 조치(failover) 클러스터가 볼륨에 대해 지정한 특정 GUID가 디스크를 온라인으로 만든 모든 노드에서 유효한 경로가 되도록 보장할 수 있습니다. 해당 노드는 동일한 볼륨에 연결된 다른 GUID를 가질 수도 있습니다. 따라서 해당 노드의 볼륨에 유효한 GUID와 장애 조치(failover) 클러스터가 다른 노드의 볼륨에 사용되는 것으로 보장하는 GUID가 서로 다른 경우가 발생할 수 있습니다. 이 문제의 증상은 가상 컴퓨터 리소스, 그중 일반적으로 구성 리소스를 온라인으로 만드는 작업이 실패하고 경로가 잘못되었음을 알려 주는 오류 메시지가 표시되는 것입니다. 오류 메시지의 경로는 볼륨에 대한 클러스터 관리 GUID가 아닌 GUID를 보여 줍니다.
탑재 지점 Hyper-V와 장애 조치(failover) 클러스터에서는 드라이브 문자를 지정하거나 GUID를 사용하지 않고 다른 볼륨의 폴더에 볼륨을 탑재하는 것이 허용됩니다. 탑재된 볼륨과 탑재 지점을 호스팅하는 볼륨이 동일한 장애 조치(failover) 클러스터 노드에 있어야 하므로 탑재 지점을 구성하는 모든 디스크가 동일한 장애 조치(failover) 클러스터 서비스 또는 응용 프로그램 그룹에 있어야 합니다.
볼륨이 동일한 디스크에 있으면 문제가 되지 않지만 볼륨이 다른 디스크에 있는 경우에는 확실히 문제가 됩니다. 당연하지만 탑재되는 볼륨과 탑재 지점의 호스트가 장애 조치(failover) 클러스터가 관리하도록 구성된 공유 저장소여야 한다는 것은 다시 확인할 필요가 있습니다.
차이점 보관용 디스크 차이점 보관용 디스크를 구성하는 모든 VHD 파일은 차이점 보관용 디스크를 사용하는 VM과 동일한 서비스 또는 응용 프로그램 그룹의 공유 저장소에 있어야 합니다. 가장 단순한 구성의 경우 차이점 보관용 디스크에는 기본으로 사용되는 데이터의 집합을 포함하는 부모 역할을 하는 VHD와 부모에 연결된 자식 역할을 하는 VHD의 두 개의 VHD가 포함됩니다.
차이점 보관용 디스크는 처음 사용될 때는 부모와 동일합니다. 데이터가 부모에 있으면 VHD에서 데이터를 읽습니다. 모든 쓰기 작업은 자식 VHD에 수행됩니다. 데이터가 자식에 있으면 해당 데이터에 대한 읽기는 자식 VHD를 참조합니다.
자식 VHD는 공유 저장소에 있지만 부모 VHD는 동일한 그룹의 공유 저장소가 아닌 다른 곳에 있도록 VM이 구성되거나 로컬에 연결된 저장소 장치에 있는 경우 다른 노드로 옮겨지면 VM이 시작(온라인)하지 못하게 됩니다. 고가용성 마법사는 VM에서 이 구성이 올바른지 확인하고 이 문제가 발견되면 오류 메시지를 보여 주지만 VM 구성이 변경된 경우 요구 사항을 확인해 보는 것도 가치가 있습니다.

Steven Ekren는 Windows 서버 장애 조치(failover) 클러스터 및 고가용성 팀의 수석 프로그램 관리자이며 12년간 Microsoft 지원 부서에서 엔터프라이즈 고객이 Windows Hyper-V, System Center Virtual Machine Manager, Microsoft Virtual Server 및 Microsoft 가상 PC를 포함한 Windows 서버 장애 조치(failover) 클러스터 및 가상화 기술을 구현하고 문제를 해결하는 과정을 지원해왔습니다.

SQL Server 2005 Database Mirroring

SQL Server 2005 Database Mirroring


테크데이타 김종균

jkkim@techdata.co.kr

 


SQL Server 2005 Database Mirroring
개요

 

데이터베이스 미러링은 데이터베이스의 가용성을 높여 주는 주요 소프트웨어 솔루션입니다. 미러링은 데이터베이스 단위로 구현되며 전체 복구 모델을 사용하는 데이터베이스에서만 작동합니다.

단순 복구 모델 및 대량 로그 복구 모델에서는 데이터베이스 미러링이 지원되지 않습니다.데이터베이스 미러링은 상시 대기 서버를 유지함으로써 작동합니다.

일반적인 미러링 세션 중 프로덕션 서버에 문제가 발생하면 클라이언트 응용 프로그램에서 대기 서버에 다시 연결하여 빠르게 복구할 수 있습니다.

참고로, master, msdb, tempdb 또는 model 데이터베이스는 미러링할 수 없습니다. 데이터베이스 미러링에는 일반적으로 서로 다른 컴퓨터에 상주하는 2개의 단일 데이터베이스 복사본이 사용됩니다.

클라이언트는 항상 하나의 데이터베이스 복사본만 사용할 수 있습니다. 이 복사본을 주 데이터베이스라고 합니다.

클라이언트가 주 데이터베이스에 수행한 업데이트는 미러 데이터베이스라고 하는 다른 데이터베이스 복사본에 미러링됩니다.

미러링에는 주 데이터베이스에 대해 수행된 모든 삽입, 업데이트 또는 삭제 작업의 트랜잭션 로그를 미러 데이터베이스에 적용하는 작업이 포함됩니다.

주 데이터베이스와 미러 데이터베이스는 별개의 서버 인스턴스(, Microsoft SQL Server 데이터베이스 엔진 의 인스턴스)에 상주해야 합니다.

두 서버 인스턴스는 데이터베이스 미러링 세션에서 파트너로서 통신하고 협력합니다. 두 파트너는 세션에서 서로 보완되는 주 역할과 미러 역할을 수행합니다.

언제든지 한 파트너는 주 역할을 수행하고 다른 파트너는 미러 역할을 수행합니다.

각 파트너는 현재 역할을 소유한다고 표현합니다. 주 역할을 소유하는 파트너를 주 서버라고 하며 주 서버의 데이터베이스 복사본이 현재의 주 데이터베이스입니다.

미러 역할을 소유하는 파트너를 미러 서버라고 하며 미러 서버의 데이터베이스 복사본이 현재의 미러 데이터베이스입니다

데이터베이스 미러링은 SQL Server Standard Edition Enterprise Edition에서 완벽하게 지원됩니다.

SQL Server Workgroup Edition 또는 Express Edition에서 실행되는 서버 인스턴스는 미러링 모니터 서버 역할만 지원합니다.

 

[참고] SQL Server 2005 서비스팩1 부터 정식으로 사용 가능하며, 서비스팩1이 설치되지 않은 SQL서버는 추적플래그 1400을 활성화하여 서비스를 시작하면 미러링 기능을

이용할 수 있습니다.

 

데이터베이스 미러링은 운영 형태에 따라서 High Availablity, High Protection, High Performance 3가지로 분류 할 수 있습니다.

 

1.       High Availablity 형태 : 자동으로 Failover처리, Principal, Mirror, Witness 인스턴스가 각각 필요.

2.       High Protection 형태 : 수동으로 Failover처리, Principal, Mirror 인스턴스가 각각 필요.

3.       High Performance 형태 : 트랜잭션이 principal서버와 Mirror서버에 반영되었는지 확인하지 않음, 따라서 성능의 이점은 있음.
수동으로 Failover처리, Principal, Mirror 인스턴스가 각각 필요.

 

 

SQL Server 2005 Database Mirroring 구현 따라하기

[사전준비사항]

1.       3개의 SQL서버 2005 인스턴스 (테스트 이므로 하나의 서버에 3개의 인스턴스로 진행합니다.).
-  Principal
서버 : ADFSACCOUNT
-  Mirror
서버 : ADFSACCOUNT\SQL2005_2ND
-  Witness
서버 : ADFSACCOUNT\SQL2005_3RD 

2.       미러링을 구현할 Database
- BELLVIRUS

 

[따라하기]

1.       Principal 서버에서 미러링을 할 데이터베이스를 백업한다.  데이터 베이스의 복구 모델은 Full 이어야 합니다.
BACKUP DATABASE BELLVIRUS TO DISK = 'D:\BACKUP\BELLVIRUS.BAK' WITH INIT

2.       백업한 파일을 이용하여 Mirror서버에서 NORECOVERY 옵션으로 복원한다
RESTORE DATABASE BELLVIRUS FROM DISK ='D:\BACKUP\BELLVIRUS.BAK'
WITH MOVE 'BELLVIRUS' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\BELLVIRUS.mdf',
MOVE 'BELLVIRUS_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\BELLVIRUS_log.LDF', NORECOVERY

3.       아래 그림 처럼 MIRROR서버의 BELLVIRUS 데이터베이스가 (복원중…)으로 표시될 것입니다.
이제 미러링 설정을 위해서 주 서버의 BELLVIRUS 데이터베이스의 속성창을 띄우십시요.

사용자 삽입 이미지

4.       데이터베이스 속성 창의 미러링 페이지를 선택하고, 오른쪽 상단의 보안구성버튼을 누릅니다.

사용자 삽입 이미지

5.       데이터베이스 미러링 보안 구성 마법사가 뜹니다.

사용자 삽입 이미지

6.       미러링 모니터 서버를 포함 여부를 물어옵니다.
모니터서버는 위에서 살펴본 WITNESS서버를 의미합니다. 여기서는 고가용성을 위한 테스트 이므로 포함시키도록합니다.

사용자 삽입 이미지


7.       마찬가지로 모니터 서버 인스턴스에도 보안구성을 저장한다고 선택합니다.

사용자 삽입 이미지


8.       주 서버 인스턴스에 대한 포트 및 끝점 이름을 설정합니다.

사용자 삽입 이미지


 

9.       같은 방식으로 미러서버 인스턴스와 Witness서버 인스턴스 설정도 합니다.
아래 그림처럼 연결이 되지 않은 상태에서는 주의표시가 뜹니다. 연결버튼을 눌러 연결을 맺으면 됩니다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

10.     각 서버의 서비스 계정을 지정하는 화면입니다.
지시내용에 따라 입력을 하십시요. 이번 테스트는 단일 머신에서 진행하는 관계로 입력란을 비워둡니다.

각 서버가 독립된 머신에서 구성을 할 경우에는 서버 상호간에 연결 권한을 피연결서버측에 허용해주어야 합니다.
이 단계에서 각 서버의 계정을 지정하면, 피연결서버측에서 자동으로 연결권한을 부여하게 됩니다.

사용자 삽입 이미지


11.     설정 요약 정보를 검토한 후 마침을 누릅니다.

사용자 삽입 이미지

12.    미러링 보안 구성이 성공적으로 완료 됩니다.
 

사용자 삽입 이미지

13.     완료후 데이터베이스 미러링을 지금 시작하겠냐고 물어옵니다.
시작하셔두 되구, 데이터 베이스 속성의 미러링 페이지에서 나중에 시작하셔도 무방합니다.

사용자 삽입 이미지

14.     미러링이 시작된 미러링 페이지의 모습입니다.
운영모드의 주석을 잘 읽어보시기 바랍니다.

사용자 삽입 이미지

15.     미러링이 구성된 후의 SQL서버 트리 모습입니다. 변경된 아이콘을 봐두시기 바랍니다.

사용자 삽입 이미지

16.     그럼 이제 몇 개의 트랜잭션을 발생시키고, FAILOVER를 시켜서 정상적으로 미러링이 되고 있는지 확인 해보겠습니다.
주서버의 BELLVIRUS 데이터베이스에서 아래의 쿼리를 실행합니다.

사용자 삽입 이미지

주서버와 미러서버에서 각각 프로필러를 띄워서 입력되는 트랜잭션을 살펴보았으나, 미러서버쪽에서는 아무런 내용도 캡처되지 않았습니다.
사용자 삽입 이미지


17.    주서버에서 FAILOVER를 발생시킨후 미러서버쪽에서 데이터를 살펴보겠습니다.
주서버의 BELLVIRUS 데이터베이스의 속성창의 미러링 페이지에서 장애조치버튼을 클릭합니다.

사용자 삽입 이미지


장애조치를 하게되면 주서버와 미러서버가 서로 전환되고, 현재 주서버의 BELLVIRUS데이터베이스는 연결 할 수 없다는
경고성 문구가 뜹니다. 숙지하신후 예를 눌러 장애조치를 시킵니다.
사용자 삽입 이미지


장애조치는 순식간에 끝나버립니다. MANAGEMENT STUDIO SQLSERVER트리를 새로고침해서 확인하면 아래그림처럼
주서버와 미러서버의 역할이 서로 바뀐 것을 확인 할 수 있습니다.
사용자 삽입 이미지


18.     그럼 바뀐 주서버의 BELLVIRUS 데이터베이스에서 TEST2테이블의 내용을 조회해 보겠습니다.

결과 값이 정확히 일치 하는 것을 확인 할 수 있습니다.

19.    이상으로 간단하게 SQL SERVER 2005의 데이터베이스 미러링을 구현해보았습니다.

 

 

마치며..

SQL2005의 데이터베이스 미러링의 기능이 추가되면서, 가용성 높이기 위한 구현 방법이 한가지 더 늘어났습니다.

데이터베이스 단위의 standby개념이라면, 미러링이 가장 좋은 솔루션이 될 것 같습니다. 테스트 해 본 바로는 주 데이터베이스의

장애시점에 3초 이내에 미러 서버에서 서비스가 가능함을 확인하였습니다.

SQL서버가 제공하는 여러 가지 가용성 솔루션 (클러스터링, 미러링, 복제, 로그전달)의 각각의 장단점이 있으니, 이를 잘 인지하여

주어진 상황에 맞는 솔루션을 선택하시기 바랍니다.

PhpMyAdmin 설치

db관리를 쉽게 할수있는점은 편하지만 보안상 취약점이 있어 최신버전을 유지함과 동시에 기본적으로 로그인인증을 통해 접속이 가능하도록 설정해야함

아래사이트에서 phpmyadmin source 다운로드 가능합니다.

http://sourceforge.net/project/showfiles.php? group_id=23067&package_id=16462&release_id=608929

* 소스 다운로드
[root@localhost APM_Setup]# wget http://downloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.11.7-all-languages.tar.gz?modtime=1214225771&big_mirror=0

* 압축 풀기
[root@localhost APM_Setup]# tar zxvf phpMyAdmin-2.11.7-all-languages.tar.gz

* myadmin 설치 원하는 디렉토리로 이동
ex) test.com 도메인에서 확인 하기를 원하는 경우 ( test.com/phpmyadmin 으로 확인 하고자 할때 )

[root@localhost APM_Setup]# mv phpMyAdmin-2.11.7-all-languages /home/test/phpmyadmin

[root@localhost APM_Setup]# cd /home/test/phpmyadmin

* config 파일 만들기
[root@localhost APM_Setup]# cp -arfp libraries/config.default.php ./config.inc.php

* config 파일 수정하기
[root@localhost APM_Setup]# vi config.inc.php

편집기 상에서 아래 명령어 실행

:%s/config/cookie        ==> 이 부분은 config 라는 단어를 찾아서 모두 cookie 라는 단어로 변경을 하는 것입니다.
            cookie설정이 되어 있어야 암호화 알고리즘을 이용한 인증이 허용됩니다.

$cfg['blowfish_secret'] = 'password';        => 접속 계정의 비밀번호
$cfg['Servers'][$i]['host'] = 'localhost'; => host 명
$cfg['Servers'][$i]['user'] = 'root'; => 접속 계정
$cfg['Servers'][$i]['password'] = 'password'; => 접속 계정의 비밀번호

이렇게 수정 해 주시면 인증절차를 거친후 접속 확인 가능 합니다.

우리회사 직원 서버에 빌붙었음..ㅎㅎ




회사에서 내 서버를 내려버리는 바람에 한동안 블로그를 가지고 못놀았네

자료모으기 용이지만.. ㅎㅎ유용하다

우리 직원 덕분에 웹호스팅을 공짜로 받을수 있어서 좋넹~~~

쪼아~~