SQL Server 이야기

Windows Server 2008에서 MSDTC를 클러스터 리소스로 생성하는 방법

늘푸르른나 2010. 4. 3. 00:15

Windows Server 2003까지는 클러스터에 단 하나의 MSDTC(MicroSoft Distributed Transaction Coordinator) 서비스만이 지원되었으며 MSDTC는 반드시 클러스터 리소스로 생성해야만 사용할 수 있었습니다(MSDTC Active/Passive Cluster). MSDTC는 주로 SQL Server에서 분산 트랜잭션(Distributed Transaction) 처리를 위해 사용하게 되는데, 하나의 클러스터에 여러 개의 SQL Server 인스턴스가 서비스되는 경우(예를 들어, 3Active-1Passive의 4-node 클러스터 환경) SQL Server 인스턴스들에 의해서 하나의 MSDTC가 공유되게 되고 분산  트랜잭션이 많이 사용되는 환경이라면 MSDTC에서 과부하가 발생하여 모든 SQL Server 인스턴스의 성능이 저하되는 현상이 발생하는 문제점이 있었습니다. 또한, 하나의 MSDTC에 의존하기 때문에 MSDTC 서비스에 장애가 발생한다면 모든 SQL Server 인스턴스가 영향을 받게 되는 문제점도 있었습니다. Windows Server 2003의 경우 최대 8-node 클러스터가 지원되는데 8대의 머신에서 단 하나의 MSDTC 서비스를 공유해서 사용해야 하는 상황을 생각해 보면 정말 심각하지 않을 수 없습니다.

 

Windows Server 2008에서는 이런 문제점이 보완되어 하나의 클러스터에 여러 개의 MSDTC 클러스터 리소스가 존재할 수 있으며 Local MSDTC(Nonclustered MSDTC)도 함께 존재할 수 있습니다(MSDTC Active/Active Cluster). 따라서, SQL Server 인스턴스별로 MSDTC 서비스를 지정하여 사용할 수 있으며 이를 통해 성능 향상과 문제 발생의 격리 효과를 가져올 수 있습니다.

 

MSDTC를 클러스터 리소스로 생성할 때에는 기본적으로 별도의 그룹에 생성하는 것을 권장합니다. 이는 MSDTC의 로그가 저장되는 별도의 디스크를 사용함으로써 성능 향상을 기대하고 MSDTC에 문제가 발생했을 때(재시작이나 그룹이동 등) SQL Server와 같은 다른 클러스터 리소스에 영향을 주지 않도록 하기 위한 것입니다.

 

Windows Server 2003 클러스터에서는 MSDTC용으로 별도의 디스크를 할당할 수 없는 경우에 별도의 그룹을 만들지 않고 쿼럼 디스크(Quorum Disk)가 속한 '클러스터 그룹'에 MSDTC 클러스터 리소스를 생성하는 사례가 많았습니다. 하지만, Windows Server 2008 클러스터에서는 쿼럼 디스크를 사용하도록 MSDTC 클러스터 리소스를 생성할 수 없습니다. 따라서, MSDTC 전용의 디스크를 할당하여 별도의 그룹에 MSDTC 클러스터 리소스를 생성하거나(권장하는 방법), SQL Server 그룹에 MSDTC 클러스터 리소스를 생성하는 방법을 사용해야 합니다.

 

그럼 우선 MSDTC 클러스터 리소스를 별도의 그룹에 생성하는 방법을 살펴 보도록 하겠습니다.

 

1. 장애 조치(Failover) 클러스터 관리에서 클러스터 이름을 확장하고 '서비스 및 응용 프로그램'을 마우스 우측 버튼으로 클릭한 다음 '서비스 또는 응용 프로그램 구성(S)'을 클릭합니다.

 

2. 다음과 같이 고가용성 마법사가 시작되면 '다음(N)'을 클릭합니다. 

 

3. 서비스 또는 응용 프로그램 선택 화면에서 'DTC(Distributed Transaction Coordinator)'를 선택하고 '다음(N)'을 클릭합니다. 

 

4. 클라이언트 액세스 지정 화면에서 '이름(A)' 항목에 MSDTC 클러스터 리소스의 네트워크 이름을 입력합니다. '주소' 항목에는 MSDTC 클러스터 리소스가 사용할 IP Address를 입력한 다음 '다음(N)'을 클릭합니다.

 

5. 저장소 선택 화면에서 MSDTC의 로그가 저장될 공유 디스크를 선택하고 '다음(N)'을 클릭합니다. 

 

