2005/08/26

Windows Server Clustering - MSCS

Windows Server 2003 제품군에서는 다음 두 가지 종류의 클러스터링 서비스가 제공됩니다. 다음 설정 방법은 Windows Server 2003을 기준으로 합니다.


Cluster Service (MSCS)

Windows Server 2003, Enterprise Edition 및 Datacenter Edition에서만 사용할 수 있는 이 서비스는 데이터베이스, 메시징 시스템, 파일 및 인쇄 서비스 등의 중대한 응용 프로그램에 뛰어난 가용성과 확장성을 제공합니다. 또한 클러스터에 있는 여러 서버(노드) 간의 통신은 안정적으로 유지됩니다. 오류나 유지 관리 작업으로 인해 클러스터의 노드 중 하나를 사용할 수 없게 되면 즉시 다른 노드에서 장애 조치 서비스를 제공하기 시작합니다. 이 서비스에 대한 액세스는 끊기지 않고 계속 지원되지만 현재 서비스가 다른 서버(노드)에서 제공된다는 사실을 사용자들이 알 수는 없습니다.

Windows Server 2003과 Enterprise Edition 및 Datacenter Edition은 모두 최대 8노드까지 서버 클러스터 구성을 지원합니다. 이러한 변화를 통하여 특히 지리적으로 분산된 클러스터 구성에서 배포의 유연성이 향상되었으며 N+I 구성(활성 노드 N과 예비 노드 I)도 지원할 수 있게 되었습니다. 특히 N+I 구성은 추후에 Windows Server 2003을 사용하여 더욱 광범위하게 Microsoft Exchange Server 배포를 지원하는 데 중요한 역할을 하게 됩니다.


Network Load Balancing (NLB)

Windows Server 2003 제품군의 모든 버전에서 제공되는 이 서비스는 클러스터 간에 수신 인터넷 프로토콜(IP) 트래픽의 균형을 조정하여 로드합니다. 네트워크 로드 균형 조정 기능은 웹 서버와 스트리밍 미디어 서버, 터미널 서비스 등 인터넷 서버 기반 프로그램의 가용성과 확장성을 모두 높여 줍니다. 로드 균형 조정 인프라로서 동작하고 WMI(Windows Management Instrumentation) 상에 구축된 관리 응용 프로그램에 제어 정보를 제공함으로써 네트워크 로드 균형 조정은 기존의 웹 서버 팜 인프라에 자연스럽게 통합될 수 있습니다.


CLB(구성 요소 로드 균형 조정)

클러스터도 지원합니다. 다만, 이경우는 Microsoft Application Center 제품이 추가적으로 필요합니다. COM+ 응용 프로그램에 높은 확장성 및 가용성을 제공합니다.



Windows Server 2003은 SNM(Shared Nothing Model)이며, Active/Active Active/Passive 모델 2가지를 지원합니다.



 클러스터 디스크는 공유스토리지여야 합니다. NAS 나 SAN를 이용합니다.
또는 NAS + SAN 조합의 하이브리드 형태를 이루기도 합니다.








