가용성 그룹에 대한 DNN 수신기 구성

적용 대상:Azure VM 기반 SQL Server

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

단일 서브넷의 Azure VM에서 SQL Server를 사용하면 DNN(분산 네트워크 이름)은 트래픽을 적절한 클러스터 리소스로 라우팅합니다. 또한 Azure Load Balancer 없이도 VNN(가상 네트워크 이름) 수신기보다 Always On AG(가용성 그룹)에 연결하는 더 쉬운 방법을 제공합니다.

이 문서에서는 VNN 수신기를 대체하도록 DNN 수신기를 구성하고 HADR(고가용성 및 재해 복구)을 위해 Azure VM 기반 SQL Server를 사용하여 가용성 그룹으로 트래픽을 라우팅하는 방법을 설명합니다.

대체 연결 옵션의 경우 VNN 수신기와 Azure Load Balancer를 고려해보시기 바랍니다.

개요

DNN(분산 네트워크 이름) 수신기는 SQL Server VM의 Always On 가용성 그룹과 함께 사용 시 기존 VNN(가상 네트워크 이름) 가용성 그룹 수신기를 대체합니다. 이렇게 하면 Azure Load Balancer가 트래픽을 라우팅할 필요가 없어 배포, 유지 관리가 단순화되고 장애 조치(failover)가 향상됩니다.

가용성 그룹에 VNN 수신기 이름 및 포트(기본이 아닌 경우)를 사용하는 연결점과 DNN 수신기 이름 및 포트를 사용하는 연결점, 이렇게 두 개의 고유한 연결점이 있도록 DNN 수신기를 사용하여 기존 VNN 수신기를 바꾸거나, 기존 VNN 수신기와 함께 사용합니다.

주의

DNN을 사용할 때의 라우팅 동작은 VNN을 사용할 때와 다릅니다. 포트 1433을 사용하지 마세요. 자세한 내용은 이 문서 뒷부분에 나오는 포트 고려 사항 섹션을 참조하세요.

필수 구성 요소

이 문서의 단계를 완료하기 전에 다음이 준비되어 있어야 합니다.

스크립트 만들기

PowerShell을 사용하여 DNN(분산 네트워크 이름) 리소스를 만들고 가용성 그룹과 연결합니다.

이렇게 하려면 다음 단계를 수행합니다.

  1. 메모장과 같은 텍스트 편집기를 엽니다.

  2. 다음 스크립트를 복사하여 붙여넣습니다.

    param (
       [Parameter(Mandatory=$true)][string]$Ag,
       [Parameter(Mandatory=$true)][string]$Dns,
       [Parameter(Mandatory=$true)][string]$Port
    )
    
    Write-Host "Add a DNN listener for availability group $Ag with DNS name $Dns and port $Port"
    
    $ErrorActionPreference = "Stop"
    
    # create the DNN resource with the port as the resource name
    Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag 
    
    # set the DNS name of the DNN resource
    Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns 
    
    # start the DNN resource
    Start-ClusterResource -Name $Port
    
    
    $Dep = Get-ClusterResourceDependency -Resource $Ag
    if ( $Dep.DependencyExpression -match '\s*\((.*)\)\s*' )
    {
    $DepStr = "$($Matches.1) or [$Port]"
    }
    else
    {
    $DepStr = "[$Port]"
    }
    
    Write-Host "$DepStr"
    
    # add the Dependency from availability group resource to the DNN resource
    Set-ClusterResourceDependency -Resource $Ag -Dependency "$DepStr"
    
    
    #bounce the AG resource
    Stop-ClusterResource -Name $Ag
    Start-ClusterResource -Name $Ag
    
  3. 스크립트를 .ps1 파일로 저장합니다(예: add_dnn_listener.ps1).

스크립트 실행

DNN 수신기를 만들려면 가용성 그룹 이름, 수신기 이름 및 포트에 대한 매개 변수를 전달하는 스크립트를 실행합니다.

예를 들어 가용성 그룹 이름이 ag1, 수신기 이름이 dnnlsnr, 수신기 포트가 6789라고 가정하면 다음 단계를 따라야 합니다.

  1. 명령 프롬프트 또는 PowerShell과 같은 명령줄 인터페이스 도구를 엽니다.

  2. .ps1 스크립트를 저장한 위치(예: c:\Documents)로 이동합니다.

  3. add_dnn_listener.ps1 <ag name> <listener-name> <listener port> 스크립트를 실행합니다. 예시:

    c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
    

수신기 확인

SQL Server Management Studio 또는 Transact-SQL을 사용하여 DNN 수신기가 성공적으로 만들어졌는지 확인합니다.

SQL Server Management Studio

SQL Server Management Studio(SSMS)에서 가용성 그룹 수신기를 확장하여 DNN 수신기를 확인합니다.

