류짱:Beyond MySelf

Windows Server Cluster 1 본문

Microsoft/Windows Platform

Windows Server Cluster 1

リュちゃん 2009. 9. 2. 15:39

언젠가는 정리를 해야지 해야 지 하면서 거의 1년을 미뤄왔던 Windows Cluster에 대한 개념과 Architecture에 대한 MS의 white paper를 기본으로(거의 Copy 수준) 정리 합니다.

 개발 배경

컴퓨터 클러스터는 20여 년 이상 개발되어 사용되고 있습니다. 초기 클러스터링 기술자의 한 사람인 G. Pfister는 클러스터를 "서로 연결된 컴퓨터들로 구성되어 하나의 단일한 컴퓨터 리소스로서 사용되는 병렬 또는 분산 시스템"이라고 정의했습니다. 여러 서버 컴퓨터를 하나의 단일한 클러스터로 만들면 사용자나 관리자는 마치 하나의 서버를 관리하는 것처럼 컴퓨터 로드를 공유할 수 있습니다. 예를 들어, 서버 클러스터 내의 하나의 리소스에 장애가 발생해도 전체 클러스터는 장애가 발생한 구성 요소가 하드웨어 또는 소프트웨어 리소스인지에 상관 없이 클러스터 내의 다른 서버 중 하나의 리소스를 사용하여 사용자에게 계속 서비스를 제공할 수 있습니다.

클러스터 용어

클러스터 서비스는 Windows NT Server 4.0, Enterprise Edition에서 Microsoft Cluster Server(MSCS)로서 처음 사용 되었습니다. 클러스터를 구성하는 서버를 언급할 때 개별 컴퓨터는 노드라고 합니다. 클러스터 서비스는 클러스터에 특정한 작업을 수행하는 각 노드에 있는 구성 요소의 집합을 말하며 리소스는 클러스터 서비스에 의해 관리되는 클러스터 내의 하드웨어 및 소프트웨어 구성 요소를 가리킵니다. 리소스 관리를 위해 클러스터 서비스가 제공하는 구현 메카니즘은 리소스 동적 연결 라이브러리(DLL)입니다. 리소스 DLL은 리소스 추상화, 통신 인터페이스, 관리 작업을 정의합니다.
리소스는 사용 가능하고 클러스터에게 서비스를 제공할 때 온라인 상태라고 합니다. 리소스는 다음과 같은 특징이 있는 물리적 또는 논리적 개체입니다.
  • 온라인 또는 오프라인시킬 수 있습니다.
  • 서버 클러스터에서 관리할 수 있습니다.
  • 한번에 단 하나의 노드에 의해 소유될 수 있습니다.  
클러스터 서비스는 로컬 저장소 장치와 미디어 연결에 표준 Windows 2000과 Windows NT Server 드라이버를 사용합니다. 클러스터 서비스는 클러스터의 모든 서버가 액세스해야 하는 외부 일반 장치를 위해 일부 연결 미디어를 지원합니다. 클러스터에 일반적인 외부 저장소 장치는 SCSI 장치를 요구하며 표준 PCI 기반 SCSI 연결은 물론 Fiber 채널을 통한 SCSI와 다중 초기자를 사용한 SCSI 버스를 지원합니다. 이론적으로 섬유 채널 기술은 SCSI 명령을 섬유 채널 내에 캡슐화하여 클러스터 서비스가 지원할 수 있도록 설계된 SCSI 명령을 사용할 수 있게 합니다. 이러한 SCSI 명령은 Reserve/Release 및 Bus Reset이며 표준 또는 비 표준 SCSI 연결 미디어와 동일하게 동작합니다.
다음 그림은 SCSI 또는 Fiber 채널을 통한 SCSI 방식의 공유 저장소 장치 연결을 사용하는 Windows 2000 Advanced Server 또는 Windows NT Server 4.0, Enterprise Edition으로 구성할 수 있는 2노드 서버 클러스터의 구성 요소를 보여줍니다.

현재 Microsoft Windows® Server 2003 Enterprise Edition은 8노드 클러스터를 (과거에는 2), 그리고 Windows Server 2003 Datacenter Edition은 8노드 클러스트(과거에는 4)를 지원합니다.

가상 서버

클러스터 서비스의 한 가지 이점은 서버 클러스터에서 실행 중인 응용 프로그램과 서비스가 가상 서버로서 사용자와 워크스테이션에 표시될 수 있다는 것입니다. 사용자와 클라이언트에게 클러스터링된 가상 서버를 실행하는 응용 프로그램이나 서비스로의 연결은 하나의 실제 서버로의 연결 과정과 동일하게 보입니다. 실제로 클러스터 내의 모든 노드에서 가상 서버로 연결할 수 있습니다. 사용자와 클라이언트 응용 프로그램은 실제로 가상 서버를 호스트하는 노드를 알 필요가 없습니다.