▶ 서버 클러스터 규칙
-Windows Server 2003, Enterprise 또는 Datacenter Edition는 각 노드에 설치되어야 합니다.
-클러스터의 모든 노드는 동일한 Windows Server 2003 도메인에 속해야 합니다.
-처음으로 클러스터를 만들거나 클러스터에 노드를 추가할 때 모든 노드에 대해 권한이 있는 도메인에 로그온해야 합니다.
-각 클러스터 노드는 클러스터 하나에만 속할 수 있습니다.
-공유 드라이브는 NTFS 파일 시스템 형식으로 포맷되어야 합니다.
-Windows Server 2003, Enterprise Edition 또는 Windows Server 2003, Datacenter Edition의 64비트 버전의 경우 클러스터 저장소 장치의 클러스터 디스크는 GPT(GUID 파티션 테이블) 디스크가 아닌 MBR디스크로 파티션되어야 합니다.
-클러스터의 첫째 노드를 구성한 뒤에는 클러스터 노드의 컴퓨터 이름을 바꾸지 말아야 합니다.
-공유 버스의 디스크를 다시 분할하려면 먼저 해당되는 디스크 리소스를 삭제해야 합니다.
-Windows Server 2003, Enterprise Edition 또는 Windows Server 2003, Datacenter Edition 이외의 운영 체제를 사용하여 노드를 시작할 경우 실제 디스크에서 낮은 수준의 쓰기 작업을 수행하는 진단 도구를 실행하지 않아야 합니다.
-노드의 시스템 디스크 드라이브 문자를 다시 할당하지 않습니다.
-모든 노드에서 WINS 서비스 또는 DNS 서비스를 사용할 수 있는지 확인합니다.
-모든 노드와 클라이언트에 TCP/IP가 설치되어 있는지 확인합니다.
-모든 클러스터 노드가 네트워크를 통해 서로 검색할 수 있는지 확인합니다. TCP/IP ping 유틸리티 또는 Windows Server 2003 제품군 운영 체제 net view 명령을 사용하십시오.
-오류 메시지로 영향받은 모든 컴퓨터에 대한 이벤트 로그를 검사합니다.

▶ 클러스터 가능한 리소스의 종류
-실제 디스크
-DHCP 서비스 및 WINS 서비스
-인쇄 스풀러
-파일 공유
-인터넷 프로토콜 주소
-로컬 쿼럼
-주 노드 집합
-네트워크 이름
-일반 응용 프로그램
-일반 스크립트
-일반 서비스
-볼륨 섀도 복사본 서비스 작업


▶ 1. First서버에서 클러스터 관리자에서 새클러스터 등록






가상서버 호스트명을 입력후, 클러스터 서비스 계정은 도메인 계정을 입력하되, 가상 서버의 암호설정 / DnsHostName / ServicePricipalName / 메시지큐 관리 및 수정권한이 있는 계정을 지정해야 합니다.


▶ 2. ip주소에는 현재 서버의 public ip를 등록

ip주소는 클러스터에서 이용할 가상서버의 공인ip를 입력합니다. 가상서버는 앞서 입력한 MSCS입니다. 가상서버는 실제 서버처럼 네트워크 리소스에 대한 엑세스를 허용하며, MSCS처럼 고유 호스트명을 갖습니다. 그리고 입력한 공인 ip주소를 갖습니다. 이 주소에 DHCP를 사용할 수는 없습니다.

공용ip / private 네트워크는 하트비트(클러스터 노드간 통신)
노드 간 통신- 클러스터 서비스에서는 공용 네트워크가 유일하게 사용 가능한 네트워크일지라도 내부 통신에 공용 전용 네트워크는 사용하지 않습니다. 예를 들어 클러스터에 개인 네트워크로 구성된 네트워크 A와 공용 네트워크로 구성된 네트워크 B가 있고 네트워크 A에 오류가 발생했다고 가정합니다. 클러스터 서비스에서는 공용 전용인 네트워크 B를 사용하지 않으므로 노드는 통신을 중지하고 클러스터는 분리됩니다.


▶ 3. 클러스터 구성내용 확인.





▶ 4. second 서버에서 클러스터관리자에서 이미 세팅된 클러스터에 노드추가



이미 생성된 Cluster에 노드를 추가 합니다. 그러면 이전과 동일하게 기존에 구축된 클러스터 환경을 체크하고, 기존 클러스터에 노드를 추가합니다. 추가후 에러발생시 로그를 점검해 봐야 합니다.




▶ 7. DHCP클러스터 구성

다음은 DHCP 서비스 클러스터 구축입니다. DHCP클러스터 구축은 DHCP서비스에서 이용할 공인IP/호스트명/DHCP 리소스가 설정되어야 합니다.

7.1 DHCP서비스의 공인 IP 리소스 설정



7.1 DHCP서비스의 공인 호스트명 리소스 설정






7.1 DHCP서비스의 공인 DHCP서비스 리소스 설정



