다음을 통해 공유


장애 조치(failover) 클러스터 인스턴스에 대한 DNN 구성

적용 대상: Azure VM 기반 SQL Server

Azure 가상 머신에서 DNN(분산 네트워크 이름)은 트래픽을 적절한 클러스터형 리소스로 라우팅합니다. Azure Load Balancer 없이 가상 네트워크 이름(VNN)보다 SQL Server 페일오버 클러스터 인스턴스(FCI)에 더 쉽게 연결하는 방법을 제공합니다.

이 문서에서는 부하 분산 장치는 HADR(고가용성 및 재해 복구)을 위해 Azure VM 기반 SQL Server를 사용하여 트래픽을 장애 조치(failover) 클러스터 인스턴스로 라우팅하도록 DNN 리소스를 구성하는 방법을 설명합니다.

대체 연결 옵션의 경우 대신 가상 네트워크 이름 및 Azure Load Balancer를 고려하세요.

개요

DNN(분산 네트워크 이름)은 SQL Server VM의 Always On 장애 조치(failover) 클러스터 인스턴스와 함께 사용 시 연결점으로 VNN(가상 네트워크 이름)을 바꿉니다. 이렇게 하면 Azure Load Balancer가 트래픽을 VNN으로 라우팅할 필요가 없어 배포, 유지 관리가 단순화되고 장애 조치(failover)가 향상됩니다.

FCI 배포를 사용하면 VNN은 여전히 존재하지만 클라이언트는 VNN 이름 대신 DNN DNS 이름에 연결합니다.

SQL Server VM(가상 머신)을 동일한 Azure 가상 네트워크 내의 여러 서브넷에 만들면 배포를 간소화할 수 있고 Azure Load Balancer 또는 DNN(분산 네트워크 이름)을 장애 조치(failover) 클러스터 인스턴스에 사용할 필요가 없습니다.

필수 구성 요소

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

참고 항목

같은 클러스터에 AG 또는 FCI가 여러 개이고, DNN 또는 VNN 수신기를 사용하는 경우 각 AG 또는 FCI에 독자적인 연결점이 필요합니다.

DNN 리소스 만들기

DNN 리소스는 SQL Server FCI와 동일한 클러스터 그룹에 만들어집니다. PowerShell을 사용하여 FCI 클러스터 그룹 내에 DNN 리소스를 만듭니다.

다음 PowerShell 명령은 리소스 이름이 <dnnResourceName>인 SQL Server FCI 클러스터 그룹에 DNN 리소스를 추가합니다. 리소스 이름은 리소스를 고유하게 식별하는 데 사용됩니다. 사용자에게 의미가 있고 클러스터 전체에서 고유한 이름을 사용합니다. 리소스 종류는 Distributed Network Name이어야 합니다.

-Group 값은 분산 네트워크 이름을 추가할 SQL Server FCI에 해당하는 클러스터 그룹 이름이어야 합니다. 기본 인스턴스의 경우 일반적인 형식은 SQL Server (MSSQLSERVER)입니다.

Add-ClusterResource -Name <dnnResourceName> `
-ResourceType "Distributed Network Name" -Group "<WSFC role of SQL Server instance>"

예를 들어 기본 SQL Server FCI에 대한 DNN 리소스dnn-demo를 생성하려면 다음 PowerShell 명령을 사용하세요.

Add-ClusterResource -Name dnn-demo `
-ResourceType "Distributed Network Name" -Group "SQL Server (MSSQLSERVER)"

클러스터 DNN DNS 이름 설정

클러스터의 DNN 리소스에 대한 DNS 이름을 설정하세요. 그런 다음 클러스터는 이 값을 사용하여 현재 SQL Server FCI를 호스팅하는 노드로 트래픽을 라우팅합니다.

클라이언트는 DNS 이름을 사용하여 SQL Server FCI에 연결합니다. 고유한 값을 선택할 수 있습니다. 또는 기존 FCI가 이미 있고 클라이언트 연결 문자열 업데이트하지 않으려는 경우 클라이언트가 이미 사용하고 있는 현재 VNN을 사용하도록 DNN을 구성할 수 있습니다. 이렇게 하려면 DNS에서 DNN을 설정하기 전에 VNN의 이름을 바꿔야 합니다.

DNN의 DNS 이름을 설정하려면 다음 명령을 사용하세요.

