장애 조치(Fail Over)를 위한 클러스터링, 네트웍 로드 밸런싱(NLB)를 이용한 클러스터링 등 고가용성을 위해서 다양한 방식을 취할 수 있습니다. 가상화, 즉 Hyper-V를 사용하지 않고 물리적 서버들을 이용해서 클러스터링을 구성하거나, 로드밸런싱 하는 방식은 직관적으로 정해진 가이드를 따르면 됩니다. 그런데, 가상화 된 환경, 즉 호스트 서버(물리적 서버)와 가상 머신이 혼재된 상황에서의 클러스터링과 네트웍 로드 밸런싱은 이해하기가 쉽지 않습니다. 오늘은 이 부분을 좀 쉽게 정리해 보려고 합니다.
클라우드 컴퓨팅이 중요한 트렌드로 각광을 받고 있고, 그 기반 기술이 가상화 라는 것 아시죠? 이 가상화가 엔터프라이즈 및 중견 기업들의 인프라 구성에 큰 변화를 가져오고 있는 중입니다.
가상화의 가장 큰 장점은 물리적인 서버의 수를 줄일 수 있다는 것이고 결국 서버 구입 비용 절감, 전력 사용량 절감 등의 효과로 나타납니다. 고객들은 이러한 금전적인 이점 이외에도 LOB(Line of Business, 즉 ERP, SCM 등) 및 메시징 및 협업 소프트웨어 등의 가용성에 대해서도 향상되기를 원하고 있습니다. 가상화는 예를들면, 8대의 물리적인 서버를 1대의 호스트(물리적인 서버)에 8개의 가상머신으로 변경할 수 있기 때문에 장애가 발생하면 이전보다 그 피해규모가 훨씬 더 커지게 됩니다. Windows Server 2008과 Hyper-V를 통해 가상머신 자체와 가상머신에서 구동되는 워크로드(예, IIS 웹서버)의 고가용성을 보장해 줍니다.
고가용성
가용성의 의미는 사용자가 원하는 작업을 하기 위해 시스템에 접근할 수 있는 것입니다. 고가용성은 시스템에 문제가 있을 때에도 운영의 연속성을 보장할 수 있도록 디자인되고 구현되었기 때문에 항상 시스템에 접근할 수 있다는 것을 의미합니다.
Hyper-V의 고가용성은 Windows Server 2008 Failover Cluster (장애조치 클러스터)를 통해 이루어 집니다. 계획된, 계획되지 않은 장애 시 가상머신의 가용성을 획기적으로 향상시킬 수 있는 기능을 의미합니다. 가상머신들은
가상머신들은 Failover Cluster에 의해 관리될 수 있고, Failover Cluster는 가상머신을 모니터링하고, 가상머신에서 구동중인 워크로드를 이전하는데 사용될 수 있습니다.
호스트 및 게스트 머신들
"게스트"라는 말은 Hyper-V의 가상머신 환경의 운영체제를 의미합니다. "호스트"라는 말은 Hyper-V의 부모 파티션의 OS에 의해 관리되는 물리적 머신을 의미합니다.
호스트의 가용성은 "모든 계란을 한 바구니에 넣기", 즉 서버 통합이 가져올 수 있는 모든 이슈와 연계되어 있습니다. Windows Server 2008 Failover Cluster는 Hyper-V의 부모 파티션 (즉, 호스트)에 설정될 수 있고, 게스트들의 정상 작동 여부를 모니터링 할 수 있고, 클러스터의 각 노드 사이를 자유롭게 이동할 수 있습니다. 이렇게 되면 아래와 같은 장점들을 얻을 수 있게 됩니다.
. Hyper-V와 가상머신이 구동되는 물리적 서버가 업데이트, 변경, 리부트 되어야 할 때 가상머신들은 클러스터 상
의 다른 노드로 옮겨질 수 있습니다. 물리적 서버가 정상 서비스 상태로 되돌아오면 원래의 위치로 복귀할 수 있
습니다.
. Hyper-V와 가상머신이 구됭되는 물리적 서버에 장애 (머더보드 오류), 또는 급격한 성능 저하가 벌어지면 클러스
터 상의 다른 멤버가 가상머신의 소유권을 가져와 자동으로 서비스를 대신할 수 있습니다.
. 만약 가상머신에 오류가 생기면, 같은 Hyper-V에서 다시 재시작 하거나 다른 Hyper-V 서버로 옮겨질 수 있습니
다. Windows Server Failover Cluster에서 탐지가 되고 가상머신의 자원 속성정보에 설정된 값을 기준으로 복구
작업이 자동으로 이루어 집니다.
그림 1은 장애 상황에 대한 이해를 돕습니다. 우선 VM2가 호스트 A에 위치하다가, VM2가 호스트 B로 옮겨 갑니다. SAN 스토리지 LUN2를 호스트 A가 소유하고 있다가 호스트 B가 소유하는 것으로 바뀌었습니다. 고가용성을 보장받기 위해서는 가상머신이 어디에 위치할 것인지를 주의 깊게 살펴봐야 하고, 또한 Capacity와 성능을 함께 고민해봐야 합니다.
그림1. 가상머신이 새로운 호스트로 옮겨질 때 스토리지의 상태
노드들의 Capacity는 가상머신들의 장애가 발생 시 다 수용할 수 있을 만한 여유가 확보되어야 합니다. 즉, Capacity 및 성능을 고려하여 몇 개의 노드(즉, 개별 서버)는 아무 가상머신도 호스팅하지 않고 예비 상태로 설계되는 것이 필요합니다. 또한, 기본적으로 모든 워크로드들은 각 노드 상에 고르게 분포되는 것이 성능 유지를 위해 필요합니다. 이러한 작업에는 Capacity 및 배치 계획을 위해 System Center Virtual Machine Manager 2008 등의 관리도구가 유용 합니다.
게스트 가용성
게스트 가용성은 가상머신 내에서 구동되는 워크로드의 고가용성을 의미합니다. 일반적으로 파일, 프린터 서버, IIS 웹서버, LOB(Line of Business) 애플리케이션들을 의미합니다. 가상머신의 워크로드에 고가용성을 적용하는 것은 개별 물리적 서버의 고가용성과 거의 유사합니다. 솔루션은 특정한 워크로드에 따라 달라지는 거죠.
IIS 웹서버 등의 워크로드는 Windows Load Balance (NLB)를 통해 고가용성을 얻을 수 있는데, 여러대의 서버가 하나의 네트웍 이름의 일부로 사용될 수 있습니다. 가상 네트웍 네임으로 클라이언트가 요청을 하게 되고 NLB 클러스터 상의 하나의 노드에 연결이 맺어집니다. 각 IIS가 같은 웹 페이지, 데이터에 접근하는 웹 팜의 경우가 대표적이죠. NLB는 로드밸런싱과 유지보수 및 서버 장애시 잠시 빼내서 고가용성을 제공할 수 있도록 합니다. 만약 Hyper-V의 가상머신이 Windows Server 2008 (또는 NLB가 포함된 이전 Windows Server 버전)이면 게스트는 같은 Hyper-V 또는 다른 Hyper-V 호스팅의 게스트들과 NLB 클러스터의 멤버가 될 수 있습니다.
Windows Server 2008에서 구동되는 게스트는 워크로드의 고가용성을 위해 Windows Failover Cluster 기능을 사용할 수 있습니다. 바로 이것이 게스트 클러스터링이 장점입니다.
Workload Health 모니터링: Windows Failover Cluster는 클러스터와 연계된 자원 DLL을 호출할 수 있는 리소스 모니터를 가지고 있습니다. 각 리소스는 애플리케이션이나 서비스가 잘 동작하는지를 확인할 수 있는 모니터링 기능이 있습니다. isAlive/looksAlive 체크가 바로 그것이죠. 만약 호출중에 오류가 발생하면, 자원 자체가 오류가 되고, 설정된 정보에 따라 해당 서비스나 애플리케이션을 재시작하도록 하거나, Windows Failover Cluster 내의 다른 노드로 옮기도록 할 수 있습니다.
가상머신 유지보수: 가상머신, 운영체제, 소프트웨어의 설정을 변경해야 할 때 클러스터 상의 다른 노드로 워크로드가 옮겨질 수 있고, 최종 사용자의 작업에 최소한의 영향으로 가상머신이 셧다운 되거나 갱신될 수 있습니다.
호스트 머신 유지보수: 호스트 머신, 소프트웨어의 유지보수가 필요할 때 해당 머신에 존재하는 가상머신들은 클러스터 상의 다른 노드로 옮겨질 수 있고, 그 때 해당 호스트는 갱신되거나 리부트 될 수 있습니다.
가상 또는 호스트 머신의 장애: 물리적 Hyper-V 호스트, 가상머신의 게스트에 장애가 있을 때 Windows Failover Cluster 상의 다른 노드들이 장애를 탐지하고, 오류가 생긴 가상머신을 클러스터 상의 정상 작동하는 노드로 옮겨서 애플리케이션이나 서비스를 온라인 상태로 만들어 서비스를 진행합니다.
가상머신에 고가용성을 부여하는 방법
Failover Cluster 관리 도구의 고가용성 롤 마법사를 이용하면 간단하게 작업할 수 있습니다. Hyper-V 가상머신은 고가용성을 보장받기 위해 몇 가지 고려해야할 내용이 있습니다. 한 번 살펴보시죠
1. Failover Cluster 노드
. Failover Cluster의 일부인 각 물리적 서버를 노드라고 합니다. 호스트 클러스터링을 위해, Failover Cluster 서
비스는 Windows Server 2008 Hyper-V의 부모 파티션에서 구동됩니다. 이렇게 설정되면 동일한 물리적 서버에
구동되는 자식 파티션들을 고가용성을 갖도록 설정할 수 있습니다. 고가용성이 설정된 가상머신들은 Failover
Cluster 관리 컨솔에 자원으로 보여집니다.
2. 고가용성(HA) 스토리지
. 고가용성 가상머신은 VHD(Virtual Hard Disks), Passthrough Disks, Differencing Disks로 설정될 수 있습니
다. Failover 클러스터 노드간에 가상머신을 이동할 수 있으려면, 가상머신을 호스트 할 수 있는 노드, Failover
Cluster 서비스로 관리되는 노드들이 접근할 수 있는 스토리지 (디스크 관리에 디스크로 나타나는)가 있어야
합니다. Passthrough Disks는 failover cluster에 디스크 자원으로 추가되어야 하고, VHD 파일은 반드시
failover 클러스터에 디스크 자원으로 추가되어야만 합니다.
이 정도로 마무리 하겠습니다. 감사합니다.
본 글은 Technet, Steven Ekren의 "Virtualization: Achieving High Availability for Hyper-V"를 번역하였습니다.