물론 DHCP 서비스를 하기위해서는 IP/호스트가 필요하기 때문에, DHCP클러스터 서비스를 활성화하기 전에 IP/호스트 리소스가 먼저 활성화되어야 합니다.


▶ 8. Wins 클러스터 구성

Wins 클러스터 구축도 DHCP 클러스터 구축과 동일합니다. Wins서비스도 IP/호스트 가 필요하므로 DHCP클러스터 구축순서와 같습니다.


▶ 9. 장애조치와 장애복구 설정

장애 조치(FailOver)

서버 클러스터의 개별 응용 프로그램에서 오류가 발생하지만 노드에서는 발생하지 않을 경우 클러스터 서비스는 대개 동일한 노드에서 응용 프로그램을 다시 시작하려고 합니다. 이 시도가 실패하면 클러스터 서비스는 해당 응용 프로그램의 리소스를 서버 클러스터의 다른 노드로 이동하여 다시 시작합니다. 이 프로세스를 장애 조치라고 합니다



그룹에 대한 장애 조치 정책은 그룹을 오프라인 상태로 만들기 전까지 지정한 시간(기간) 안에 그룹에 대해 수행할 수 있는 장애 조치 최대 횟수(임계값)입니다. 그룹 장애 조치가 이 횟수보다 더 많이 수행될 경우 클러스터 서비스에서는 해당 그룹을 오프라인 상태로 놓아 둡니다.

예를 들어 그룹 장애 조치 임계값을 5로 설정하고 장애 조치 기간이 3으로 설정할 경우 클러스터 서비스에서는 그룹에 대해 세 시간 동안 5번까지 장애 조치를 수행합니다. 해당 그룹의 리소스에 6번째 오류가 발생할 경우 클러스터 서비스는 해당 그룹의 다른 모든 리소스도 오류로 처리하며 해당 그룹에 대하 장애 조치를 수행하는 대신 전체 그룹을 오프라인 상태로 둡니다.




장애 복구(FailBack)

노드가 어떤 이유에서인지 비활성 상태가 되면 클러스터 서비스는 이 노드에서 호스트하는 그룹에 대해 장애 조치를 수행합니다. 노드가 다시 시작되면 클러스터 서비스는 이 노드에서 원래 호스트한 그룹에 대해 장애 복구를 수행할 수 있습니다.



장애 복구(failback) 발생 기간의 시간 간격을 설정하려면 간격의 시작과 끝으로서 0과 23 사이의 숫자를 입력합니다. 첫째 숫자가 두 번째 숫자보다 크면 간격은 다음날 끝납니다. 해당 숫자는 24시간제 형식으로 읽을 경우 클러스터 그룹의 로컬 시간과 일치합니다. 피크 사용 시간에 장애 복구가 실행되지 않으려면 장애 복구 시간을 설정하는 것이 중요합니다.




▶ 10. 서버 클러스터 백업 및 복원

가용성을 높이기 위해서는 서버 클러스터에 대한 정기적인 백업이 반드시 필요합니다.

10.1.클러스터 데이터 백업

*클러스터 백업순서
1.클러스터의 각 노드에서 ASR(시스템 자동 복구) 백업을 수행합니다.
2.각 노드에서 클러스터 디스크를 백업합니다.
3.노드에서 실행 중인 Microsoft Exchange Server 또는 Microsoft SQL Server 등의 개별 응용 프로그램을 백업합니다.

서버 클러스터에는 클러스터의 원활한 동작에 필수적인 네 가지 데이터 그룹인 클러스터 디스크의 디스크 서명과 파티션, 클러스터 쿼럼 데이터, 클러스터 디스크 데이터 및 개별 클러스터 노드 데이터가 있습니다.

-클러스터 디스크 서명과 파티션
서버 클러스터 노드의 데이터를 백업하기 전에 백업 마법사의 시스템 자동 복구를 사용하여 클러스터 디스크의 서명과 파티션을 백업해야 합니다. 이 단계는 전체 시스템에 오류가 발생하거나 마지막 백업 이후 쿼럼 디스크의 서명을 변경한 경우 등 나중에 쿼럼 디스크의 서명을 복원해야 할 때 필요합니다.