Get-ClusterResource -Name <dnnResourceName> | `
Set-ClusterParameter -Name DnsName -Value <DNSName>

DNSName 값은 클라이언트가 SQL Server FCI에 연결하는 데 사용하는 값입니다. 예를 들어 클라이언트가 FCIDNN에 연결하려면 다음 PowerShell 명령을 사용합니다.

Get-ClusterResource -Name dnn-demo | `
Set-ClusterParameter -Name DnsName -Value FCIDNN

이제 클라이언트는 SQL Server FCI에 연결할 때 연결 문자열에 FCIDNN을 입력합니다.

Warning

현재 가상 네트워크 이름(VNN)은 FCI 인프라의 필수 구성 요소이므로 삭제하지 마세요.

VNN 이름 바꾸기

기존 가상 네트워크 이름이 있고 클라이언트가 이 값을 계속 사용하여 SQL Server FCI에 연결하도록 하려면 현재 VNN의 이름을 자리 표시자 값으로 바꿔야 합니다. 현재 VNN의 이름을 바꾼 후 DNN의 DNS 이름 값을 VNN으로 설정할 수 있습니다.

VNN 이름 바꾸기에는 몇 가지 제한 사항이 적용됩니다. 자세한 내용은 FCI 이름 바꾸기를 참조하세요.

비즈니스에 현재 VNN을 사용할 필요가 없는 경우 이 섹션을 건너뜁니다. VNN 이름을 변경한 후 클러스터 DNN DNS 이름을 설정하세요.

온라인으로 DNN 리소스 설정

DNN 리소스의 이름을 적절하게 지정하고 클러스터에서 DNS 이름 값을 설정한 후 PowerShell을 사용하여 클러스터에서 DNN 리소스를 온라인으로 설정합니다.

Start-ClusterResource -Name <dnnResourceName>

예를 들어 DNN 리소스dnn-demo을 시작하려면 다음 PowerShell 명령을 사용하세요.

Start-ClusterResource -Name dnn-demo

가능한 소유자 구성

기본적으로 클러스터는 DNN DNS 이름을 클러스터의 모든 노드에 바인딩합니다. 그러나 SQL Server FCI의 일부가 아닌 클러스터의 노드는 DNN 가능한 소유자 목록에서 제외되어야 합니다.

가능한 소유자를 업데이트하려면 다음 단계를 수행합니다.

  1. 장애 조치(failover) 클러스터 관리자의 DNN 리소스로 이동하세요.

  2. DNN 리소스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    속성 명령이 강조 표시된 DNN 리소스의 바로 가기 메뉴

  3. 장애 조치(failover) 클러스터 인스턴스에 참여하지 않는 노드 확인란의 선택을 취소하세요. DNN 리소스에 대한 가능한 소유자 목록은 SQL Server 인스턴스 리소스에 대한 가능한 소유자 목록과 일치해야 합니다. 예를 들어 Data3이 FCI에 참여하지 않는다고 가정하면 다음 이미지는 DNN 리소스에 대한 가능한 소유자 목록에서 Data3을 제거하는 예제입니다.

    DNN 리소스의 가능한 소유자에 대해 FCI에 참여하지 않는 노드 옆의 확인란 선택 취소

  4. 설정을 저장하려면 확인을 선택합니다.

SQL Server 인스턴스 다시 시작

장애 조치(failover) 클러스터 관리자를 사용하여 SQL Server 인스턴스를 다시 시작합니다. 다음 단계를 수행합니다.

  1. 장애 조치(failover) 클러스터 관리자의 SQL Server 리소스로 이동합니다.
  2. SQL Server 리소스를 마우스 오른쪽 버튼으로 클릭하고 오프라인으로 전환하세요.
  3. 연결된 모든 리소스가 오프라인 상태가 되면 SQL Server 리소스를 마우스 오른쪽 버튼으로 클릭하고 다시 온라인으로 전환하세요.

연결 문자열 업데이트

SQL Server FCI DNN에 연결하는 애플리케이션의 연결 문자열을 업데이트하고 연결 문자열에 MultiSubnetFailover=True를 포함합니다. 클라이언트가 MultiSubnetFailover 매개 변수를 지원하지 않으면 DNN과 호환되지 않습니다.

다음은 DNS 이름이 FCIDNN인 SQL FCI DNN에 대한 예제 연결 문자열입니다.

