Cluster Log 분석

Microsoft/Cluster(Microsoft) 2015.02.23 01:18 Posted by smileyoon

클러스터 로그의 경우 Windows Server 2003의 경우는 Cluster.log 텍스트 형식으로 저장되며, 필요시 로그를 바로 열어서 확인할 있습니다. 하지만 Windows Server 2008 버전 이상부터 이전에 텍스트 형식으로 저장되어진 로그가 ETL 형식으로 변경되었습니다. 따라서 해당 로그를 텍스트 형태로 보려면 아래 명령어를 실행하여 확인할 수 있습니다.

 

/* C:\temp 위치에 노드의 클러스터 로그를 생성하는 명령어 */
/*
관리자 권한으로  CMD 창을 실행한 명령어를 실행해 주시기 바랍니다. */

C:\>Cluster log /g /copy:"c:\temp"

 

 

System Error Codes (1000-1299)

https://msdn.microsoft.com/en-us/library/windows/desktop/ms681383(v=vs.85).aspx

 

The meaning of state codes in the Cluster log

http://support.microsoft.com/kb/286052/en-us

 

Cluster Log GMT 시간을 기준으로 기록됩니다. 한국시각은 GMT +9 이므 Cluster Log 표시된 시간에 +9

로그를 확인해 보시길 바랍니다.

 

Cluster Log 분석할 System, Application Event Log 같이 확인하시면 좋습니다.

 

GMT 시간은 아래 사이트에서 쉽게 확인하실 있습니다.

Greenwich Mean Time (GMT)

http://wwp.greenwichmeantime.com

Cluster를 설치하거나 운영하다보면 다양한 오류를 접하실 수 있습니다.

그 중에 한가지 케이스이며, 이번 아티클을 통해 가능한 소유자(Possible Owner) 및 기본 설정 소유자(Preferred Owner)

에 대한 개념을 이해하실 수 있습니다.


SQL Server Cluster를 구성하였습니다.

어디서 문제가 발생했는지 알 수는 없지만 Failover Test시 아래와 같은 오류가 발생하였습니다.


Failover 시 실패난 리소스 그룹의 리소스들을 일일히 확인하여 가능한 소유자가 정상적으로 설정되어져 있는지 확인해 보았습니다.

확인해 보니, SQL Server 리소스의 가능한 소유자에서 node2가 누락되어져 있었습니다.


아래와 같이 커맨드로 누락된 노드를 가능한 소유자로 등록하려고 하였지만 또 실패가 발생합니다.

--가능한 소유자 추가 명령어

cluster res "resource name" /addowner:<node_name>


확인해 보니 문제가 되고 있는 node2에서 아래와 같은 DLL이 없어 발생하였습니다.


양쪽 노드에서 아래와 같은 위치로 이동하여 누락된 파일이 없는지 확인 후 있다면 복사해 주시기 바랍니다.

  • 누락된 파일: The SQL Server DLL (SQSRVRES.DLL) & SQL Server Agent (SQAGTRES.DLL)  
  • 위치: c:\Windows\systems32\


다시 한번 가능한 소유자를 추가한 후 정상 failover 되는지 확인해 보시기 바랍니다


  • Possible Owner - possible owner에 노드 정보가 없다면 해당 노드에는 failover 되지 않음.
  • Preferred Owner - failover 시 우선순위를 정하는 항목


오늘도 화이팅하세요!!

테스트로 구축해 놓은 클러스터 서버에서 SQL, DTC, Cluster Vip(Virtual IP)가 온라인 되지 않은 현상이 있었습니다.

여러가지 원인일 수 있었지만 아래와 같은 방법으로 해결했습니다.


Public용 NIC 속성을 통해 아래와 같은 설정을 확인할 수 있습니다.

기본값은 아래 [클라이언트가 이 네트워크를 통해 연결할 수 있음] 설정이 체크되어 있습니다.

온라인이 안되는 상황에서는 해당 설정이 체크되지 않았습니다. 체크 후 다시 온라인 시도해 보시기 바랍니다. 


이벤트 로그 복제 관리자 (Event Log Replication Manager)

=>노드에서 발생한 오류 정보는 로컬의 이벤트 로그에만 기록되는 것이 아니라 서버 클러스터를 구성하는 모든 노드로 복제하여 기록된다.

=>문제 발생 시 정상적인 노드에서 오류를 확인할 수 있다.


백업/복원 관리자(Backup/Restore Manager)

=>백업 프로그램에 의해 쿼럼 디스크에 있는 클러스터 구성 정보 데이터베이스를 백업하고 향후 복원하는 작업을 담당하는 구성 모듈이다.


이상 클러스터 서비스 내부의 구성 모듈들에 대해 알아 봤습니다.

노드 관리자 (Node Manager)

=>약 1.2초 간격으로 Heartbeat을 전송하여 클러스터를 구성하는 노드의 정상 동작 여부를 체크하는 기능을 수행합니다.

=>자신이 현재 정상적으로 동작한다는 것을 서로 서로에게 알린다.