-클러스터 쿼럼 데이터
서버 클러스터 노드의 데이터를 백업할 때 클러스터 쿼럼도 백업해야 합니다. 클러스터 쿼럼에는 현재 클러스터 구성, 응용 프로그램 레지스트리 검사점 및 클러스터 복구 로그가 포함되어 있어 중요합니다. 클러스터 서비스가 실행 중인 노드에서 클러스터 쿼럼 데이터를 백업할 수 있습니다. 한 노드의 클러스터 쿼럼 디스크를 백업했으면 나머지 클러스터 노드의 쿼럼은 백업할 필요가 없습니다. 그러나 나머지 클러스터 노드의 클러스터링 소프트웨어, 클러스터 관리 소프트웨어, 시스템 상태 및 응용 프로그램 데이터는 백업이 필요할 수 있습니다.

-클러스터 디스크 데이터 및 개별 클러스터 노드 데이터
일반적인 백업방법과 동일하게 수행합니다.

10.2.클러스터 데이터 복원
클러스터 복원은 오류의 유형에 따라 복원 방법이 약간 달라집니다.

1-클러스터 디스크 데이터 손실
2-클러스터 쿼럼 손상
3-클러스터 쿼럼 검사점 소멸
4-클러스터 디스크 손상 또는 오류
5-클러스터 쿼럼 디스크 오류
6-단일 클러스터 디스크 손상 또는 오류
7-클러스터 쿼럼 롤백
8-전체 클러스터 오류
9-주 노드 집합 클러스터 오류
10-서버 클러스터에서 응용 프로그램 데이터 손실


Network Load Balancing

NLB(네트워크 로드 균형 조정) 서비스는 웹, FTP, 방화벽, 프록시, VPN 및 기타 업무에 중요한 서버에 사용되는 응용 프로그램과 같은 인터넷 서버 프로그램의 가용성 및 확장성을 향상시킵니다.



첫째 클러스터는 두 대의 호스트로 구성되어 있고 둘째 클러스터는 네 대의 NLB 호스트로 구성되어 있습니다. 각 호스트는 웹, FTP 및 텔넷 서버 응용 프로그램 등 필요한 개별 서버 응용 프로그램의 복사본을 실행합니다.



NLB드라이버는 위에서 보는 바와 같은 구조를 가지고 있다. 네트워크 어댑터가 LAN에 연결되어 있고 그 네트워크 윗 계층에 네트워크 어댑터 드라이버가 있으며 또 그 위에 NLB 드라이버가 존재한다. NLB드라이버는 로드밸런싱을 위한 가상 IP가 지정된다. 이 가상 IP는 각 호스트마다 동일한 값을 가지게 된다.

L4스위치와 달리, NLB는 모든 호스트에 똑 같은 요청이 브로트캐스트를 통해서 전달되며, 브로드캐스트를 통해 받은 요청은 각 NLB규칙에 따라서 특정 호스트에서 받아서 처리하며 나머지 호스트는 네트워크 드라이버 계층에서 Drop 처리된다.

만약 여러개의 네트워크 어댑터가 설치되어 있는 경우 다음과 같이 여러 네트워크 어댑터에 바인딩되므로 각 호스트에서 여러 독립 클러스터를 구성할 수 있습니다.



클러스터 성능을 최적화하려면 각 네트워크 로드 균형 조정 호스트에 네트워크 어댑터를 하나 더 설치하는 것이 좋습니다. 이렇게 구성하면 한 네트워크 어댑터가 클러스터의 일부로 서버에 대한 네트워크 트래픽을 처리하고 다른 네트워크 어댑터는 호스트 간 통신에 사용됩니다.


컨버젼시(Convergence)

NLB내 모든 호스트들은 1초에 한 번씩 모든 호스트에 브로드케스트 패킷을 보냅니다. 이 패킷은 Heart-beat 신호로서 다른 호스트에게 자신의 상태를 알립니다.

