Always On 가용성 그룹 수신기에 연결
적용 대상: SQL Server
이 문서에서는 SQL Server용 Always On 가용성 그룹 수신기에 연결하는 방법을 설명합니다. 가용성 그룹 수신기는 클라이언트가 가용성 그룹에 호스트된 데이터베이스에 연결하는 데 사용하는 가상 네트워크 이름입니다. 수신기는 현재 주 데이터베이스를 호스팅하는 가용성 복제본에 관계없이 클라이언트 애플리케이션에 대한 일관된 연결 엔드포인트를 제공합니다. 또한 수신기는 읽기 전용 라우팅 및 자동 장애 조치(failover)를 지원할 수 있습니다.
수신기를 구성한 후에는 장애 조치(failover) 후 연결 문자열 수동으로 업데이트하지 않고도 애플리케이션 트래픽이 의도한 복제본으로 자동으로 라우팅되도록 수신기를 가리키도록 연결 문자열 업데이트합니다.
기본 복제본(replica)에 연결
읽기/쓰기 액세스하기 위해서 기본 복제본(replica)에 연결하려면 연결 문자열에 가용성 그룹 수신기 DNS 이름을 지정해 주세요.
예를 들어 수신기를 통해 SQL Server Management Studio의 기본 복제본(replica)에 연결하려고 한다면 서버 이름 필드에 수신기 DNS 이름을 입력합니다:
장애 조치(failover)를 하는 도중에 기본 복제본(replica)이 변경될 때 수신기에 대한 기존 연결은 끊어지며 새 연결이 새 기본 복제본(replica)으로 라우팅됩니다.
ADO.NET 공급자(System.Data.SqlClient)에 대한 기본 연결 문자열 예시(System.Data.SqlClient):
Server=tcp: AGListener,1433;Database=MyDB;Integrated Security=SSPI
다음 T-SQL(Transact-SQL) 명령을 실행하여 수신기를 통해 현재 연결된 복제본을 확인할 수 있습니다.
SELECT @@SERVERNAME
예를 들어 SQLVM1이 내 기본 복제본(replica)인 경우:
가용성 그룹 수신기를 사용하는 대신에 기본 또는 보조 복제본(replica)의 인스턴스 이름을 사용해서 SQL Server 인스턴스에 직접 연결할 수 있습니다. 그러나 새 연결이 현재의 새로운 기본 복제본에 자동으로 라우팅되는 기능을 사용할 수 없습니다. 또한 지정된 read-intent
로 연결이 읽기 가능한 보조 복제본(replica)으로 자동으로 라우팅되는 읽기 전용 라우팅의 이러한 혜택을 잃게 됩니다.
읽기 전용 복제본에 연결
읽기 전용 라우팅은 읽기 전용 워크로드를 허용하도록 구성된 읽기 가능한 보조 복제본으로 들어오는 수신기 연결을 자동 라우팅하는 기능을 말합니다.
다음과 같은 경우에는 연결이 자동으로 읽기 전용 복제본(replica)으로 라우팅됩니다:
하나 이상의 보조 복제본이 읽기 전용 액세스로 설정되었으며 각 읽기 전용 보조 복제본과 기본 복제본은 읽기 전용 라우팅을 지원하도록 구성되었습니다.
연결 문자열은 가용성 그룹에 관련된 데이터베이스를 참조하고 있습니다. 이에 대한 대안은 연결에 사용된 로그인이 데이터베이스를 기본 데이터베이스로 구성합니다. 자세한 내용은 알고리즘이 읽기 전용 라우팅에서 작동하는 방식에 대한 이 문서를 참조하세요.
연결 문자열은 가용성 그룹 수신기를 참조하며 들어오는 연결의 애플리케이션 의도는 ODBC 또는 OLEDB 연결 문자열이나 연결 특성 또는 속성에서 Application Intent=ReadOnly 키워드를 사용하는 등과 같은 방법으로 읽기 전용으로 설정됩니다.
애플리케이션 의도의 특성은 로그인이 이뤄지는 동안 클라이언트 세션에 저장되고 SQL Server 인스턴스는 이 의도를 처리하며 가용성 그룹의 구성 및 보조 복제본(replica) 대상 데이터베이스의 현재 읽기-쓰기 상태에 따라 실행할 작업을 결정합니다.
예를 들어 SQL Server Management Studio를 사용하여 읽기 전용 복제본(replica) 연결하기 위해서는 서버로 연결 대화 상자에서 옵션을 선택하고 추가 연결 매개 변수의 탭을 선택한 이후에 텍스트 상자에 지정ApplicationIntent=ReadOnly
합니다:
읽기 전용 애플리케이션 의도를 지정하는 ADO.NET 공급자(System.Data.SqlClient)에 대한 연결 문자열의 예시:
Server=tcp:AGListener;Database=AdventureWorks;Integrated Security=SSPI;ApplicationIntent=ReadOnly
자세한 내용은 가용성 복제본에 대한 읽기 전용 권한 구성(SQL Server)을 참조하세요
기본 포트가 아님
수신기를 만들 때 수신기에서 사용할 포트를 지정합니다. 포트가 기본 포트인 1433인 경우에는 수신기에 연결할 때 포트 번호를 지정할 필요가 없습니다. 그러타 포트가 1433이 아닌 경우 다음과 같이 listenername,port
형식으로 연결 문자열 포트를 지정해야 합니다:
수신기에 대한 기본이 아닌 포트를 지정하는 ADO.NET 공급자(System.Data.SqlClient)에 대한 연결 문자열의 예:
Server=tcp:AGListener,1445;Database=AdventureWorks;Integrated Security=SSPI
수신기 바이패스
가용성 그룹 수신기에서 장애 조치(Failover) 리디렉션 및 읽기 전용 라우팅을 지원하지만 클라이언트 연결에서 해당 기능을 사용할 필요는 없습니다. 클라이언트 연결은 가용성 그룹 수신기에 연결하는 대신에 SQL Server 인스턴스를 직접 참조할 수도 있습니다.
SQL Server의 인스턴스에서 가용성 그룹 수신기를 사용하거나 다른 인스턴스 엔드포인트를 사용하여 연결이 로그인되는지 여부는 관계가 없습니다. SQL Server의 인스턴스에서는 대상 데이터베이스의 상태를 확인하고 가용성 그룹의 구성 및 인스턴스의 데이터베이스 현재 상태에 따라 연결을 허용하거나 허용하지 않습니다. 예를 들어, 클라이언트 애플리케이션이 SQL Server 포트 인스턴스에 직접 연결하고 가용성 그룹에서 호스트 되는 대상 데이터베이스에 연결하고 대상 데이터베이스가 주 상태 및 온라인 상태인 경우 성공적으로 연결됩니다. 대상 데이터베이스가 오프라인 상태이거나 전환 상태이면 데이터베이스 연결이 실패합니다.
또는 데이터베이스 미러 Always On 가용성 그룹으로 마이그레이션이 이뤄지는 동안 애플리케이션은 보조 복제본(replica)은 하나만 있게 되고 사용자 연결을 허용하지 않는 한 데이터베이스 미러 연결 문자열을 지정할 수 있습니다.
데이터베이스 미러링 연결 문자열
가용성 그룹에 보조 복제본(replica)은 하나만 있으며 보조 복제본(replica) 대한 ALLOW_CONNECTIONS = READ_ONLY 또는 ALLOW_CONNECTIONS = NONE으로 구성된 경우라면 클라이언트는 데이터베이스 미러 연결 문자열 사용해서 기본 복제본(replica)에 연결할 수 있습니다. 이 방법은 가용성 그룹을 두 개의 가용성 복제본(replica)(기본 복제본(replica) 및 하나의 보조 복제본(replica))으로 제한하는 한 기존 애플리케이션을 데이터베이스 미러링에서 가용성 그룹으로 마이그레이션하는 동안 유용할 수 있습니다. 보조 복제본을 추가하는 경우 가용성 그룹에 대한 가용성 그룹 수신기를 만들고 가용성 그룹 수신기 DNS 이름을 사용하도록 애플리케이션을 업데이트해야 합니다.
데이터베이스 미러링 연결 문자열을 사용할 때 클라이언트는 SQL Server Native Client 또는 .NET Framework Data Provider for SQL Server를 사용할 수 있습니다. 클라이언트에서 제공하는 연결 문자열 연결하려고 하는 가용성 복제본(replica)을 초기에 호스팅하는 서버 인스턴스를 식별하기 위해서는 하나의 서버 인스턴스의 이름(초기 파트너 이름)을 최소한으로 제공해야 합니다. 필요한 경우 연결 문자열에 다른 서버 인스턴스의 이름, 즉 장애 조치(failover) 파트너 이름을 제공하여 초기에 보조 복제본을 호스팅할 서버 인스턴스를 장애 조치(failover) 파트너 이름으로 식별할 수도 있습니다.
데이터베이스 미러링 연결 문자열에 대한 자세한 내용은 데이터베이스 미러링 세션에 클라이언트 연결(SQL Server)을 참조하세요.
다중 서브넷 장애 조치(failover)
연결 문자열에서 MultiSubnetFailover 연결 옵션을 지원하는 클라이언트 라이브러리를 사용 중인 경우, 사용하는 공급자의 구문에 따라 MultiSubnetFailover를 “True” 또는 “Yes”로 설정하여 다른 서브넷에 대한 가용성 그룹 장애 조치(failover)를 최적화할 수 있습니다.
참고 항목
가용성 그룹 수신기 및 SQL Server 장애 조치(failover) 클러스터 인스턴스 이름에 대한 단일 및 다중 서브넷 연결 모두에 대해 이 설정을 권장합니다. 이 옵션을 활성화하면 단일 서브넷 시나리오의 경우에도 추가 최적화가 추가됩니다.
MultiSubnetFailover 연결 옵션은 TCP 네트워크 프로토콜에서만 작동하며 가용성 그룹 수신기 및 SQL Server에 연결하는 가상 네트워크 이름에 연결할 때만 지원됩니다.
다중 서브넷 장애 조치(failover)를 사용하도록 설정하는 ADO.NET 공급자(System.Data.SqlClient) 연결 문자열 예시는 다음과 같습니다:
Server=tcp:AGListener,1433;Database=AdventureWorks;Integrated Security=SSPI; MultiSubnetFailover=True
가용성 그룹이 단일 서브넷에만 걸쳐져 있는 경우에도 MultiSubnetFailover 연결 옵션을 True로 설정해야 합니다. 이렇게 하면 향후 클라이언트 연결 문자열을 변경하지 않아도 서브넷의 향후 스패닝을 지원하도록 새 클라이언트를 미리 구성하고 단일 서브넷 장애 조치(failover)에 대한 장애 조치(failover) 성능을 최적화할 수 있습니다. MultiSubnetFailover 연결 옵션은 필수는 아니지만, 서브넷 장애 조치(failover) 시간을 단축해 준다는 혜택이 있습니다. 클라이언트 드라이버가 가용성 그룹과 연결된 각 IP 주소에 대한 TCP 소켓을 병렬로 열려고 시도하기 때문입니다. 클라이언트 드라이버는 첫 번째 IP가 응답할 때까지 기다린 다음 성공적으로 응답하면 해당 IP를 사용하여 연결합니다.
수신기 및 TLS/SSL 인증서
가용성 그룹 수신기에 연결할 때 SQL Server의 참여 인스턴스가 세션 암호화와 함께 TLS/SSL 인증서를 사용하는 경우 연결 클라이언트 드라이버는 암호화를 강제로 적용하기 위해서 TLS/SSL 인증서의 주체 대체 이름을 지원해야 합니다.
인증서의 주체 대체 이름에 설정된 모든 가용성 그룹 수신기 목록을 사용하여 장애 조치 클러스터의 각 참여 서버 노드에 대해 X.509 인증서를 구성해야 합니다.
인증서 값의 형식은 다음과 같습니다:
CN = Server.FQDN
SAN = Server.FQDN,Listener1.FQDN,Listener2.FQDN
예를 들어 다음과 같은 값이 있다고 가정합니다.
Servername: Win2019
Instance: SQL2019
AG: AG2019
Listener: Listener2019
Domain: contoso.com (which is also the FQDN)
단일 가용성 그룹이 있는 WSFC의 경우 인증서에는 서버의 FQDN(정규화된 do기본 이름) 및 수신기의 FQDN이 있어야 합니다:
CN: Win2019.contoso.com
SAN: Win2019.contoso.com, Listener2019.contoso.com
이 구성을 사용하면 인스턴스 (WIN2019\SQL2019
) 또는 수신기 (Listener2019
)에 연결할 때 연결이 암호화됩니다.
네트워킹을 구성하는 방법에 따라 NetBIOS를 SAN에 추가해야 할 수도 있는 고객의 작은 하위 집합이 있습니다. 이 경우 인증서 값은 다음과 같아야 합니다.
CN: Win2019.contoso.com
SAN: Win2019,Win2019.contoso.com,Listener2019,Listener2019.contoso.com
WSFC에 세 개의 가용성 그룹 수신기(예: Listener1, Listener2, Listener3)가 있는 경우
이러한 경우 인증서 값은 다음과 같아야 합니다:
CN: Win2019.contoso.com
SAN: Win2019.contoso.com,Listener1.contoso.com,Listener2.contoso.com,Listener3.contoso.com
수신기 및 Kerberos(SPN)
도메인 관리자는 각 가용성 그룹 수신기에 대해 Active Directory에서 SPN(서비스 사용자 이름)을 구성하여 수신기에 대한 클라이언트 연결에 Kerberos를 사용하도록 설정해야 합니다. SPN을 등록할 때 가용성 복제본(replica)을 호스팅하는 서버 인스턴스의 서비스 계정을 사용해야 합니다. SPN이 모든 복제본(replica)에서 작동하려면 가용성 그룹을 호스팅하는 WSFC 클러스터의 모든 인스턴스에 동일한 서비스 계정을 사용해야 합니다.
setspn Windows 명령줄 도구를 사용해서 SPN을 구성합니다. 예를 들어 corp\svclogin2
도메인 계정에서 실행되도록 구성된 SQL Server 인스턴스 집합에 호스트되는 AG1listener.Adventure-Works.com
이라는 가용성 그룹 수신기의 SPN을 구성하려면 다음을 수행합니다.
setspn -A MSSQLSvc/AG1listener.Adventure-Works.com:1433 corp\svclogin2
자세한 내용은 Kerberos 연결의 서비스 사용자 이름 등록을 참조하세요.