반응형

이전 포스팅

2024.12.31 - [Exchange] - Exchange Server 2019. Deployment (2): 구성 (CU14, Nov24SUv2 / Windows Server 2022)

 

예전에도 DAG 구성을 Exchange Server 2013 기준으로 작성한 적이 있습니다.

2021.12.25 - [Exchange] - Exchange Server. DAG 구성(IPLess 방식)

 

이번에 Youtube 영상을 제작을 진행하면서 블로그 글도 작성하게 되었습니다.

다가올 Subscription Edition Upgrade 관련되어 테스트 환경 구성시 필요할 것이라 생각하여 오랜만에 다시 구성해

보았습니다.

 

DAG 한국에서는 이중화라는 표현으로도 많이 사용됩니다.

Exchange Server에서 DB 문제가 발생하였을 , 자동 장애 조치를 제공하는 기능입니다. 자세히 들어가면 여러가지 상황 설명이 필요하지만, 지금은 단순하게 구성하는 방향이기 때문에 깊게 설명하지는 않겠습니다.

 

이전 글에서의 환경과 스펙은 같으며, Exchange Server 3대로 구성하였습니다.

그리고 최종 구성도는 다음과 같습니다.

 

이번에도 구성은 IP-Less 방식으로 진행합니다.

Database availability groups | Microsoft Learn

 

IP-Less 방식은 다음과 같은 특징을 가지고 있습니다.

- 클러스터/DAG에 IP 주소가 할당되지 않으므로 클러스터 핵심 리소스 그룹에 IP 주소 리소스가 없습니다.
- 클러스터에 네트워크 이름이 할당되지 않으므로 클러스터 핵심 리소스 그룹에 네트워크 이름 리소스가 없습니다. - 클러스터/DAG의 이름이 DNS에 등록되지 않으며 네트워크에서 확인할 수 없습니다.
- CNO(클러스터 이름 개체)가 Active Directory에서 만들어지지 않습니다.
- 장애 조치 클러스터 관리 도구를 사용하여 클러스터를 관리할 수 없습니다.
- 클러스터는 Windows PowerShell을 사용하여 관리해야 하며 개별 클러스터 구성원에 대해 PowerShell cmdlet을 실행해야 합니다.

 

GPT에게 요청하여 기존방식과 IP Less 방식을 비교해 달라고 하였으며, 아래와 같이 표로 정리하였습니다.

항목 기존 DAG 방식 IP Less DAG
Active Directory 의존성 CNO 및 AD 객체 필요 AD 객체 불필요
IP 주소 Static IP 필요 IP 주소 불필요
DNS 등록 필요 불필요
Failover 속도 상대적으로 느림 상대적으로 빠름
관리 복잡도 AD 및 네트워크 관리 필요 관리 부담 감소
보안 문제 AD 개체 관리 및 권한 필요 AD 개체 필요 없음

저는 3rd Party에서의 호환성 문제가 없다면, IP-less 방식을 권장합니다.

 

사전준비사항

DAG 구성할 때는 디스크 구조를 동일하게 구성해야 합니다.

DB Disk D드라이브로 구성했다면, 나머지 서버들도 동일하게 D드라이브를 구성해야 합니다.

 

 

Step 1. Witness Directory 만들기

먼저 Witness 무엇인지 알아보겠습니다.

 

1. Witness Server란?

Witness Server(감시 서버)는 Database Availability Group(DAG) 내에서 클러스터 쿼럼(Cluster Quorum) 유지에 필요한 투표권을 제공하는 서버입니다. DAG는 홀수 개의 투표(Quorum)를 유지해야 클러스터가 정상 동작하는데, 이를 위해 Witness Server를 활용합니다.

DAG는 기본적으로 Mailbox Server가 다수 포함된 Windows Failover Cluster로 동작하며, 클러스터의 정족수(Quorum)를 유지해야 합니다. 하지만 DAG 내의 Mailbox Server 개수가 짝수(2, 4, 6...)인 경우, 정족수 결정을 위한 추가적인 투표권이 필요합니다. 이때 Witness Server가 추가적인 1표를 제공하여 Quorum을 유지합니다.

 