=>상대방 노드로부터  일정 시간 이상(약 6초 이상) Heartbeat이 전송되지 않으면 노드 관리자는 해당 노드에 오류가 발생했다고 생각한다. 이를 발견한 노드의 노드 관리자는 멀티캐스트 메시지를 전송하여 각 노드들이 보유하고 있는 현재 동작 중인 클러스터 노드 목록을 갱신하도록 하는데 이를 '재그룹 이벤트'라고 합니다.

=>노드 관리자는 크게 2가지 일을 합니다. 첫 번째 Heartbeat을 통한 노드 오류 감지, 두 번째는 특정 노드의 오류를 감지하였거나 노드가 재 시작 했을 경우 재그룹 이벤트를 통해 현재 동작 중인 노드 정보 목록을 갱신하는 일입니다.


구성원 관리자 (Membership Manager)

=>현 시점에서 동작 중인 클러스터 노드의 목록에 대한 정보를 저장하고, 일관성을 유지하는 일을 합니다.

=>노드 관리자에 의해 재 그룹 이벤트가 발생하면 모든 노드의 구성원 관리자는 오류가 발생한 노드를 클러스터 노드 목록에서 제거한다. 반대로 노드가 다시 시작하면 그 노드를 클러스터 노드 목록에 추가합니다.


장애 조치 관리자 (Failover Manager)

=>장애 조치와 관련된 모든 작업을 담당합니다.

=>노드 오류나 리소스 오류가 발생했을 경우 어떤 노드로 장애 조치를 통해 가상 서버를 재 시작할 것인지 결정합니다.



클러스터 서비스는 총 9개의 서로 다른 기능을 담당하는 구성 모듈로 되어 있습니다.

담당하는 역할에 따라 다음과 같이 세 가지 분류로 나누어질 수 있습니다.


  • 구성 정보 및 동기화 - 데이터베이스 관리자, 검사점 관리자, 글로벌 업데이트 관리자, 로그 관리자
  • 노드 및 리소스 관리 - 노드 관리자, 구성원 관리자, 장애 조치 관리자
  • 기타 부가 기능 - 이벤트 로그 복제 관리자, 백업/복원 관리자


이번 시간에는 서버 클러스터 구성 정보 및 동기화를 담당하는 구성 모듈에 대해 알아보도록 하겠습니다.


데이터베이스 관리자 (Database Manager)

=>클러스터 구성 정보 데이터베이스를 관리하는 핵심 구성 모듈

=>클러스터 로그에는 DM으로 표시됨.

=>구성 정보 변경 시 동작 방식 

1. 특정 노드에서 관리자에 의해 구성 정보가 변경되면, 먼저 DM(데이터베이스 관리자)에 의해 변경이 발생한 노드의 

레지스트리에 변경된 정보가 저장된다.

2. 변경된 정보는 로그 관리자에 의해 쿼럼 디스크의 구성 정보 데이터베이스에 저장된다.

3. 글로벌 업데이트 관리자에 의해 서버 클러스터에서 현재 동작 중인 노드들에게 변경된 구성 정보가 전달되어 동기화 된다. 


!!중요

변경된 정보를 쿼럼 디스크에 저장하는 이유는 3번 과정에서 정상 동기화하지 못하는 상황에 노드가 있을 경우

다시 시작 시 쿼럼 디스크의 구성 정보 데이터베이스를 참조하여 동기화 할 수 있게 하기 위해서 입니다.


검사점 관리자 (Checkpoint Manager)

=>일반적으로 응용 프로그램이나 리소스는 시작하고 동작하는데 필요한 정보를 레지스트리에 저장한다.

=>레지스트리를 모니터링하고, 변경이 발생하면 쿼럼 디스크의 레지스트리 검사점 파일에 변경된 내용을 저장한다.

=>동작 방식

  • 리소스가 온라인 상태에서 레지스트리 관련 정보가 변경되면 검사점 관리자에 의해 변경 사항을 쿼럼 디스크의 레지스트리 검사점 파일에 저장한다.
  • 리소스가 오프라인 상태가 되면서 변경된 레지스트리 정보도 역시 쿼럼 디스크의 레지스트리 검사점 파일에 저장된다.
  • 리소스를 포함하는 리소스 그룹이 다른 노드에서 재 시작되면, 리소스가 온라인 되기 전에 먼저 쿼럼 디스크에 저장되어 있는 해당 리소스의 레지스트리 검사점 파일을 이용해 다른 노드에서 변경된 레지스트리 정보를 복원한다.
  • 리소스가 삭제되면 쿼럼 디스크에 저장된 레지스트리 검사점 파일을 삭제한다.

로그 관리자(Log Manager)
=>관리자에 의해 클러스터 구성 정보가 변경되면 쿼럼 디스크의 클러스터 구서 정보 데이터베이스에 변경 정보를 저장하는 역할을 담당한다.

글로벌 업데이트 관리자(Global Update Manager)
=>구성 정보가 변경되었을 때 현재 동작 중인 모든 노드에 변경된 구성 정보를 동기화시키는 작업을 담당한다.