SQL Server FCI 및 DNN의 기능 상호 운용성

적용 대상:Azure VM 기반 SQL Server

가용성 그룹을 배포하는 방법에는 여러 가지가 있습니다. 동일한 Azure 가상 네트워크 내의 여러 서브넷에 SQL Server VM(가상 머신)을 생성하여 배포를 간소화하고 Always On 가용성 그룹에 대한 Azure Load Balancer 또는 DNN(분산 네트워크 이름)의 필요성을 없앨 수 있습니다. 단일 서브넷에서 가용성 그룹을 이미 만든 경우 이를 다중 서브넷 환경으로 마이그레이션할 수 있습니다.

하드 코드된 VNN(가상 네트워크 이름)을 사용하는 특정 SQL Server 기능이 있습니다. 따라서 장애 조치(failover) 클러스터 인스턴스와 Azure VM 기반 SQL Server와 함께 DNN(분산 네트워크 이름) 리소스를 사용하는 경우 몇 가지 추가 고려 사항이 있습니다.

이 문서에서는 DNN 리소스를 사용할 때 네트워크 별칭을 구성하는 방법과 추가 고려 사항이 필요한 SQL Server 기능에 대해 알아봅니다.

네트워크 별칭 만들기(FCI)

일부 서버 쪽 구성 요소는 하드 코드된 VNN 값을 사용하며 제대로 작동하려면 VNN을 DNN DNS 이름에 매핑하는 네트워크 별칭이 필요합니다. 서버 별칭 만들기의 단계에 따라 VNN을 DNN DNS 이름에 매핑하는 별칭을 만듭니다.

기본 인스턴스의 경우 VNN = DNN DNS 이름과 같이 VNN을 DNN DNS 이름에 직접 매핑할 수 있습니다. 예를 들어 VNN 이름이 FCI1이고 인스턴스 이름이 MSSQLSERVER이고 DNN이 FCI1DNN(이전에 FCI에 연결된 클라이언트가 이제 FCI1DNN에 연결됨)인 경우 VNN FCI1을 DNN FCI1DNN에 매핑합니다.

명명된 인스턴스의 경우 VNN\Instance = DNN\Instance와 같이 전체 인스턴스에 대해 네트워크 별칭 매핑을 수행해야 합니다. 예를 들어 VNN 이름이 FCI1이고 인스턴스 이름이 instA이고 DNN이 FCI1DNN(이전에 FCI1\instA에 연결된 클라이언트가 이제 FCI1DNN\instaA에 연결됨)인 경우 VNN FCI1\instaA을 DNN FCI1DNN\instaA에 매핑합니다.

클라이언트 드라이버

ODBC, OLEDB, ADO.NET, JDBC, PHP 및 Node.js 드라이버의 경우 사용자는 연결 문자열에 DNN DNS 이름을 서버 이름으로 명시적으로 지정해야 합니다. 장애 조치(failover) 시 신속한 연결을 보장하려면 SQL 클라이언트가 지원하는 경우 연결 문자열에 MultiSubnetFailover=True를 추가합니다.

도구

SQL Server Management Studio, sqlcmd, Azure Data StudioSQL Server Data Tools 사용자는 연결 문자열에 DNN DNS 이름을 서버 이름으로 명시적으로 지정해야 합니다.

가용성 그룹 및 FCI

장애 조치(failover) 클러스터 인스턴스를 복제본(replica) 중 하나로 사용하여 Always On 가용성 그룹을 구성할 수 있습니다. 이 구성에서 FCI 복제본(replica)의 미러링 엔드포인트 URL은 FCI DNN을 사용해야 합니다. 마찬가지로 FCI가 읽기 전용 복제본(replica)으로 사용되는 경우 FCI 복제본(replica)에 대한 읽기 전용 라우팅에서 FCI DNN을 사용해야 합니다.

미러링 엔드포인트의 형식은 ENDPOINT_URL = 'TCP://<DNN DNS name>:<mirroring endpoint port>'입니다.

예를 들어 DNN DNS 이름이 dnnlsnr이고 5022가 FCI 미러링 엔드포인트의 포트인 경우 엔드포인트 URL을 생성하는 T-SQL(Transact-SQL) 코드 조각은 다음과 같습니다.

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

마찬가지로 읽기 전용 라우팅 URL의 형식은 TCP://<DNN DNS name>:<SQL Server instance port> 입니다.

예를 들어 DNN DNS 이름이 dnnlsnr이고 1444가 읽기 전용 대상 SQL Server FCI에서 사용하는 포트인 경우 읽기 전용 라우팅 URL을 생성하는 T-SQL 코드 조각은 다음과 같습니다.

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

기본 1433 포트인 경우 URL에서 포트를 생략할 수 있습니다. 명명된 인스턴스의 경우 명명된 인스턴스에 대한 고정 포트를 구성하고 읽기 전용 라우팅 URL에 지정합니다.

복제

복제에는 게시자, 배포자, 구독자의 세 가지 구성 요소가 있습니다. 이러한 구성 요소는 장애 조치(failover) 클러스터 인스턴스일 수 있습니다. FCI VNN은 명시적 및 암시적으로 복제 구성에 많이 사용되기 때문에 복제 작업을 수행하려면 VNN을 DNN에 매핑하는 네트워크 별칭이 필요할 수 있습니다.

복제 내에서 FCI 이름으로 VNN 이름을 계속 사용하되 복제를 구성하기 전에 다음 원격 상황에서 네트워크 별칭을 만듭니다.

