AG VNN 수신기에 대해 Azure Load Balancer 구성 - Azure VM의 SQL Server

적용 대상:Azure VM 기반 SQL Server

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

Azure 가상 머신에서 클러스터는 한 번에 하나의 클러스터 노드에 있어야 하는 IP 주소를 저장하는 부하 분산 장치를 사용합니다. 이 솔루션에서 부하 분산 장치는 SQL Server VM이 단일 서브넷에 있을 때 Always On 가용성 그룹의 VNN(가상 네트워크 이름) 수신기에 대한 IP 주소를 보유합니다.

이 문서에서는 Azure Load Balancer 서비스를 사용하여 부하 분산 장치를 구성하는 방법을 안내합니다. 부하 분산 장치는 HADR(고가용성 및 재해 복구)을 위해 Azure VM의 SQL Server를 사용하여 트래픽을 가용성 그룹 수신기로 라우팅합니다.

SQL Server 2019 CU8 이상에 있는 고객을 위한 대체 연결 옵션으로 DNN(분산 네트워크 이름) 수신기를 대신 고려합니다. DNN 수신기는 간소화된 구성과 향상된 장애 조치(failover)를 제공합니다.

필수 구성 요소

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

부하 분산 장치 만들기

다음 유형의 부하 분산 장치 중 하나를 만들 수 있습니다.

  • 내부: 내부 부하 분산 장치는 네트워크 내부에 있는 프라이빗 리소스에서만 액세스할 수 있습니다. 내부 부하 분산 장치 및 해당 규칙을 구성하는 경우 프런트 엔드 IP의 가용성 그룹 수신기와 동일한 IP 주소를 사용합니다.

  • 외부: 외부 부하 분산 장치는 퍼블릭에서 내부 리소스로 트래픽을 라우팅할 수 있습니다. 외부 부하 분산 장치를 구성할 때는 수신기 IP 주소가 공용 IP 주소일 수 없으므로, 가용성 그룹 수신기와 동일한 IP 주소를 사용할 수 없습니다.

    외부 부하 분산 장치를 사용하려면 다른 IP 주소와 충돌하지 않는 가용성 그룹과 동일한 서브넷의 IP 주소를 논리적으로 할당합니다. 이 주소를 부하 분산 규칙의 프런트 엔드 IP 주소로 사용합니다.

중요

2025년 9월 30일에 Azure Load Balancer의 기본 SKU가 사용 중지됩니다. 자세한 내용은 공식 공지를 참조하세요. 현재 기본 Load Balancer를 사용 중인 경우 사용 중지 날짜 전에 표준 Load Balancer로 업그레이드합니다. 지침은 부하 부산 장치 업그레이드를 검토하세요.

부하 분산 장치를 만들려면:

  1. Azure Portal에서 가상 머신이 포함된 리소스 그룹으로 이동합니다.

  2. 추가를 선택합니다. Azure Marketplace에서 부하 분산 장치를 검색합니다. 부하 분산 장치를 선택합니다.

  3. 만들기를 선택합니다.

  4. 부하 분산 장치 만들기기본 사항 탭에서 다음 값을 사용하여 부하 분산 장치를 설정합니다.

    • 구독: Azure 구독.
    • 리소스 그룹: 가상 머신이 포함된 리소스 그룹을 선택합니다.
    • Name: 부하 분산 장치를 식별하는 이름입니다.
    • 지역: 가상 머신이 포함된 Azure 위치입니다.
    • SKU: 표준.
    • 유형: 퍼블릭 또는 내부 중 하나. 동일한 가상 네트워크 내에서 내부 부하 분산 장치에 액세스할 수 있습니다. 대부분의 Azure 애플리케이션은 내부 부하 분산 장치를 사용할 수 있습니다. 애플리케이션에 인터넷을 통해 직접 SQL Server에 대한 액세스가 필요한 경우 공개 부하 분산 장치를 사용합니다.
    • 계층: 지역.

    Screenshot of the Azure portal that shows the page for basic information about a load balancer.

  5. 다음: 프런트 엔드 IP 구성을 선택합니다.

  6. 프런트 엔드 IP 구성 추가를 선택합니다.

    Screenshot of the Azure portal that shows the button for adding a frontend IP configuration.

  7. 다음 값을 사용하여 프런트 엔드 IP 주소를 설정합니다.

    • 이름: 프런트 엔드 IP 구성을 식별하는 이름입니다.
    • 가상 네트워크: 가상 머신과 동일한 네트워크입니다.
    • 서브넷: 가상 머신과 동일한 서브넷입니다.
    • 할당: 고정.
    • IP 주소: 클러스터형 네트워크 리소스에 할당한 IP 주소입니다.
    • 가용성 영역: IP 주소를 배포할 선택적 가용성 영역입니다.

    Screenshot of the Azure portal that shows the page for configuring a frontend IP address.

  8. 추가를 선택하여 프런트 엔드 IP를 만듭니다.

  9. 검토 + 만들기를 선택하여 부하 분산 장치를 만듭니다.

