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

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

의 SQL 서버에서 Always On 가용성 그룹에 읽기 전용 라우팅 구성 AWS

작성자: Subhani Shaik(AWS)

환경: PoC 또는 파일럿

기술: 데이터베이스, 인프라

워크로드: Microsoft

AWS 서비스: AWS Managed Microsoft AD, Amazon EC2

요약

이 패턴은 기본 복제본에서 보조 복제본으로 읽기 전용 워크로드를 오프로드하여 SQL Server Always On에서 대기 보조 복제본을 사용하는 방법을 다룹니다.

데이터베이스 미러링에는 매핑이 one-to-one 있습니다. 보조 데이터베이스를 직접 읽을 수 없으므로 스냅샷을 만들어야 합니다. Always On 가용성 그룹 기능은 Microsoft SQL Server 2012에 도입되었습니다. 이후 버전에서는 읽기 전용 라우팅을 비롯한 주요 기능이 도입되었습니다. Always On 가용성 그룹에서는 복제본 모드를 읽기 전용으로 변경하여 보조 복제본에서 직접 데이터를 읽을 수 있습니다.

Always On 가용성 그룹 솔루션은 고가용성(HA), 재해 복구(DR) 및 데이터베이스 미러링의 대안을 지원합니다. Always On 가용성 그룹은 데이터베이스 수준에서 작동하며 사용자 데이터베이스 집합의 가용성을 극대화합니다.

SQL 서버는 읽기 전용 라우팅 메커니즘을 사용하여 들어오는 읽기 전용 연결을 보조 읽기 전용 복제본으로 리디렉션합니다. 이렇게 하려면 연결 문자열에 다음 파라미터와 값을 추가해야 합니다.

  • ApplicationIntent=ReadOnly

  • Initial Catalog=<database name>

사전 조건 및 제한 사항

사전 조건 

  • 가상 프라이빗 클라우드(VPC), 가용 영역 2개, 프라이빗 서브넷 및 보안 그룹이 있는 활성 AWS 계정

  • 인스턴스 수준에서 구성된 Windows Server 장애 조치 클러스터링(WSFC)과 기본 노드()와 보조 노드(EC2) 사이의 SQL 서버 수준에서 구성된 Always On 가용성 그룹이 있는 Server 2019 Enterprise Edition Amazon Machine Image가 있는 Amazon Elastic Compute Cloud(Amazon WSFCNODE1) 시스템 2대. WSFCNODE2이 그룹은 라는 Microsoft Active Directory 디렉터리용 AWS Directory Service의 일부입니다. SQL tagechtalk.com

  • 보조 복제본에 read-only를 허용하도록 구성된 하나 이상의 노드

  • Always On 가용성 그룹에 대하여 이름이 SQLAG1인 리스너

  • SQL 두 노드에서 동일한 서비스 계정으로 실행되는 서버 데이터베이스 엔진

  • SQL 서버 관리 스튜디오(SSMS)

  • 이름이 test인 테스트 데이터베이스

제품 버전

  • SQL 서버 2014 이상

아키텍처

대상 기술 스택

  • Amazon EC2

  • AWS Managed Microsoft AD

  • Amazon FSx

대상 아키텍처 

다음 다이어그램은 Always On 가용성 그룹(AG) 리스너가 연결에 ApplicationIntent 파라미터가 포함된 쿼리를 적절한 보조 노드로 리디렉션하는 방법을 보여줍니다.

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

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

  3. 연결 문자열에 가 포함된 경우 ApplicationIntent=ReadOnly요청은 읽기 전용 라우팅 구성 을 사용하여 보조 인스턴스로 전송되며, 이 라우팅 구성은 Always On 가용성 그룹을 WSFC 포함합니다.

도구

AWS 서비스

  • AWS 디렉터리 서비스 for Microsoft Active Directory를 사용하면 디렉터리 인식 워크로드 및 AWS 리소스가 AWS 클라우드에서 Microsoft Active Directory를 사용할 수 있습니다.

  • Amazon Elastic Compute Cloud(Amazon EC2)는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. 필요한 만큼 가상 서버를 시작하고 빠르게 스케일 업하거나 스케일 다운할 수 있습니다.

  • AmazonFSx은 업계 표준 연결 프로토콜을 지원하고 AWS 리전 간에 고가용성 및 복제를 제공하는 파일 시스템을 제공합니다.

기타 서비스

  • SQL Server Management Studio(SSMS)는 SQL 서버 인스턴스를 연결, 관리 및 관리하기 위한 도구입니다.

  • sqlcmd는 명령줄 유틸리티입니다.

모범 사례

Always On 가용성 그룹에 대한 자세한 내용은 SQL 서버 설명서 섹션을 참조하세요.

에픽

작업설명필요한 기술

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

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

DBA

라우팅을 생성합니다URL.

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

DBA

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

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

DBA

라우팅 목록 검증합니다.

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

DBA
작업설명필요한 기술

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

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

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

    SELECT SERVERPROPERTY('ComputernamePhysicalNetBios')

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

DBA

장애 조치를 수행합니다.

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

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

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

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

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

    SELECT SERVERPROPERTY('ComputernamePhysicalNetBios')

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

DBA
작업설명필요한 기술

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

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

SELECT SERVERPROPERTY('ComputernamePhysicalNetBios') .

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

DBA

문제 해결

문제Solution

'WSFC클러스터가 네트워크 이름 리소스를 온라인으로 가져올 수 없습니다.'라는 메시지와 함께 리스너 생성이 실패합니다.

자세한 내용은 Microsoft 블로그 게시물 Create Listener Fails with Message '클WSFC러스터가 네트워크 이름 리소스를 온라인으로 가져올 수 없음'을 참조하세요.

기타 리스너 문제나 네트워크 액세스 문제를 비롯한 잠재적 문제.

Microsoft 설명서의 Always On 가용성 그룹 구성 문제 해결(SQL 서버)을 참조하세요.

관련 리소스

추가 정보

단계 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