복제 구성 요소(DNN이 있는 FCI) 원격 구성 요소 네트워크 별칭 매핑 네트워크 맵이 있는 서버
게시자 배포자 게시자 DNN에 게시자 VNN 배포자
배포자 가입자 배포자 DNN에 배포자 VNN 구독자
배포자 게시자 배포자 DNN에 배포자 VNN 게시자
구독자 배포자 구독자 DNN에 구독자 VNN 배포자

예를 들어 복제 토폴로지에서 DNN을 사용하여 FCI로 구성된 게시자가 있고 배포자가 원격이라고 가정합니다. 이 경우 배포자 서버에서 네트워크 별칭을 만들어 게시자 DNN에 게시자 VNN을 매핑합니다.

Configure the DNN DNS name as the network alias using SQL Server Configuration Manager.

다음 이미지 예제와 같이 명명된 인스턴스의 전체 인스턴스 이름을 사용합니다.

Use the full instance name when configuring a network alias for a named instance.

데이터베이스 미러링

FCI를 사용하여 데이터베이스 미러링 파트너로 데이터베이스 미러링을 구성할 수 있습니다. SQL Server Management Studio GUI 대신 T-SQL(Transact-SQL)을 사용하여 구성합니다. T-SQL을 사용하면 VNN 대신 DNN을 사용하여 데이터베이스 미러링 엔드포인트가 만들어집니다.

예를 들어 DNN DNS 이름이 dnnlsnr이고 데이터베이스 미러링 엔드포인트가 7022인 경우 다음 T-SQL 코드 조각은 데이터베이스 미러링 파트너를 구성합니다:

ALTER DATABASE AdventureWorks
    SET PARTNER =
    'TCP://dnnlsnr:7022'
GO 

클라이언트 액세스의 경우 장애 조치(failover) 파트너 속성은 데이터베이스 미러링 장애 조치(failover)를 처리할 수 있지만 FCI 장애 조치(failover)는 처리할 수 없습니다.

MSDTC

FCI는 MSDTC(Microsoft Distributed Transaction Coordinator)에서 조정하는 분산 트랜잭션에 참여할 수 있습니다. 클러스터형 MSDTC 및 로컬 MSDTC는 FCI DNN에서 지원됩니다. Azure에서 클러스터형 MSDTC 배포 시 Azure Load Balancer가 필요합니다.

FCI에 정의된 DNN은 클러스터형 MSDTC에 대해 Azure Load Balancer 요구 사항을 대체하지 않습니다.

FileStream

FileStream은 FCI의 데이터베이스에 대해 지원되지만 DNN과 함께 파일 시스템 API를 사용하여 FileStream 또는 FileTable에 액세스하는 것은 지원되지 않습니다.

연결된 서버

FCI DNN과 연결된 서버를 사용하는 것이 지원됩니다. DNN을 직접 사용하여 연결된 서버를 구성하거나 네트워크 별칭을 사용하여 VNN을 DNN에 매핑합니다.

예를 들어 명명된 인스턴스 insta1에 대해 DNN DNS 이름 dnnlsnr을 사용하여 연결된 서버를 만들려면 다음 T-SQL(Transact-SQL) 명령을 사용합니다.

USE [master]   
GO   

EXEC master.dbo.sp_addlinkedserver    
    @server = N'dnnlsnr\inst1',    
    @srvproduct=N'SQL Server' ;   
GO 

또는 VNN(가상 네트워크 이름)을 사용하여 연결된 서버를 만들 수 있지만 그런 다음 VNN을 DNN에 매핑하려면 네트워크 별칭을 정의해야 합니다.

예를 들어 인스턴스 이름 insta1, VNN 이름 vnnname 및 DNN 이름 dnnlsnr의 경우 다음 T-SQL(Transact-SQL) 명령을 사용하여 VNN을 사용하는 연결된 서버를 만듭니다:

USE [master]
GO   

EXEC master.dbo.sp_addlinkedserver   
    @server = N'vnnname\inst1',    
    @srvproduct=N'SQL Server' ;   
GO 

그런 다음 vnnname\insta1dnnlsnr\insta1을 매핑하는 네트워크 별칭을 만듭니다.

자주 묻는 질문

  • DNN 지원을 제공하는 SQL Server 버전은 무엇인가요?

    SQL Server 2019 CU2 이상입니다.

  • DNN을 사용할 때 예상되는 장애 조치(failover) 시간은 얼마나 되나요?

    DNN의 경우 장애 조치(failover) 시간은 추가 시간(예: Azure Load Balancer를 사용하는 경우 프로브 시간) 없이 FCI 장애 조치(failover) 시간일 뿐입니다.

  • SQL 클라이언트가 OLEDB와 ODBC로 DNN을 지원하는 데 필요한 버전 요구 사항이 있나요?

    DNN에 대한 MultiSubnetFailover=True 연결 문자열 지원을 권장합니다. SQL Server 2012(11.x)부터 사용할 수 있습니다.

  • DNN을 사용하려면 SQL Server 구성 변경이 필요한가요?

    SQL Server에서는 DNN을 사용하기 위해 구성을 변경할 필요가 없지만 일부 SQL Server 기능에는 더 많은 고려 사항이 필요할 수 있습니다.

  • DNN은 다중 서브넷 클러스터를 지원하나요?

    예. 클러스터는 서브넷에 관계없이 클러스터에 있는 모든 노드의 실제 IP 주소로 DNS의 DNN을 바인딩합니다. SQL 클라이언트는 서브넷에 관계없이 DNS 이름의 모든 IP 주소를 시도합니다.

다음 단계

자세한 내용은 다음을 참조하세요.