6. MSDTC 클러스터 리소스를 생성하기 위해 필요한 3개의 클러스터 리소스인 디스크, 네트워크 이름, IP 주소에 대한 정보를 확인하고 '다음(N)'을 클릭하여 생성 작업을 시작합니다.

 

7. 다음과 같이 작업 진행률이 표시되면서 MSDTC 클러스터 리소스 생성 작업이 진행됩니다.

 

8. MSDTC 클러스터 리소스 생성 작업이 성공적으로 완료되면 '마침(F)'을 클릭하여 작업을 종료합니다.

 

9. 장애 조치(Failover) 클러스터 관리로부터 다음과 같이 MSDTC 클러스터 리소스가 생성되었음을 확인할 수 있습니다. MSDTC의 '네트워크 이름'으로 지정한 이름이 MSDTC가 소속된 클러스터 그룹의 이름으로도 사용되었음을 알 수 있습니다.

 

 

이번에는 MSDTC용으로 별도의 디스크를 할당할 수 없을 경우 SQL Server 그룹에 MSDTC 클러스터 리소스를 생성하는 방법을 살펴 보도록 하겠습니다.

 

1. 장애 조치(Failover) 클러스터 관리에서 클러스터 이름을 확장하고 서비스 및 응용 프로그램 아래의 'SQL Server (MSSQLSERVER)'(기본 인스턴스로 설치했을 때의 SQL Server 그룹 이름)를 마우스 우측 버튼으로 클릭합니다. 다음 화면과 같이 '리소스 추가(E)' - '추가 리소스(M)' - '2(2)-DTC(Distributed Transaction Coordinator) 추가'를 차례 대로 클릭합니다.

 

2. 다음과 같이 MSDTC 클러스터 리소스가 생성되었습니다. 하지만, 아직은 사용 가능한 상태가 아니며 추가적인 작업을 해줘야만 정상적으로 동작합니다. 

 

3. 생성된 MSDTC 클러스터 리소스를 마우스 우측 버튼으로 클릭한 다음 '속성(R)'을 클릭합니다.

 

4. MSDTC 속성 창에서 '종속성' 탭을 클릭합니다.

 

5. 다음과 같이 SQL Server에서 사용하는 '디스크'와 '네트워크 이름'에 대해서 'AND' 조건으로 종속성을 추가해 준 다음 '확인'을 클릭합니다.

 

6. 종속성 추가가 완료되었으면 다음과 같이 MSDTC 클러스터 리소스를 마우스 우측 버튼으로 클릭한 다음 '이 리소스를 온라인으로 전환(B)'를 클릭합니다.

 

7. 다음과 같이 MSDTC 클러스터 리소스가 '온라인' 상태가 되면 이제 MSDTC 서비스를 사용할 수 있는 상태가 된 것입니다.

 

 

MSDTC 클러스터 리소스를 별도의 그룹에 생성했거나 SQL Server 그룹에 생성했을 때 모두 클러스터 리소스를 생성한 것만으로 원격의 서버(웹 서버, 응용프로그램 서버 등)에서 MSDTC 통신이 가능한 상태가 되는 것은 아닙니다. Windows Server 2003에서 MSDTC는 기본적으로 원격에서 접근할 수 없고 로컬에서만 사용할 수 있도록 설정되어 있었는데 이는 Windows Server 2008에도 동일하게 적용됩니다. 따라서, 클러스터 리소스로 생성한 MSDTC에 원격에서 접근이 가능하도록 하려면 MSDTC의 보안 설정을 추가적으로 해줘야 하며 'Windows 방화벽'이 활성화되어 있다면 DTC 통신에 필요한 포트도 추가적으로 열어 주어야 합니다.

 

먼저 원격에서 접근이 가능하도록 MSDTC의 보안 설정을 하는 방법을 살펴 보도록 하겠습니다. 다음에서 설명하는 작업은 현재 MSDTC 클러스터 리소스가 온라인되어 있는 노드(Active Node)에서 한 차례만 수행해 주면 나머지 노드에 자동적으로 반영됩니다.

 

1. 관리 도구 - '구성 요소 서비스'를 실행하고 다음의 화면과 같이 '클러스터된 DTC' 아래에 있는 MSDTC 클러스터 리소스 이름을 마우스 우측 버튼으로 클릭한 다음 '속성(R)'을 클릭합니다. 참고적으로 Windows Server 2003에서 보던 것과는 다르게 '로컬 DTC'와 '클러스터된 DTC' 항목이 구분되어 표시됨을 알 수 있습니다.

 