만약 NLB내 특정 호스트에서 5초동안 5번의 신호를 연속해서 보내지 않으면 그 호스트는 오프라인 되었다고 판단하고, 새로운 Heart-beat가 감지되었을 경우 새로운 호스트가 추가 되었다고 판단이 되면 컨버젼시가 일어납니다.

그럴경우 NLB는 감지되는 감지되는 호스트들로 NLB를 다시 구성하게 됩니다. 이러한 작업은 보통 10초 정도에 끝나게 됩니다.

Heart-beat 에 관련값을 설정은 HKLM\System\CurrentControlSet\Service\WLBS\Parameters 에서 Heart-beat를 보내는 간격은 AliveMsgPeriod, 장애를 판단하는 Heart-beat는 AliveMsgTolerance 에서 변경이 가능합니다.


NLB구성(Configuration)



? IP 주소 매개 변수 : 이 주소는 가상 IP 주소이며 클러스터의 모든 호스트에 대해 동일하게 설정해야 합니다. 또한 TCP/IP 등록정보에서 위 가상IP를 추가해 줍니다.

? 네트워크 주소 : 02-BF-00-00-00-00 는 클러스터 IP주소를 16진수로 변경하여 호스트의 MAC주소를 설정합니다.

? 유니캐스트 : 모든 호스트에 설정되는 가상IP 주소는 모두 동일한 MAC 주소를 갖게 됩니다. 그러면 모든 클러스터 호스트들은 주 IP주소를 통해 같은 클라이언트 요청을 받게 됩니다.

ipconfig를 통해서 네트워크 어댑터의 MAC주소가 변경되어 있음을 확인할수 있습니다.
Physical Address ............ : 02-BF-0A-00-00-0A
IP Address .................. : 10.0.0.10
Subnet Mask ................. : 255.0.0.0
IP Address .................. : 10.0.0.80
Subnet Mask ................. : 255.0.0.0

이럴경우 문제점이 발생합니다.

첫째는 모든 호스트가 동일한 MAC 주소를 할당받기 때문에, 호스트간 패킷을 주고 받을수 없게 됩니다. 이에 대한 해결책은 별도의 네트워크 어댑터를 추가해서 Heart-beat와, 관리작업을 할 수 있습니다. 물론 각 이더넷 별로 기능이 나눠지므로 성능개선 효과도 있습니다.

두번째는 L2 스위치에 연결된 경우 동일한 MAC주소가 발견될 경우 MAC주소 등록이 실패하게 되며, 이로 통신이 불가능하게 됩니다. 해결방법은 다음 kb를 참고하시면 됩니다.

[계층 2 스위치에 연결된 WLBS 호스트를 위한 옵션 구성]
[스위치를 통해 가상 IP 주소에 네트워크 로드 균형 조정]

? 멀티캐스트 : 멀터캐스트는 클러스터IP주소의 MAC과 원래 IP주소의 MAC을 가지고 있어 호스트간 통신이 가능합니다. 또한 별도의 네트워크 어댑터를 추가하지 않아도 되는 장점이 있습니다. 다만, 라우터에서 멀티캐스트를 지원하는지 확인을 해봐야 하며, 지원하지 않는 다면 라우터에 정적ARP를 추가해 주어야 한다. Cisco 라우터가 이에 해당됩니다.



? 우선 순위(고유 호스트 ID) : 이 매개 변수는 각 호스트의 고유 ID를 지정합니다. 1 부터 32 까지 순위를 지정하며 현재 클러스터 구성원 중 우선 순위가 가장 낮은 호스트가 포트 규칙에 의해 처리되지 않는 클러스터 네트워크 트래픽을 모두 처리합니다.

? 전용 IP 주소 :클러스터와 관계없는 네트워크 트래픽에 사용되는 호스트의 고유 IP 주소를 지정합니다. 이 IP주소 또한 TCP/IP 등록정보의 IP주소에 등록되어 있는 주소이어야 합니다. 단일 네트워크 어댑터를 사용하여 클러스터 간 트래픽과 전용 IP 주소로의 다른 네트워크 트래픽을 모두 처리하는 경우에만 전용 IP 주소를 참조합니다.



