Share via


가상 네트워크의 게스트 클러스터링

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, 버전 21H2 및 20H2

가상 네트워크에 연결된 가상 머신은 네트워크 컨트롤러가 네트워크에서 통신하도록 할당한 IP 주소만 사용할 수 있습니다. Microsoft 장애 조치(failover) 클러스터링과 같은 부동 IP 주소가 필요한 클러스터링 기술에는 제대로 작동하려면 몇 가지 추가 단계가 필요합니다.

부동 IP에 연결할 수 있도록 하는 방법은 SLB(소프트웨어 Load Balancer) VIP(가상 IP)를 사용하는 것입니다. SLB가 현재 해당 IP가 있는 컴퓨터로 트래픽을 보내도록 해당 IP의 포트에 상태 프로브를 사용하여 소프트웨어 부하 분산 장치를 구성해야 합니다.

예: 부하 분산 장치 구성

이 예제에서는 클러스터 노드가 될 VM을 이미 만들고 Virtual Network에 연결했다고 가정합니다. 지침은 VM 만들기를 참조하고 테넌트 Virtual Network 또는 VLAN에 커넥트.

이 예제에서는 클러스터의 부동 IP 주소를 나타내는 가상 IP 주소(192.168.2.100)를 만들고 활성 노드를 확인하기 위해 TCP 포트 59999를 모니터링하도록 상태 프로브를 구성합니다.

  1. VIP를 선택합니다.

    클러스터 노드와 동일한 서브넷에서 사용되지 않거나 예약된 주소일 수 있는 VIP IP 주소를 할당하여 준비합니다. VIP는 클러스터의 부동 주소와 일치해야 합니다.

    $VIP = "192.168.2.100"
    $subnet = "Subnet2"
    $VirtualNetwork = "MyNetwork"
    $ResourceId = "MyNetwork_InternalVIP"
    
  2. 부하 분산 장치 속성 개체를 만듭니다.

    $LoadBalancerProperties = new-object Microsoft.Windows.NetworkController.LoadBalancerProperties
    
  3. 프런트 엔드 IP 주소를 만듭니다.

    $LoadBalancerProperties.frontendipconfigurations += $FrontEnd = new-object Microsoft.Windows.NetworkController.LoadBalancerFrontendIpConfiguration
    $FrontEnd.properties = new-object Microsoft.Windows.NetworkController.LoadBalancerFrontendIpConfigurationProperties
    $FrontEnd.resourceId = "Frontend1"
    $FrontEnd.resourceRef = "/loadBalancers/$ResourceId/frontendIPConfigurations/$($FrontEnd.resourceId)"
    $FrontEnd.properties.subnet = new-object Microsoft.Windows.NetworkController.Subnet
    $FrontEnd.properties.subnet.ResourceRef = "/VirtualNetworks/MyNetwork/Subnets/Subnet2"
    $FrontEnd.properties.privateIPAddress = $VIP
    $FrontEnd.properties.privateIPAllocationMethod = "Static"
    
  4. 클러스터 노드를 포함할 백 엔드 풀을 만듭니다.

    $BackEnd = new-object Microsoft.Windows.NetworkController.LoadBalancerBackendAddressPool
    $BackEnd.properties = new-object Microsoft.Windows.NetworkController.LoadBalancerBackendAddressPoolProperties
    $BackEnd.resourceId = "Backend1"
    $BackEnd.resourceRef = "/loadBalancers/$ResourceId/backendAddressPools/$($BackEnd.resourceId)"
    $LoadBalancerProperties.backendAddressPools += $BackEnd
    
  5. 프로브를 추가하여 부동 주소가 현재 활성 상태인 클러스터 노드를 검색합니다.

    참고 항목

    아래에 정의된 포트에서 VM의 영구 주소에 대한 프로브 쿼리입니다. 포트는 활성 노드에서만 응답해야 합니다.

    $LoadBalancerProperties.probes += $lbprobe = new-object Microsoft.Windows.NetworkController.LoadBalancerProbe
    $lbprobe.properties = new-object Microsoft.Windows.NetworkController.LoadBalancerProbeProperties
    
    $lbprobe.ResourceId = "Probe1"
    $lbprobe.resourceRef = "/loadBalancers/$ResourceId/Probes/$($lbprobe.resourceId)"
    $lbprobe.properties.protocol = "TCP"
    $lbprobe.properties.port = "59999"
    $lbprobe.properties.IntervalInSeconds = 5
    $lbprobe.properties.NumberOfProbes = 11
    
  6. TCP 포트 1433에 대한 부하 분산 규칙을 추가합니다.

    필요에 따라 프로토콜 및 포트를 수정할 수 있습니다. 이 VIP의 다른 포트 및 프로토콜에 대해 이 단계를 여러 번 반복할 수도 있습니다. 원래 VIP가 있는 노드로 패킷을 보내도록 부하 분산 장치에 지시하기 때문에 EnableFloatingIP를 $true 설정해야 합니다.

    $LoadBalancerProperties.loadbalancingRules += $lbrule = new-object Microsoft.Windows.NetworkController.LoadBalancingRule
    $lbrule.properties = new-object Microsoft.Windows.NetworkController.LoadBalancingRuleProperties
    $lbrule.ResourceId = "Rules1"
    
    $lbrule.properties.frontendipconfigurations += $FrontEnd
    $lbrule.properties.backendaddresspool = $BackEnd
    $lbrule.properties.protocol = "TCP"
    $lbrule.properties.frontendPort = $lbrule.properties.backendPort = 1433
    $lbrule.properties.IdleTimeoutInMinutes = 4
    $lbrule.properties.EnableFloatingIP = $true
    $lbrule.properties.Probe = $lbprobe
    
  7. 네트워크 컨트롤러에서 부하 분산 장치를 만듭니다.

    $lb = New-NetworkControllerLoadBalancer -ConnectionUri $URI -ResourceId $ResourceId -Properties $LoadBalancerProperties -Force
    
  8. 백 엔드 풀에 클러스터 노드를 추가합니다.

    클러스터에 필요한 만큼의 노드를 풀에 추가할 수 있습니다.

    # Cluster Node 1
    
    $nic = get-networkcontrollernetworkinterface  -connectionuri $uri -resourceid "ClusterNode1_Network-Adapter"
    $nic.properties.IpConfigurations[0].properties.LoadBalancerBackendAddressPools += $lb.properties.backendaddresspools[0]
    $nic = new-networkcontrollernetworkinterface  -connectionuri $uri -resourceid $nic.resourceid -properties $nic.properties -force
    
     # Cluster Node 2
    
    $nic = get-networkcontrollernetworkinterface  -connectionuri $uri -resourceid "ClusterNode2_Network-Adapter"
    $nic.properties.IpConfigurations[0].properties.LoadBalancerBackendAddressPools += $lb.properties.backendaddresspools[0]
    $nic = new-networkcontrollernetworkinterface  -connectionuri $uri -resourceid $nic.resourceid -properties $nic.properties -force
    

    부하 분산 장치를 만들고 백 엔드 풀에 네트워크 인터페이스를 추가하면 클러스터를 구성할 준비가 된 것입니다.

  9. (선택 사항) Microsoft 장애 조치(failover) 클러스터를 사용하는 경우 다음 예제를 계속 진행합니다.