2. MSDTC 속성 창에서 '보안' 탭을 클릭한 다음, 다음과 같이 '네트워크 DTC 액세스(D)', '인바운드 허용(I)', '아웃바운드 허용(W)'을 체크하고 '인증 필요 없음'을 선택한 다음 '확인'을 클릭합니다.

 

3. 변경된 보안 설정이 적용되려면 MSDTC 서비스가 재시작되어야 합니다. 다음과 같이 MSDTC 서비스의 재시작을 알리는 메시지가 표시되면 '예(Y)'를 클릭하여 MSDTC 서비스가 재시작되도록 합니다.

 

 

Windows Server 2008에 기본으로 활성화되어 있는 'Windows 방화벽'을 비활성화하지 않고 사용한다면 다음과 같이 DTC 통신이 허용되도록 설정해 줍니다('Windows 방화벽'을 비활성화해 놓았다면 필요하지 않은 작업입니다). 다음에 설명하는 작업은 클러스터에 참여하는 모든 노드에서 각각 수행해 줘야 합니다.

 

1. 제어판 - 'Windows 방화벽'을 실행합니다. 다음의 화면에서 Windows 방화벽이 활성화 되어 있는지 여부를 확인해 볼 수 있습니다. 'Windows 방화벽'이 활성화 되어 있음을 확인하고 '설정 변경' 링크를 클릭합니다.

 

2. Windows 방화벽 설정 화면에서 '예외' 탭을 클릭합니다. 

 

3. 다음과 같이 'DTC(Distributed Transaction Coordinator)' 항목을 체크한 다음 '확인'을 클릭합니다. 이로써 원격 머신과의 DTC 통신이 가능한 상태로 설정됩니다(시스템 재시작이 필요치 않습니다).

 

 

Windows Server 2008에서는 Local MSDTC를 포함하여 여러 개의 MSDTC 클러스터 리소스를 생성할 수 있다고 했습니다. 그렇다면 여러 개의 MSDTC 서비스 중에서 어떤 것이 실제로 분산 트랜잭션 처리를 위해 사용될까요? SQL Server 인스턴스가 여러 개 있을 경우 각각의 SQL Server 인스턴스가 사용하는 MSDTC 서비스를 지정할 수 있는 방법이 있을까요? 지금부터 이 주제에 대해서 살펴 보도록 하겠습니다.

 

Windows Server 2008 클러스터 환경에서 MSDTC 클러스터 리소스를 생성하지 않으면 Local MSDTC가 사용이 됩니다. 즉, SQL 가상 서버(클러스터로 설치된 SQL Server)에서 분산 트랜잭션을 시작하면 Local MSDTC가 사용됩니다. 하지만, 원격 서버에서 분산 트랜잭션을 시작하면(예를 들어, 웹 서버에서 분산 트랜잭션을 시작하는 경우로 일반적인 경우임) SQL 가상 서버가 클러스터 리소스이기 때문에 클러스터 리소스로 생성된 MSDTC 서비스를 찾게 되며 분산 트랜잭션은 실패하게 됩니다. 따라서, 원격 서버(웹 서버, 응용프로그램 서버 등)와 SQL 가상 서버간 분산 트랜잭션이 성공적으로 처리되려면 반드시 MSDTC 클러스터 리소스를 생성해 주어야 합니다.

 

MSDTC 클러스터 리소스를 하나만 생성했을 경우에는 당연히 분산 트랜잭션 처리를 위해 해당 클러스터 리소스가 사용될 것이기 때문에 단순합니다. 하지만, MSDTC 클러스터 리소스를 2개 이상 생성했을 경우에는 좀 복잡해집니다.

 

다음의 화면과 같이 'vlusterDtc', 'vclusterDtc1'의 2개의 MSDTC 클러스터 리소스를 각각 별도의 그룹에 생성한 경우 SQL 가상 서버에서는 어떤 MSDTC 클러스터 리소스를 사용할까요?  

 