주의 - 규칙 수 및 종류는 클러스터의 각 호스트에 대해 동일해야 합니다. 다른 호스트들과 규칙 수가 다른 호스트가 클러스터에 가입하려고 하면 클러스터의 구성원으로 받아들여지지 않습니다.
? 포트규칙-클러스터IP주소 : 포트 규칙이 적용될 클러스터 IP 주소를 지정합니다. 모두를 선택할 경우 모든 클러스터 호스트에 동일하게 포트 규칙이 적용됩니다.

? 포트규칙-포트범위 및 프로토콜 : 포트 규칙을 적용할 TCP/UDP 포트 범위를 지정합니다. 예로 HTTP의 경우 시작 80에서 끝 80을 TCP에 대해서 지정하면 됩니다.

? 포트규칙-필터링모드 :

다중호스트:클러스터 내의 여러 호스트가 관련 포트 규칙이 적용되는 네트워크 트래픽을 처리합니다.

선호도/없음 - 여러 클러스터 호스트가 같은 클라이언트 IP 주소로부터의 여러 연결을 처리할 수 있도록 지정합니다. 네트워크 로드 균형 조정에서 IP 조각을 올바르게 처리하려면 프로토콜 설정에서 UDP 또는 모두를 선택할 때 없음을 사용하면 안 됩니다.

선호도/단일 - 같은 클라이언트 IP 주소로부터의 여러 요청을 같은 클러스터 호스트로 보내도록 지정합니다. 이 옵션이 기본 선호도 설정입니다. 세션유지가 필요한경우 단일 또는 클래스 C 선호도를 지정해야 합니다.

선호도/클래스 - 네트워크 로드 균형 조정이 같은 TCP/IP 클래스 C 주소 범위로부터의 여러 요청을 같은 클러스터 호스트로 보내도록 지정합니다. 이 기능이 필요하지 않은 경우에는 단일 선호도를 사용하여 성능을 최대한 향상시킬 수 있습니다.

단일 또는 클래스 C 선호도를 사용하면 단일 클러스터 호스트가 같은 클라이언트 세션에 속한 모든 연결을 처리합니다. 이것은 클러스터 호스트에서 실행하는 서버 응용 프로그램이 "server cookies"와 같은 연결 간 세션 상태를 유지할 경우 중요합니다.

뿐만 아니라 백 엔드 데이터베이스에는 세션 상태가 유지되지 않는다는 점도 중요합니다. 백 엔드 데이터베이스에서는 여러 컴퓨터와 관련된 다양한 트랜잭션이 발생하기 때문입니다. 연결이 종료되면 세션 상태도 종료됩니다.

선호도를 사용할 수 없게 설정하면 같은 클라이언트로부터의 여러 연결을 여러 클러스터 호스트에서 동시에 처리하기 때문에 로드 균형 조정 성능이 향상됩니다. 성능을 최대한 향상시키려면 클라이언트 선호도가 필요하지 않은 경우 없음 옵션을 사용하여 이를 해제합니다. 그러나 네트워크 로드 균형 조정에서 IP 조각을 올바르게 처리하려면 프로토콜 설정에서 UDP 또는 모두를 선택할 경우에는 없음을 선택하면 안 됩니다.


로드가중치 - 로드 조정 네트워크 트래픽 중 해당 호스트가 처리해야 하는 상대적 용량을 지정합니다.

단일호스트:클러스터의 단일 호스트가 관련 포트 규칙이 적용되는 네트워크 트래픽을 지정된 처리 우선 순위에 따라 처리하도록 지정합니다. 이 값은 클러스터 호스트마다 고유한 값이 지정되어야 합니다.

이 포트 범위 사용 안함:관련 포트 규칙이 적용되는 모든 네트워크 트래픽이 차단되도록 지정합니다.



25-TechNetB_masthead_ltr.gif


가장 많이 본 글