기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS 기반 SQL Server의 Always On 가용성 그룹에서 읽기 전용 라우팅 구성
작성자: Subhani Shaik(AWS)
요약
이 패턴은 읽기 전용 워크로드를 기본 복제본에서 보조 복제본으로 넘겨서 SQL Server Always On에서 예비 보조 복제본을 사용하는 방법을 다룹니다.
데이터베이스 미러링에는 일대일 매핑이 있습니다. 보조 데이터베이스를 직접 읽을 수 없으므로 스냅샷을 만들어야 합니다. Always On 가용성 그룹 기능은 Microsoft SQL Server 2012에 도입되었습니다. 이후 버전에서는 읽기 전용 라우팅을 비롯한 주요 기능이 도입되었습니다. Always On 가용성 그룹에서는 복제본 모드를 읽기 전용으로 변경하여 보조 복제본에서 직접 데이터를 읽을 수 있습니다.
Always On 가용성 그룹 솔루션은 고가용성(HA), 재해 복구(DR) 및 데이터베이스 미러링의 대안을 지원합니다. Always On 가용성 그룹은 데이터베이스 수준에서 작동하며 사용자 데이터베이스 집합의 가용성을 극대화합니다.
SQL Server는 읽기 전용 라우팅 메커니즘을 사용하여 들어오는 읽기 전용 연결을 보조 읽기 전용 복제본으로 리디렉션합니다. 이렇게 하려면 연결 문자열에 다음 파라미터와 값을 추가해야 합니다.
ApplicationIntent=ReadOnly
Initial Catalog=<database name>
사전 조건 및 제한 사항
사전 조건
Virtual Private Cloud(VPC), 두 개의 가용 영역, 프라이빗 서브넷 및 보안 그룹을 갖춘 활성 AWS 계정
Windows Server Failover Clustering(WSFC)이 인스턴스 수준에 구성되었으며 프라이머리 노드(
WSFCNODE1
)와tagechtalk.com
이라고 이름이 지정된 Microsoft Active Directory 디렉터리용 AWS Directory Service의 일부인 세컨더리 노드(WSFCNODE2
) 사이의 SQL Server 수준에 Always On 가용성 그룹이 구성된 SQL Server 2019 Enterprise Edition Amazon Machine Image가 탑재된 Amazon Elastic Compute Cloud(AmazonEC2) 시스템 두 개 보조 복제본에
read-only
를 허용하도록 구성된 하나 이상의 노드Always On 가용성 그룹에 대하여 이름이
SQLAG1
인 리스너두 노드에서 동일한 서비스 계정으로 실행되는 SQL Server 데이터베이스 엔진
SQL Server Management Studio(SSMS)
이름이
test
인 테스트 데이터베이스
제품 버전
SQL 2014 이상
아키텍처
대상 기술 스택
Amazon EC2
AWS 관리형 Microsoft AD
Amazon FSx
대상 아키텍처
다음 다이어그램은 Always On 가용성 그룹(AG) 리스너가 연결에 ApplicationIntent
파라미터가 포함된 쿼리를 적절한 보조 노드로 리디렉션하는 방법을 보여줍니다.