상기와 같은 상태에서 SQL 가상 서버는 '클러스터 기본 코디네이터'로 지정된 MSDTC를 사용합니다. '클러스터 기본 코디네이터는 '구성 요소 서비스'에서 '내 컴퓨터'의 '속성'을 실행하고 내 컴퓨터 속성 화면에서 'MSDTC' 탭을 클릭하면 다음과 같이 확인할 수 있습니다. 다음의 화면에서는 vclusterDtc라는 이름의 MSDTC 클러스터 리소스가 클러스터 기본 코디네이터로 지정되어 있음을 알 수 있습니다. 특별히 변경하지 않는 한 처음으로 생성된 MSDTC 클러스터 리소스가 클러스터 기본 코디네이터로 지정됩니다. 물론 다음의 화면에서 클러스터 기본 코디네이터를 변경할 수도 있습니다.

 

클러스터 기본 코디네이터로 지정된 MSDTC는 SQL 가상 서버 뿐만 아니라 클러스터 노드에서 동작하는 모든 응용프로그램에 의해서 사용됩니다. 이는 마치 Windows Server 2003 클러스터에서 단 하나의 MSDTC만이 존재했을 때의 상황과 동일하다고 이해하면 됩니다. 그렇다면 여러 개의 MSDTC 클러스터 리소스를 만든 의미가 없어진다고 생각할 수 있는데, Windows Server 2008 클러스터에서는 다음과 같이 두 가지의 방법으로 응용프로그램별로 특정 MSDTC가 사용되도록 지정할 수 있는 방법을 제공하므로 그런 우려는 하지 않아도 됩니다.

 

1. 클러스터 리소스로 등록된 응용프로그램의 경우(대표적인 경우가 SQL Server) 해당 응용프로그램과 동일한 클러스터 그룹 내에 존재하는 MSDTC 클러스터 리소스가 있으면 해당 MSDTC가 사용됩니다.

 

2. msdtc.exe 명령을 이용하여 응용프로그램별로 사용할 MSDTC를 지정할 수 있습니다. msdtc.exe 명령 구문은 다음과 같습니다.

매핑(mapping) 정보 설정:
msdtc.exe -tmMappingSet -name <mapping name>
[-exe <pathname> | -service <full service name> | -complusappID  <app ID>]

[-local|-clusterResourceName <resource name>]

 

특정 매핑 정보 확인:
msdtc.exe -tmMappingView -name <mapping name>
 
모든 매핑 정보 확인:
msdtc.exe -tmMappingView *
 
특정 매핑 정보 제거:
msdtc.exe -tmMappingClear -name <mapping name>
 
모든 매핑 정보 제거:
msdtc.exe -tmMappingClear * 

예를 들어, 기본 인스턴스로 SQL Server 클러스터를 설치했을 때 SQL 가상 서버에서 'vclusterDtc1'이라는 이름의 MSDTC 클러스터 리소스를 사용하게 하려면 다음과 같은 명령을 실행합니다.

msdtc.exe -tmMappingSet -name vsqlMapping -service MSSQLSERVER -clusterResourceName vclusterDtc1 

 

그럼, SQL Server 그룹에는 생성된 MSDTC 클러스터 리소스가 없으면서 2개의 MSDTC 클러스터 리소스 'vclusterDtc', 'vclusterDtc1'이 별도의 그룹에 생성되어 있고 클러스터 기본 코디네이터로 'vclusterDtc'가 지정된 상태에서 'vclusterDtc1'을 SQL 가상 서버에서 사용하도록 설정하는 방법을 살펴 보도록 하겠습니다. 이 작업은 클러스터 노드 중에서 하나의 노드에서만 실행해 주면 됩니다.

 

1. '명령 프롬프트'를 실행한 다음 다음과 같은 명령을 실행하여 SQL 가상 서버에서 'vclusterDtc1'라는 이름의 MSDTC 클러스터 리소스를 사용하도록 합니다. 

 

2.  상기의 명령 실행후 다음과 같이 추가적인 창이 실행되면 그냥 'Enter' 키를 입력합니다. 'Enter' 키 입력과 함께 명령 실행이 완료되고 추가적인 창도 닫힙니다.

 

3. 정확하게 설정되었는지 여부를 확인해 보기 위해 명령 프롬프트에서 다음의 명령을 실행합니다. 

 

4. 다음과 같이 추가적인 창이 열리면서 설정된 내용이 표시됩니다. 정상적으로 설정이 되었음을 확인하고 'Enter' 키를 입력하면 추가적인 창이 닫힙니다. 

 

5. msdtc.exe 명령을 통해 설정된 내용은 다음과 같이 레지스트리에 저장됩니다. 

 

 