View the DNN listener under availability group listeners in SQL Server Management Studio (SSMS)

Transact-SQL

Transact-SQL을 사용하여 DNN 수신기의 상태를 확인합니다.

SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS

1is_distributed_network_name은 수신기가 DNN(분산 네트워크 이름) 수신기임을 나타냅니다.

Use sys.availability_group_listeners to identify DNN listeners that have a value of 1 in is_distributed_network_name

연결 문자열 업데이트

DNN 수신기에 연결해야 하는 모든 애플리케이션의 연결 문자열을 업데이트합니다. DNN 수신기에 대한 연결 문자열은 DNN 포트 번호를 제공하고 연결 문자열에서 MultiSubnetFailover=True를 지정해야 합니다. SQL 클라이언트가 MultiSubnetFailover=True 매개 변수를 지원하지 않는 경우 DNN 수신기와 호환되지 않습니다.

다음은 수신기 이름 DNN_Listener 및 포트 6789에 대한 연결 문자열의 예입니다.

DataSource=DNN_Listener,6789;MultiSubnetFailover=True

테스트 장애 조치

가용성 그룹의 장애 조치(failover)를 테스트하여 기능을 확인합니다.

장애 조치(failover)를 테스트하려면 다음 단계를 수행하세요.

  1. SQL Server Management Studio(SSMS)를 사용하여 DNN 수신기 또는 복제본(replica) 중 하나에 연결합니다.
  2. 개체 탐색기에서 Always On 가용성 그룹을 확장합니다.
  3. 가용성 그룹을 마우스 오른쪽 단추로 클릭하고 장애 조치(failover)를 선택하여 장애 조치(failover) 마법사를 엽니다.
  4. 메시지에 따라 장애 조치(failover) 대상을 선택하고 보조 복제본에 대한 가용성 그룹을 장애 조치(failover)합니다.
  5. 데이터베이스가 새 주 복제본에서 동기화된 상태인지 확인합니다.
  6. (선택 사항) 원래 주 복제본(replica)이나 다른 보조 복제본(replica)으로 장애 복구합니다.

연결 테스트

다음 단계를 사용하여 DNN 수신기에 대한 연결을 테스트합니다.

  1. SQL Server Management Studio를 엽니다.
  2. DNN 수신기에 연결합니다.
  3. 새 쿼리 창을 열고 SELECT @@SERVERNAME을 실행하여 어떤 복제본에 연결되어 있는지 확인합니다.
  4. 가용성 그룹을 다른 복제본(replica)으로 장애 조치(failover)합니다.
  5. 적당한 시간이 지난 후 SELECT @@SERVERNAME을 실행하여 가용성 그룹이 이제 다른 복제본(replica)에서 호스트되는지 확인합니다.

제한 사항

  • 고유한 포트로 DNN 수신기를 구성해야 합니다. 복제본(replica)의 다른 연결과 포트를 공유할 수 없습니다.
  • DNN 수신기에 연결하는 클라이언트는 연결 문자열에서 MultiSubnetFailover=True 매개 변수를 지원해야 합니다.
  • 다른 SQL Server 기능 및 DNN 지원 가용성 그룹으로 작업하는 경우 추가 고려 사항이 있을 수 있습니다. 자세한 내용은 DNN 상호 운용성을 갖춘 AG를 참조하세요.

포트 고려 사항

DNN 수신기는 모든 IP 주소와 특정 고유 포트에서 수신 대기하도록 설계되었습니다. 수신기 이름에 대한 DNS 항목은 가용성 그룹의 모든 복제본(replica) 주소로 확인되어야 합니다. 이 작업은 스크립트 만들기 섹션에 제공된 PowerShell 스크립트를 사용하여 자동으로 수행됩니다. DNN 수신기는 모든 IP 주소에 대한 연결을 허용하므로 수신기 포트가 고유하고 가용성 그룹의 다른 복제본에서는 사용되지 않는 것이 중요합니다. SQL Server는 기본적으로 직접 또는 SQL Browser 서비스를 통해 포트 1433을 수신 대기하므로 DNN 수신기에 포트 1433을 사용하는 것은 권장되지 않습니다.

VNN 수신기에 대해 선택된 수신기 포트가 49,152~65,536(TCP/IP의 기본 동적 포트 범위)인 경우 이에 대한 제외를 추가합니다. 이렇게 하면 다른 시스템에 동적으로 동일한 포트가 할당되는 것을 방지할 수 있습니다.

netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent 명령을 사용하여 포트 제외를 추가할 수 있습니다.

다음 단계

가용성 그룹이 배포되면 Azure VM에서 SQL Server에 대한 HADR 설정을 최적화하는 것이 좋습니다.

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