예제 2: Microsoft 장애 조치(failover) 클러스터 구성

다음 단계를 사용하여 장애 조치(failover) 클러스터를 구성할 수 있습니다.

  1. 장애 조치(failover) 클러스터에 대한 속성을 설치하고 구성합니다.

    add-windowsfeature failover-clustering -IncludeManagementTools
    Import-module failoverclusters
    
    $ClusterName = "MyCluster"
    
    $ClusterNetworkName = "Cluster Network 1"
    $IPResourceName =
    $ILBIP = "192.168.2.100"
    
    $nodes = @("DB1", "DB2")
    
  2. 한 노드에 클러스터를 만듭니다.

    New-Cluster -Name $ClusterName -NoStorage -Node $nodes[0]
    
  3. 클러스터 리소스를 중지합니다.

    Stop-ClusterResource "Cluster Name" 
    
  4. 클러스터 IP 및 프로브 포트를 설정합니다.

    IP 주소는 이전 예제에서 사용된 프런트 엔드 IP 주소와 일치해야 하며 프로브 포트는 이전 예제의 프로브 포트와 일치해야 합니다.

    Get-ClusterResource "Cluster IP Address" | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    
  5. 클러스터 리소스를 시작합니다.

     Start-ClusterResource "Cluster IP Address"  -Wait 60 
     Start-ClusterResource "Cluster Name"  -Wait 60 
    
  6. 다시 기본 노드를 추가합니다.

    Add-ClusterNode $nodes[1]
    

클러스터가 활성화되어 있습니다. 지정된 포트의 VIP로 가는 트래픽은 활성 노드로 전달됩니다.