지정한 MSDTC가 사용되는지 여부는 어떻게 확인해 볼 수 있을까요? 실제 웹 서버나 응용프로그램 서버에서 SQL 가상 서버에 대해 분산 트랜잭션 테스트를 진행하고 그 결과는 '구성 요소 서비스'를 통해 확인해 볼 수 있습니다. 만약, 실제 웹 페이지나 응용프로그램을 실행하여 테스트해 보기 곤란하다면 DTCTester라는 툴을 사용하여 테스트 해 볼 수 있습니다. 그럼 DTCTester를 이용하여 분산 트랜잭션 테스트를 진행하는 방법을 살펴 보도록 하겠습니다.

 

1. SQL 가상 서버에 네트워크로 연결된 머신(PC여도 관계없음)에서 DTCTester툴을 다운로드 받아 압축을 해제합니다. DTCTester툴은 http://support.microsoft.com/kb/293799/en-us로부터 다운로드 받을 수 있습니다.

 

2. 관리 도구 - '데이터 원본(ODBC)'를 실행하여 SQL 가상 서버에 대한 '시스템 DSN'을 생성합니다. 

 

3. 명령 프롬프트를 실행하고 DTCTester툴의 압축이 해제된 폴더로 이동하여 다음과 같이 명령을 실행합니다(명령 구문은 'dtctester <DSN 이름> <SQL Login ID> <Password>'임). 만약 DTC 통신에 문제가 있으면 다음의 화면과 같이 오류가 발생하면서 실패하게 됩니다. 이렇게 오류가 발생할 경우에는 클러스터에서 MSDTC 클러스터 리소스에 대해 보안 설정이 적절하게 되어 있는지, Windows 방화벽 설정은 제대로 되어 있는지 여부를 우선 확인해 보고 이상이 없다면 테스트에 사용한 머신(DTCTester를 실행한 머신)의 MSDTC 보안 설정과 Windows 방화벽 설정 정보를 확인해 봐야 합니다(분산 트랜잭션이 성공하기 위해서는 분산 트랜잭션에 참여하는 각 머신의 MSDTC간 양방향 통신이 가능해야 합니다). 

DTCTester가 성공적으로 실행되었을 경우에는 다음의 화면과 같으며 'Press enter to commit transaction.' 메시지가 표시되었을 때 'Enter' 키를 입력해 주면 최종적으로 분산 트랜잭션이 커밋(Commit)되고 DTCTester의 실행이 완료됩니다. 

 

4. MSDTC 클러스터 리소스가 온라인되어 있는 클러스터 노드(Active Node)에서 관리 도구 - '구성 요소 서비스'를 실행하고 다음과 같이 트랜잭션 통계 정보를 확인해 봅니다(Passive Node에서는 정보를 확인할 수 없습니다). 다음의 화면에서 'vclusterdtc1'이라는 이름의 MSDTC 클러스터 리소스가 한 차례 사용되었으며 분산 트랜잭션이 최종적으로 커밋되었음을 알 수 있습니다. 따라서, 앞에서 msdtc.exe 명령을 이용하여 SQL 가상 서버에서 'vclusteredtc1' MSDTC 클러스터 리소스를 사용하도록 설정한 것이 정확하게 효과를 나타냈음을 판단할 수 있습니다. 

반면에 클러스터 기본 코디네이터로 설정되어 있던 'vclusterdtc'의 트랜잭션 통계 정보를 확인해 보면 다음과 같으며 사용된 적이 없음을 알 수 있습니다. 

 

분산 트랜잭션 테스트시 SQL 가상 서버에서 특정 MSDTC를 사용하도록 설정했음에도 불구하고 그 효과가 즉각 나타나지 않는 것처럼 보일 수도 있습니다. 이런 현상은 설정을 변경하기 전에 MSDTC와 SQL 가상 서버간에 맺어져 있었던 세션이 남아 있을 경우에 발생할 수 있는데 기존에 사용되던 MSDTC 서비스를 재시작('장애 조치(Failover) 클러스터 관리'에서 오프라인했다가 온라인)하거나 SQL Server 리소스를 재시작해줌으로써 즉시 효과가 나타나도록 할 수 있습니다.

 