백 엔드 풀 구성

  1. 가상 머신이 포함된 Azure 리소스 그룹으로 돌아가고 새 부하 분산 장치를 찾습니다. 리소스 그룹 보기를 새로 고쳐야 할 수도 있습니다. 부하 분산 장치를 선택합니다.

  2. 백 엔드 풀을 선택한 다음, +추가를 선택합니다.

  3. 이름에 백 엔드 풀의 이름을 입력합니다.

  4. 백 엔드 풀 구성에서 NIC를 선택합니다.

  5. 추가를 선택하여 VM이 포함된 가용성 집합과 백 엔드 풀을 연결합니다.

  6. 가상 머신에서 클러스터 노드로 참여하는 가상 머신을 선택합니다. 가용성 그룹을 호스트하는 모든 가상 머신을 포함해야 합니다.

    각 VM의 기본 IP 주소만 추가합니다. 보조 IP 주소를 추가하지 마세요.

  7. 추가를 선택하여 백 엔드 풀에 가상 머신을 추가합니다.

  8. 저장을 선택하여 백엔드 풀을 만듭니다.

상태 프로브 구성

  1. 부하 분산 장치 창에서 상태 프로브를 선택합니다.

  2. 상태 프로브 추가 창, 에서 다음 매개 변수를 설정합니다.

    • Name: 상태 프로브의 이름입니다.
    • 프로토콜: TCP.
    • 포트: 상태 프로브용 방화벽에서 만든 포트입니다. 이 문서의 예제는 TCP 포트 59999를 사용합니다.
    • 간격: 5초.
  3. 추가를 선택합니다.

부하 분산 규칙 설정

  1. 부하 분산 장치 창에서 부하 분산 규칙을 선택합니다.

  2. 추가를 선택합니다.

  3. 다음 매개 변수를 설정합니다.

    • 이름: 부하 분산 규칙의 이름입니다.
    • 프런트 엔드 IP 주소: 프런트 엔드를 구성할 때 설정한 IP 주소입니다.
    • 백 엔드 풀: 부하 분산 장치의 대상이 되는 가상 머신이 포함된 백 엔드 풀을 선택합니다.
    • HA 포트: TCP 및 UDP 프로토콜에 대한 모든 포트에서 부하 분산을 사용하도록 설정합니다.
    • 프로토콜: TCP.
    • 포트: SQL Server TCP 포트입니다. 기본값은 1433입니다.
    • 백 엔드 포트: 부동 IP(Direct Server Return) 를 활성화할 때 포트 값과 동일한 포트를 사용합니다.
    • 상태 프로브: 이전에 구성한 상태 프로브입니다.
    • 세션 지속성: 없음.
    • 유휴 시간 제한(분): 4.
    • 부동 IP(Direct Server Return) : 사용
  4. 저장을 선택합니다.

클러스터 프로브 구성

PowerShell에서 클러스터 프로브 포트 매개 변수를 설정합니다.

다음 스크립트의 변수를 사용자 환경의 값으로 업데이트합니다. 스크립트에서 꺾쇠 괄호(<>)를 제거합니다.

$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<AG Listener IP Address Resource Name>" 
$ILBIP = "<n.n.n.n>" 
[int]$ProbePort = <nnnnn>

Import-Module FailoverClusters

Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}

다음 표는 업데이트해야 하는 값을 보여 줍니다.