그렇다면, 지금은 3대인데 Witness 구성해야 하는지에 대해서 의문이 생길 것입니다.

GPT 아래와 같이 답변해주었습니다.

 

서버 개수 Witness 포함 투표 수 동작 여부 과반수(Quorum) 확보 여부
3대 모두 정상 작동 4 (서버 3 + Witness 1) 정상 운영 (4/2 = 2 이상 필요) OK
1대 장애 (서버 2대 남음) 3 (서버 2 + Witness 1) 정상 운영 (3/2 = 1.5 → 2 이상 필요) OK
2대 장애 (서버 1대 남음) 2 (서버 1 + Witness 1) 정상 운영 (2/2 = 1 이상 필요) OK
3대 장애 (서버 0대 남음) 1 (Witness 1) DAG 중단 (1/2 = 0.5 → 1 이상 필요) 실패

결국 안정적인 운영을 위해서는 Witness 반드시 필요합니다.

 

2. Witness Directory란?

Witness Directory는 Witness Server 내에 생성되는 공유 폴더로, DAG의 정상적인 작동을 위해 사용됩니다.

이 폴더에는 클러스터 상태를 기록하는 파일이 저장되며, Failover 발생 시 DAG 내에서 살아남은 노드들이 이 폴더를 이용하여 정족수(Quorum) 여부를 판단합니다.

Witness 폴더 기본 설정

  • Witness Server에 공유 폴더를 생성해야 함.
  • 보통 C:\DAGWitness와 같은 경로에 생성됨.
  • Witness Server가 DAG 내의 모든 Mailbox Server와 통신 가능해야 함.
  • Exchange Trusted Subsystem 그룹에 해당 폴더의 읽기/쓰기 권한(Read/Write Permission)을 부여해야 함.

Witness Server 별도로 운영해야 하며, 거기서 Witness Directory 만들어야 합니다.

저는 아래의 구성도와 같이 Azure AD Connector 서버에서 Witness 서버로도 활용합니다.

(최근 Azure AD Connect Entra ID Connect 이름 변경됨)

 

 

Witness Server 아래와 같이 Witness 폴더를 생성합니다.

 

우클릭 -> Properties

 

 

Sharing -> Share

 

 

Find people

 

 

Exchange Trusted Subsystem -> Check Names -> OK

 

 

Permission Level: Read/Write -> Share

 

 

Done

 

 

시작 버튼 우클릭 -> Computer Management

 

 

Local Users and Groups -> Groups -> Administrators

 

 

Add

 

 

Exchange Trusted Subsystem -> Check Names -> OK

 

Witness Server에서 Witness 폴더를 생성한 , Exchange Trusted Subsystem 권한 부여를 완료하였습니다.

 

 

Step 2. DAG 구성

아래와 같이 Exchange 서버를 DAG 묶어줍니다.

 

 

Exchange Admin Center (ECP) -> Servers -> database availibility groups -> Add

 

 

DAG 이름을 지정 -> Witness 정보를 입력 -> Save

 

 

다음과 같이 생성됩니다.

 

 

Manage DAG Membership

 

 

우선 1대를 추가 -> Save

 

 

구성이 진행됩니다.

 

 

나머지 Exchange Server 동일하게 추가합니다.

 

 

Step 3. DB 복제

DAG 구성이 완료되었으면, 아래와 같이 DB 복제합니다.

 

 

databases -> DB 선택 -> Add database copy

 

 

Exchange Server 추가한 , Save

 

 

만약 순환 로깅이 켜져있으면, 아래와 같이 오류가 발생합니다. DB 복제할 때는 해당 기능을 Disable 합니다. 완료되면 이후에 다시 Enable합니다.

 

 

처음에는 오류가 발생할 수도 있습니다.

 

 

잠시 뒤에 다시 Update 클릭해서 강제로 복제를 진행하면, 정상적으로 진행이 완료됩니다.

 

 

최종적으로는 아래와 같이 Healthy 상태로 확인할 있습니다.

 

 

다른 서버에서도 아래와 같이 복제가 진행된 것을 확인합니다.

반응형

+ Recent posts