Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  MSDTC 무엇에 쓰는 물건인고?? 
작성일시 : 2008. 8. 11. 10:51 | 분류 : Windows Server/ETC

누구나 한번쯤은 들어봤을 MSDTC...
과연 무엇에 쓰는 물건일까?
클러스터 구성할 때 함께 구성하니깐 혹시... 클러스터의 필수 리소스 정도??

답은 땡!

아 글을 쓸려니깐 좀 답답하긴 하다...
하지만 매번 들어왔던 질문이니 만큼 한번 썰을 풀어 봐야 겠다.

Windows 진영의 미들웨어는 Com+, 와 Dcom 이다.
여기서 IIS 가 미들웨어라고 하면 정말 정말 곤란하다.

이 미들웨어라는 녀석들의 가장 큰 역활이 무엇이냐?
업무의 원자성을 보장하는 거다.
그리고 업무 원자성의 단위가 바로! "Database의 Transaction" 이다.
자바 진영에서는 지금은 어떻게 됐는지 모르지만 각각의 미들웨어들이 케시를 지니고 이런 트렌젝션을 관리 했던 것으로 알고 있다. 하지만 Windows 진영에서는 이 "Transaction" 을 Database에 온통 맞겨 버렸다.

쉽게 말해서 프로그램이 실행 될때... 로컬 컴퓨터의 DTC와 Database의 DTC가 서로 통신하면서 프로그램의 하나의 실행 단위를 마치 DB의 Transaction 처럼 보장해주는 것이다. 어차피 프로그렘 (Application)이야 Data 가공만을 담당하고 실제로는 Database에 가공된 데이터가 저장되기 때문에 이 Database에 저장되는 데이터의 Transaction 만 잘 관리하면 데이터의 원자성이 아주 잘 보전 된다는 애기다.!

자 이제 요 잘난 MSDTC 한번 열어서 구경이라도 하자!

 
[그림 1] DTC 관리 콘솔 실행]


[그림 2] DTC 관리 콘솔]

실제 DTC의 설정 자체는 그닥 별다른게 없다.
그저 Front End Tier 와 Back End Tier 사이에 DTC만 구성되어 있어면 끝이라는 점...
다만 이러한 DTC들이 통신을 하기 위해서는 RPC 통신을 위한 포트들 (135, 1024~65000) 및 SQL 이 서비스되는 포트 (1433) 이 열려 있어야 하고, Netbios Name을 통해 Ping이 되어야 한다.
위의 2가지만 충족된다면 DTC에는 그닥 설정한 것들이 별로 없다.

그리고 하나더 추가 하자면 바로 보안 설정이다.
이 보안 설정에 따라 DTC의 수행 범위가 조정되게 된다.

 

1. 먼저 네트워크 DTC 엑세스

Application Server의 분산 트렌젝션 요청을 처리 하기 위해서는 네트워크 DTC 엑세스가 설정되어 있어야 한다.
해당 설정이 없을 경우 DTC는 자신의 로컬 Transaction만 처리하게 된다.
밑의 클라이언트 및 관리는 그닥 필요 없다. 원격 클라이언트 허용이란 원격지 컴퓨터의 DTC를 이용한다는 것이고, 원격 관리 허용은 원격지 컴퓨터가 로컬 DTC의 여러 설정을 변경한다는 점인데... 이런 일들의 위해서는 Active Directory를 통해 상호 인증 받은 경우 (Computer 계정이 인증을 받아야 함으로)에 가능은 하지만 일반적으로 저런 설정을 사용하는 경우는 태어나 눈 씻고 찾아봐도 한번도 없었다.

2. 중요한 것은 바로 트렌젝션 관리자 통신이다.

내용은 위의 옵션을 보면 알 수 있듯이 간단하다.
인바운드는 외부에서 시작된 트렌젝션이 로컬 머신과 함께 수행 될 수 있도록 허용할 것인지 여부
아웃바운드는 내부에서 외부로 영향을 미치는 분산 트렌젝션을 허용할 것인지에 대한 허용 여부 이다.
당신의 머리속에서 드는 생각과 같이 모르면 둘다 열어주면 된다...
( 아... 이런 염치없는 나의 손가락.... 난 항상 그래왔다... 물론 인증 필요 없음 까지 클릭하곤 했지... 다시 한번 말하지만 Active Directory를 사용하지 않는 이상 Computer 인증은 불가능 하다. )

3. Unix 계열과의 통신을 위한 XA 트랜젝션의 허용도 염두에 두도록 하자.

 

먼저 이 XA는 SQL Server의 OLE에 준하는 Unix 계열의 분산 트렌젝션 프로토콜이다.
Unix 플랫폼에서 수행되는 DB (오라클, DB2)와 트렌젠셕을 수행하는 경우 허용해 주자.

4. 마지막으로 DTC의 서비스 계정이다.

일반적으로 위의 설정을 조정할 필요는 없다.
다만 MSCS 클러스터로 구성된 환경에서 Registry에서 권한이 없어 가끔 문제가 되는 경우가 있다.

에러를 보면 문제르 확인 할 수 있는데 Fail over 된 순간 해당 node에서 MSDTC 리소스에 대한 Registry를 권한이 없기 때문에 구성 할 수 없다는 것이다.
원본 MSDTC 이벤트 ID 4394

그런 경우에는 아래 그림에서 보는 것처럼 해당 Registry Key Full 권한을 추가하자.
HKLM\Cluster\Resources 밑에 보면 16진수의 집합으로 된 키들이 보기에 된다.
여기서 확인하다 보면 내용에 MSDTC라는 녀석들이 있는 리소스가 보이는 이 리소스에 대한 권한을 부여 하면 된다.

이렇게 해서 본인이 알고 있는 모든 MSDTC에 대한 지식을 정리해 봤다.
보통 서버를 관리하면서 모르는 문제에 부딪쳐야 하는 경우가 많다.
그저 필요한 부분만 대충 구성하고 이게 무엇에 쓰는 설정인지 어떻게 구성해야 하는지에 대한 고민 조차도 없이... 그 순간이 지나면 잊혀져 버린다.

하지만 돌아가 보자...

당신이 처음 일을 시작했을 때 그 열정으로...
나에게 필요 없지만 무엇인가에 대한 지식을 습득했다는 점 하나만으로도 충분히 즐겁지 않은가? 당신?

PS Windows 2008에서는 로깅 등의 설정을 한 화면에 할 수있게 되어 편해졌다... 만쇄~~~

|