변수
ClusterNetworkName 네트워크에 대한 Windows Server 장애 조치 클러스터의 이름입니다. 장애 조치(failover) 클러스터 관리자>네트워크에서 네트워크를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 올바른 값은 일반 탭의 이름 아래에 있습니다.
IPResourceName AG 수신기의 IP 주소에 대한 리소스 이름입니다. 장애 조치(failover) 클러스터 관리자>역할서버 이름에서 IP 주소 리소스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 올바른 값은 일반 탭의 이름 아래에 있습니다.
ILBIP 내부 부하 분산 장치의 IP 주소입니다. 이 주소는 Azure Portal에서 내부 부하 분산 장치의 프런트 엔드 주소로 구성됩니다. 가용성 그룹 수신기와 동일한 프런트 엔드 IP 주소입니다. 이 주소는 IPResourceName 값이 있는 동일한 속성 페이지의 장애 조치(Failover) 클러스터 관리자에서 확인할 수 있습니다.
ProbePort 부하 분산 장치의 상태 프로브에서 구성한 프로브 포트입니다. 사용하지 않는 모든 TCP 포트는 유효합니다.
SubnetMask 클러스터 매개 변수의 서브넷 마스크입니다. TCP/IP 브로드캐스트 주소 255.255.255.255여야 합니다.

변경 내용은 IP 주소 리소스가 오프라인 상태가 되었다가 다시 온라인 상태가 될 때까지 적용되지 않습니다. 이 변경 내용이 적용되게 하려면 가용성 그룹의 장애 조치(failover)를 수행합니다. 클러스터 프로브를 설정한 후에는 PowerShell에서 모든 클러스터 매개 변수를 볼 수 있습니다. 다음 스크립트를 실행합니다.

Get-ClusterResource $IPResourceName | Get-ClusterParameter

연결 문자열 수정

이를 지원하는 클라이언트의 경우 MultiSubnetFailover=True를 연결 문자열에 추가합니다. MultiSubnetFailover 연결 옵션은 필수가 아니지만 서브넷 장애 조치 시간을 단축하는 이점이 있습니다. 클라이언트 드라이버가 각 IP 주소에 대해 TCP 소켓을 병렬로 열려고 하기 때문입니다. 클라이언트 드라이버는 첫 번째 IP 주소가 성공으로 응답할 때까지 기다립니다. 성공 응답이 제공된 후에는 클라이언트 드라이버가 연결에 해당 IP 주소를 사용합니다.

클라이언트가 MultiSubnetFailover 매개 변수를 지원하지 않는 경우 RegisterAllProvidersIPHostRecordTTL 설정을 수정하여 장애 조치 후 연결 지연을 방지할 수 있습니다.

PowerShell을 사용하여 RegisterAllProvidersIpHostRecordTTL 설정을 수정합니다.

Get-ClusterResource yourListenerName | Set-ClusterParameter RegisterAllProvidersIP 0  
Get-ClusterResource yourListenerName|Set-ClusterParameter HostRecordTTL 300 

자세한 내용은 SQL Server의 수신기 시간 제한에 대한 설명서를 참조하세요.

  • 단일 서브넷에 걸쳐 있는 HADR 솔루션의 경우에도 연결 문자열에서 MultiSubnetFailover parametertrue로 설정합니다. 이 설정은 연결 문자열을 업데이트할 필요 없이 서브넷의 향후 확장을 지원합니다.
  • 기본적으로 클라이언트는 클러스터 DNS 레코드를 20분 동안 캐시합니다. HostRecordTTL을 줄이면 캐시된 레코드의 TTL(Time to live)이 감소됩니다. 그러면 레거시 클라이언트가 더 빠르게 다시 연결할 수 있습니다. 이와 같이 HostRecordTTL 설정을 줄이면 DNS 서버로의 트래픽이 증가할 수 있습니다.

테스트 장애 조치

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

  1. SQL Server Management Studio를 열고 가용성 그룹 수신기에 연결합니다.
  2. 개체 탐색기에서 Always On 가용성 그룹을 확장합니다.
  3. 마우스 오른쪽 단추로 가용성 그룹을 클릭하고, 장애 조치를 선택합니다.
  4. 마법사의 안내에 따라 가용성 그룹을 보조 복제본으로 장애 조치합니다.

복제본이 역할을 전환하고 둘 다 동기화되면 장애 조치가 성공합니다.

연결 테스트

연결을 테스트하려면 동일한 가상 네트워크의 다른 가상 머신에 로그인합니다. SQL Server Management Studio를 열고 가용성 그룹 수신기에 연결합니다.

참고

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

다음 단계

VNN을 만든 후에는 SQL Server VM에 대한 클러스터 설정 최적화를 고려합니다.

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