3-node 클러스터(2 Active/1 Passive) 환경에서 2개의 MSDTC 클러스터 리소스를 각각 별도의 그룹에 생성하고 msdtc.exe 명령을 이용하여 SQL Server 인스턴스별로 각각의 MSDTC 클러스터 리소스를 지정했을 경우를 생각해 봅시다. 당연한 얘기지만 정상적일 경우, SQL Server 그룹과 매핑된 MSDTC 그룹은 동일한 노드에서 온라인이 되도록 할 것입니다. 그런데, SQL Server 그룹이 Passive 노드로 그룹 이동(Failover)되는 경우가 발생하면 매핑된 MSDTC 그룹과 SQL Server 그룹이 서로 다른 노드에서 온라인되는 상황이 발생하게 됩니다. MSDTC와 이를 사용하는 SQL Server가 서로 다른 노드에 있게 되면 동일 노드에 있는 것보다 당연히 네트워크 지연이 발생하게 되며 성능상 좋지 않게 됩니다. 물론 분산 트랜잭션을 많이 사용하는 환경이 아니라면 크게 문제가 되지 않을 수도 있으나 그 반대의 환경이라면 이것조차 고려의 대상이 될 수 있습니다.

 

클러스터 그룹은 독립적인 그룹 이동(Failover)의 단위라는 클러스터의 특성으로 인해 종속성을 설정하는 방법 등을 사용하여 SQL Server 그룹과 MSDTC 그룹이 항상 함께 그룹 이동을 하도록 설정할 수 있는 방법은 없습니다. 그럼 SQL Server와 매핑된 MSDTC가 항상 같은 노드에서 서비스되도록 하려면 어떻게 해야 할까요? 유일한 방법은 MSDTC 클러스터 리소스를 SQL Server 그룹으로 옮기는 것입니다. 별도의 그룹에 생성되어 있던 MSDTC 클러스터 리소스를 SQL Server 그룹으로 옮기게 되면 MSDTC와 종속성이 있는 디스크, 네트워크 이름, IP 주소가 함께 이동하게 됩니다. 이런 방법을 사용하게 되면 MSDTC 클러스터 리소스가 실패하거나 재시작될 때에는 SQL Server에 영향을 미치지 않으나(별도의 디스크와 네트워크 이름을 사용하므로) 그룹 이동(Failover)이 발생할 때에는 SQL Server도 함께 그룹 이동이 되는 문제를 유발할 수 있는 단점이 있습니다. 그럼에도 불구하고 성능이 중요하게 고려되는 환경에서는 사용할 수 있는 방법이므로 한번 살펴 보도록 하겠습니다.

 

1. 'vclusterDtc1' MSDTC 클러스터 리소스를 SQL Server 그룹으로 이돌하기 위해 다음의 화면과 같이 해당 MSDTC 클러스터 리소스를 마우스 우측 버튼으로 클릭하고 '기타 작업(O)'을 선택한 다음 '이 리소스를 다른 서비스 또는 응용 프로그램으로 이동(M)'을 클릭합니다. 

 

2. 서비스 또는 응용 프로그램 선택 창에서 MSDTC 클러스터 리소스가 위치할 SQL Server 그룹을 선택하고 '확인'을 클릭합니다. 

 

3. 작업 확인 창에서 다음과 같이 첫 번째 항목을 클릭하여 이동 작업을 시작합니다.

 

4. 이동 작업이 완료되면 다음과 같이 기존의 MSDTC 클러스터 그룹에는 더 이상 리소스가 존재하지 않는 상태가 됩니다. 빈 클러스터 그룹은 마우스 우측 버튼을 클릭하고 '삭제'를 클릭함으로써 제거할 수 있습니다.

 

5. 이동 작업 완료 후 SQL Server 그룹의 상태를 보면 다음과 같이 MSDTC 클러스터 리소스와 그에 종속된 리소스들이 모두 이동되어 있음을 확인할 수 있습니다.

 

 

끝으로, 다음과 같이 2개의 MSDTC 클러스터 리소스를 별도의 그룹에 생성했을 때의 서비스 상태를 살펴 보도록 하겠습니다.  

 

 

관리 도구 - '서비스'를 실행하여 MSDTC 서비스를 살펴 보면 다음과 같이 3개의 MSDTC 서비스가 시작되어 있는 상태임을 알 수 있으며 Local MSDTC를 제외한 2개의 MSDTC는 이름 뒤에 GUID(Globally Unique IDentifier)가 붙어 있음을 알 수 있습니다. 이렇듯 클러스터 리소스로 생성된 MSDTC 서비스 이름에는 GUID가 붙게 되며 Passive 노드에서는 이런 MSDTC 서비스 이름이 나타나지 않습니다.

 

레지스트리를 확인해 보면 MSDTC 서비스 이름에 붙은 GUID가 다음과 같이 클러스터 리소스에 할당되는 GUID임을 알 수 있습니다.