Always On 가용성 그룹 리스너로 요청이 전송됩니다.
연결 문자열에
ApplicationIntent
파라미터가 없으면 해당 요청이 기본 인스턴스에 전송됩니다.연결 문자열에
ApplicationIntent=ReadOnly
가 포함되어 있는 경우 요청은 읽기 전용 라우팅 구성을 사용하는 보조 인스턴스, 즉 Always On 가용성 그룹이 있는 WSFC로 전송됩니다.
도구
서비스
Microsoft Active Directory용 AWS Directory Service를 사용하면 디렉터리 인식 워크로드와 AWS 리소스가 AWS 클라우드에서 Microsoft Active Directory를 사용할 수 있습니다.
Amazon Elastic Compute Cloud(Amazon EC2)는 AWS 클라우드에서 규모를 조정할 수 있는 컴퓨팅 용량을 제공합니다. 필요한 만큼 가상 서버를 시작하고 빠르게 스케일 업하거나 스케일 다운할 수 있습니다.
Amazon FSx는 업계 표준 연결 프로토콜을 지원하고 AWS 리전 전반에 걸쳐 고가용성 및 복제를 제공하는 파일 시스템을 제공합니다.
기타 서비스
SQL Management Studio(SSMS)는 SQL Server 인스턴스를 연결, 관리 및 집행하기 위한 도구입니다.
sqlcmd는 명령줄 유틸리티입니다.
모범 사례
Always On 가용성 그룹에 대한 자세한 내용은 SQL Server 설명서
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
읽기 전용에 복제본을 업데이트합니다. | 기본 복제본과 보조 복제본을 모두 읽기 전용으로 업데이트하려면 SSMS에서 기본 복제본에 연결하고 추가 정보 섹션에서 1단계 코드를 실행합니다. | DBA |
라우팅 URL을 생성합니다. | 두 복제본의 라우팅 URL을 생성하려면 추가 정보 섹션에서 2단계 코드를 실행합니다. 이 코드에서 | DBA |
라우팅 목록을 생성합니다. | 두 복제본의 라우팅 목록을 생성하려면 추가 정보 섹션에서 3단계 코드를 실행합니다. | DBA |
라우팅 목록 검증합니다. | SQL Server Management Studio에서 기본 인스턴스에 연결하고 추가 정보 섹션의 4단계 코드를 실행하여 라우팅 목록을 검증합니다. | DBA |
작업 | 설명 | 필요한 기술 |
---|---|---|
ApplicationIntent 파라미터를 사용하여 연결합니다. |
| DBA |
장애 조치를 수행합니다. |
| DBA |
작업 | 설명 | 필요한 기술 |
---|---|---|
sqlcmd를 사용하여 연결합니다. | sqlcmd에서 연결하려면 명령 프롬프트의 추가 정보 섹션에서 5단계 코드를 실행합니다. 연결된 후 다음 명령을 실행하여 연결된 서버 이름을 표시합니다.
출력에는 현재 보조 복제본 이름( | DBA |
문제 해결
문제 | Solution |
---|---|
리스너 생성이 실패하면 'WSFC 클러스터가 네트워크 이름 리소스를 온라인 상태로 가져올 수 없습니다'라는 메시지가 표시됩니다. | 자세한 내용은 Microsoft 블로그 게시물 'WSFC 클러스터가 네트워크 이름 리소스를 온라인 상태로 가져올 수 없습니다'라는 메시지로 리스너 생성 실패 |
기타 리스너 문제나 네트워크 액세스 문제를 비롯한 잠재적 문제. | Microsoft 설명서의 Always On 가용성 그룹 구성 문제 해결(SQL Server) |
관련 리소스
추가 정보
단계 1. 복제본을 읽기 전용으로 업데이트
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
2단계. 라우팅 URL 생성
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode1.tagechtalk.com:1433'))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode2.tagechtalk.com:1433'))
GO
단계 3. 라우팅 목록 생성
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=('WSFCNODE2','WSFCNODE1')));
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WSFCNODE1','WSFCNODE2')));
GO
4단계. 라우팅 목록 검증
SELECT AGSrc.replica_server_name AS PrimaryReplica, AGRepl.replica_server_name AS ReadOnlyReplica, AGRepl.read_only_routing_url AS RoutingURL , AGRL.routing_priority AS RoutingPriority FROM sys.availability_read_only_routing_lists AGRL INNER JOIN sys.availability_replicas AGSrc ON AGRL.replica_id = AGSrc.replica_id INNER JOIN sys.availability_replicas AGRepl ON AGRL.read_only_replica_id = AGRepl.replica_id INNER JOIN sys.availability_groups AV ON AV.group_id = AGSrc.group_id ORDER BY PrimaryReplica
5단계. SQL 명령 유틸리티
sqlcmd -S SQLAG1,1433 -E -d test -K ReadOnly