위 그림은 4개의 가상 서버를 포함하는 2노드 클러스터를 설명합니다. 각 노드에는 2개의 가상 서버가 있습니다. 클러스터 서비스는 가상 서버를 리소스 그룹으로서 관리하며 각 가상 서버 리소스 그룹은 IP 주소와 이 IP 주소에 매핑되는 네트워크 이름의 2가지 리소스를 수록합니다.

가상 서버로의 응용 프로그램 클라이언트 연결은 클러스터 서비스가 가상 서버 주소로 발행하는 IP 주소만 알고 있는 클라이언트 세션을 사용하여 이루어집니다. 클라이언트 보기는 단순히 개별 네트워크 이름과 IP 주소의 보기입니다. 그림 4는 4개의 가상 서버를 지원하는 2노드 클러스터의 예제를 사용하여 클라이언트 노드의 클라이언트 보기와 4개의 가상 서버를 설명합니다.

 

그림 4에서 볼 수 있듯이 클라이언트는 IP 주소와 이름만 볼 수 있으며 가상 서버의 실제 위치에 대한 정보를 알 필요가 없습니다. 따라서 클러스터 서비스는 가상 서버를 실행하는 응용 프로그램에 높은 가용성을 제공할 수 있습니다.

응용 프로그램이나 서버에 장애가 발생하는 경우 클라이언트 서비스는 전체 가상 서버 리소스 그룹을 클러스터의 다른 노드로 이동합니다. 이러한 장애가 발생하면 클라이언트는 응용 프로그램의 해당 세션에서 장애를 발견하여 원래 연결과 동일한 방법으로 재연결을 시도합니다. 클러스터 서비스는 단순히 가상 서버의 IP 주소를 복구 작업 중 클러스터에서 사용 가능한 노드로 매핑하기 때문에 성공적으로 재연결됩니다. 클라이언트 세션은 현재 응용 프로그램이 클러스터의 다른 노드에서 실제적으로 호스트되고 있는지 알 필요 없이 연결을 재설정할 수 있습니다.

이렇게 하면 응용 프로그램이나 서비스의 고 가용성을 유지할 수 있지만 장애가 발생한 클라이언트 세션과 관련된 세션 상태 정보는 응용 프로그램 복구 중 디스크의 클라이언트 세션 데이터를 복구를 위해 저장하도록 응용 프로그램이 설계되거나 구성되지 않는 한 손실됩니다. 클러스터 서비스는 고 가용성을 제공하지만 응용 프로그램 자체적으로 무결성 트랜잭션을 지원하지 않으면 응용 프로그램 무결성을 제공하지 않습니다. Microsoft DHCP 서비스는 클라이언트 데이터를 저장하는 응용 프로그램을 제공하는 서비스이며 장애가 발생한 클라이언트 세션에서 복구를 수행할 수 있습니다

리소스 그룹

리소스 그룹은 클러스터 리소스의 논리적 집합입니다. 일반적으로 리소스 그룹은 응용 프로그램 및 관련 주변기기, 데이터 같은 논리적으로 관련된 리소스로 구성됩니다. 하지만 리소스 그룹은 가성 서버명 과 IP 주소의 관리적 집합 같은 관리적 필요성에 의해서만 관련되는 클러스터 개체를 수록할 수 있습니다. 리소스 그룹은 한번에 하나의 노드에 의해서만 소유될 수 있으며 그룹 내에 있는 개별 리소스는 반드시 현재 이 그룹을 소유한 노드에 존재해야 합니다. 언제나 클러스터의 다른 서버는 동일한 리소스 그룹의 다른 리소스를 소유할 수 없습니다.

그룹의 각 리소스는 클러스터의 다른 리소스에 의존하고 있을 수도 있습니다. 의존성은 다른 리소스가 시작되기 전에 시작되어 사용할 수 있는 리소스를 지정하는 리소스 사이의 관계입니다. 예를 들어, 데이터베이스 응용 프로그램은 먼저 시작되어 다른 응용 프로그램과 클라이언트에 서비스를 제공할 수 있는 디스크, IP 주소, 네트워크 이름의 사용 가능성에 의존할 수 있습니다.

리소스 의존성은 클러스터 서비스 리소스 그룹 속성을 사용하여 식별되고 클러스터 서비스가 리소스를 온라인 또는 오프라인으로 만드는 순서를 제어할 수 있게 합니다. 식별된 의존성의 범위는 동일한 리소스 그룹 내의 리소스로 제한됩니다