쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

AWS 기반 SQL Server의 Always On 가용성 그룹에서 읽기 전용 라우팅 구성 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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 파라미터가 포함된 쿼리를 적절한 보조 노드로 리디렉션하는 방법을 보여줍니다.

Amazon EFS를 사용하는 노드 1 WSFC와 노드 2 WSFC에 대한 두 가용 영역 간의 3단계 프로세스입니다.
  1. Always On 가용성 그룹 리스너로 요청이 전송됩니다.

  2. 연결 문자열에 ApplicationIntent 파라미터가 없으면 해당 요청이 기본 인스턴스에 전송됩니다.

  3. 연결 문자열에 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단계 코드를 실행합니다. 이 코드에서 tagechtalk.com은 AWS Managed Microsoft AD 디렉터리의 이름입니다.

DBA

라우팅 목록을 생성합니다.

두 복제본의 라우팅 목록을 생성하려면 추가 정보 섹션에서 3단계 코드를 실행합니다.

DBA

라우팅 목록 검증합니다.

SQL Server Management Studio에서 기본 인스턴스에 연결하고 추가 정보 섹션의 4단계 코드를 실행하여 라우팅 목록을 검증합니다.

DBA

읽기 전용 라우팅 설정

작업설명필요한 기술

읽기 전용에 복제본을 업데이트합니다.

기본 복제본과 보조 복제본을 모두 읽기 전용으로 업데이트하려면 SSMS에서 기본 복제본에 연결하고 추가 정보 섹션에서 1단계 코드를 실행합니다.

DBA

라우팅 URL을 생성합니다.

두 복제본의 라우팅 URL을 생성하려면 추가 정보 섹션에서 2단계 코드를 실행합니다. 이 코드에서 tagechtalk.com은 AWS Managed Microsoft AD 디렉터리의 이름입니다.

DBA

라우팅 목록을 생성합니다.

두 복제본의 라우팅 목록을 생성하려면 추가 정보 섹션에서 3단계 코드를 실행합니다.

DBA

라우팅 목록 검증합니다.

SQL Server Management Studio에서 기본 인스턴스에 연결하고 추가 정보 섹션의 4단계 코드를 실행하여 라우팅 목록을 검증합니다.

DBA
작업설명필요한 기술

ApplicationIntent 파라미터를 사용하여 연결합니다.

  1. SSMS에서 Always On 가용성 그룹 리스너 이름을 ApplicationIntent=ReadOnly;Initial Catalog=test로 연결합니다.

  2. 보조 복제본과 연결이 설정됩니다. 이를 테스트하려면 다음 명령을 실행하여 연결된 Server 이름을 표시합니다.

    SELECT SERVERPROPERTY('ComputernamePhysicalNetBios')

    출력에는 현재 보조 복제본 이름(WSFCNODE2)이 표시됩니다.

DBA

장애 조치를 수행합니다.

  1. SSMS에서 Always On 가용성 그룹 리스너 이름에 연결합니다.

  2. 기본 데이터베이스와 보조 데이터베이스가 데이터 손실 없이 동기화되어 있는지 확인합니다.

  3. 현재 기본 복제본이 보조 복제본이 되고 보조 복제본이 기본 복제본이 되도록 장애 조치를 수행합니다.

  4. SSMS에서 Always On 가용성 그룹 리스너 이름을 ApplicationIntent=ReadOnly;Initial Catalog=test로 연결합니다.

  5. 보조 복제본과 연결이 설정됩니다. 이를 테스트하려면 다음 명령을 실행하여 연결된 서버 이름을 표시합니다.

    SELECT SERVERPROPERTY('ComputernamePhysicalNetBios')

    현재 보조 복제본 이름(WSFCNODE1)이 표시됩니다.

DBA

읽기 전용 라우팅 테스트

작업설명필요한 기술

ApplicationIntent 파라미터를 사용하여 연결합니다.

  1. SSMS에서 Always On 가용성 그룹 리스너 이름을 ApplicationIntent=ReadOnly;Initial Catalog=test로 연결합니다.

  2. 보조 복제본과 연결이 설정됩니다. 이를 테스트하려면 다음 명령을 실행하여 연결된 Server 이름을 표시합니다.

    SELECT SERVERPROPERTY('ComputernamePhysicalNetBios')

    출력에는 현재 보조 복제본 이름(WSFCNODE2)이 표시됩니다.

DBA

장애 조치를 수행합니다.

  1. SSMS에서 Always On 가용성 그룹 리스너 이름에 연결합니다.

  2. 기본 데이터베이스와 보조 데이터베이스가 데이터 손실 없이 동기화되어 있는지 확인합니다.

  3. 현재 기본 복제본이 보조 복제본이 되고 보조 복제본이 기본 복제본이 되도록 장애 조치를 수행합니다.

  4. SSMS에서 Always On 가용성 그룹 리스너 이름을 ApplicationIntent=ReadOnly;Initial Catalog=test로 연결합니다.

  5. 보조 복제본과 연결이 설정됩니다. 이를 테스트하려면 다음 명령을 실행하여 연결된 서버 이름을 표시합니다.

    SELECT SERVERPROPERTY('ComputernamePhysicalNetBios')

    현재 보조 복제본 이름(WSFCNODE1)이 표시됩니다.

DBA
작업설명필요한 기술

sqlcmd를 사용하여 연결합니다.

sqlcmd에서 연결하려면 명령 프롬프트의 추가 정보 섹션에서 5단계 코드를 실행합니다. 연결된 후 다음 명령을 실행하여 연결된 서버 이름을 표시합니다.

SELECT SERVERPROPERTY('ComputernamePhysicalNetBios') .

출력에는 현재 보조 복제본 이름(WSFCNODE1)이 표시됩니다.

DBA

sqlcmd 명령줄 유틸리티를 사용하여 연결

작업설명필요한 기술

sqlcmd를 사용하여 연결합니다.

sqlcmd에서 연결하려면 명령 프롬프트의 추가 정보 섹션에서 5단계 코드를 실행합니다. 연결된 후 다음 명령을 실행하여 연결된 서버 이름을 표시합니다.

SELECT SERVERPROPERTY('ComputernamePhysicalNetBios') .

출력에는 현재 보조 복제본 이름(WSFCNODE1)이 표시됩니다.

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
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.