虛擬網路中的客體叢集

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Azure Stack HCI,版本 21H2 和 20H2

連線到虛擬網路的虛擬機器只能使用網路控制站指派的 IP 位址,在網路上進行通訊。 需要浮動 IP 位址的叢集技術 (例如 Microsoft 容錯移轉叢集),需要一些額外的步驟才能正常運作。

讓浮動 IP 可連線的方法,就是使用軟體負載平衡器 (SLB) 虛擬 IP (VIP)。 軟體負載平衡器必須在該 IP 的連接埠上設定健全狀態探查,以便 SLB 將流量導向至目前具有該 IP 的電腦。

範例:負載平衡器設定

此範例假設您已建立將成為叢集節點的 VM,並將其連結至虛擬網路。 如需指引,請參閱建立 VM 並連線至租用戶虛擬網路或 VLAN

在此範例中,您將建立虛擬 IP 位址 (192.168.2.100) 來代表叢集的浮動 IP 位址,並設定健全狀態探查來監視 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 上的其他連接埠和通訊協定重複此步驟多次。 務必將 EnableFloatingIP 設定為 $true,因為這會告知負載平衡器將封包傳送至具備原始 VIP 的節點。

    $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 容錯移轉叢集,請繼續進行下一個範例。

範例 2:設定 Microsoft 容錯移轉叢集

您可以使用下列步驟來設定容錯移轉叢集。

  1. 安裝及設定容錯移轉叢集的屬性。

    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 的流量會導向作用中節點。