Data Source=FCIDNN, MultiSubnetFailover=True

또한 DNN이 원래 VNN을 사용하지 않는 경우 SQL Server FCI에 연결하는 SQL 클라이언트는 해당 연결 문자열을 DNN DNS 이름으로 업데이트해야 합니다. 이 요구 사항을 방지하려면 DNS 이름 값을 VNN의 이름으로 업데이트할 수 있습니다. 하지만 먼저 기존 VNN을 자리 표시자로 바꿔야 합니다.

테스트 장애 조치

클러스터 기능의 유효성을 검사하기 위해 클러스터형 리소스의 장애 조치(failover)를 테스트하세요.

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

  1. RDP 또는 Bastion을 사용하여 SQL Server 클러스터 노드 중 하나에 연결합니다.
  2. 장애 조치(failover) 클러스터 관리자를 엽니다. 역할을 선택합니다. SQL Server FCI 역할을 소유하는 노드를 살펴봅니다.
  3. SQL Server FCI 역할을 마우스 오른쪽 단추로 클릭합니다.
  4. 이동을 선택한 다음 가장 적합한 노드를 선택합니다.

장애 조치(failover) 클러스터 관리자는 역할을 보여 주며 해당 리소스는 오프라인으로 전환됩니다. 그런 다음 리소스가 이동하고 다른 노드에서 온라인 상태로 다시 전환됩니다.

연결 테스트

연결을 테스트하려면 동일한 가상 네트워크의 다른 가상 머신에 로그인합니다. SQL Server Management Studio를 열고 DNN DNS 이름을 사용하여 SQL Server FCI에 연결합니다.

필요한 경우 SQL Server Management Studio를 다운로드할 수 있습니다.

IP 충돌 방지

이는 FCI 리소스에서 사용하는 VIP(가상 IP) 주소가 Azure의 다른 리소스에 중복으로 할당되는 것을 방지하기 위한 선택적 단계입니다.

이제 고객이 DNN을 사용하여 SQL Server FCI에 연결하지만 가상 네트워크 이름(VNN) 및 가상 IP는 FCI 인프라의 필수 구성 요소이므로 삭제할 수 없습니다. 그러나 Azure에서 가상 IP 주소를 예약하는 부하 분산 장치가 더 이상 없으므로 가상 네트워크의 다른 리소스에 FCI에서 사용하는 가상 IP 주소와 동일한 IP 주소가 할당될 위험이 있습니다. 이로 인해 중복된 IP 충돌 문제가 발생할 수 있습니다.

IP 주소를 예약하도록 APIPA 주소 또는 전용 네트워크 어댑터를 구성합니다.

APIPA 주소

중복 IP 주소를 사용하지 않도록 하려면 APIPA 주소(링크-로컬 주소라고도 함)를 구성합니다. 이렇게 하려면 다음 명령을 실행합니다.

Get-ClusterResource "virtual IP address" | Set-ClusterParameter 
    –Multiple @{"Address"="169.254.1.1";"SubnetMask"="255.255.0.0";"OverrideAddressMatch"=1;"EnableDhcp"=0}

이 명령에서 "가상 IP 주소"는 클러스터형 VIP 주소 리소스의 이름이고 "169.254.1.1"은 VIP 주소에 대해 선택된 APIPA 주소입니다. 비즈니스에 가장 적합한 주소를 선택합니다. APIPA 주소 공간을 포함하여 IP 주소가 모든 네트워크에 있을 수 있도록 하려면 OverrideAddressMatch=1을 설정합니다.

전용 네트워크 어댑터

또는 가상 IP 주소 리소스에서 사용하는 IP 주소를 예약하도록 Azure에서 네트워크 어댑터를 구성합니다. 그러나 이렇게 하면 서브넷 주소 공간의 주소가 이용되며 네트워크 어댑터가 다른 용도로 사용되지 않도록 하는 추가 오버헤드가 있습니다.

제한 사항

  • DNN 수신기에 연결하는 클라이언트는 연결 문자열에서 MultiSubnetFailover=True 매개 변수를 지원해야 합니다.
  • 다른 SQL Server 기능 및 DNN이 있는 FCI로 작업하는 경우 고려해야 할 사항이 더 많을 수 있습니다. 자세한 내용은 SQL Server FCI 및 DNN의 기능 상호 운용성을 참조하세요.

다음 단계

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