虛擬網路中的客體叢集
連線到虛擬網路的虛擬機器只能使用網路控制站指派的 IP 位址,在網路上進行通訊。 需要浮動 IP 位址的叢集技術 (例如 Microsoft 容錯移轉叢集),需要一些額外的步驟才能正常運作。
讓浮動 IP 可連線的方法,就是使用軟體負載平衡器 (SLB) 虛擬 IP (VIP)。 軟體負載平衡器必須在該 IP 的連接埠上設定健全狀態探查,以便 SLB 將流量導向至目前具有該 IP 的電腦。
範例:負載平衡器設定
此範例假設您已建立將成為叢集節點的 VM,並將其連結至虛擬網路。 如需指引,請參閱建立 VM 並連線至租用戶虛擬網路或 VLAN。
在此範例中,您將建立虛擬 IP 位址 (192.168.2.100) 來代表叢集的浮動 IP 位址,並設定健全狀態探查來監視 TCP 連接埠 59999,以判斷哪個節點是作用中節點。
選取 VIP。
藉由指派 VIP IP 位址進行準備,該位址可以是與叢集節點位於相同子網路的任何未使用或保留位址。 VIP 必須符合叢集的浮動位址。
$VIP = "192.168.2.100" $subnet = "Subnet2" $VirtualNetwork = "MyNetwork" $ResourceId = "MyNetwork_InternalVIP"
建立負載平衡器屬性物件。
$LoadBalancerProperties = new-object Microsoft.Windows.NetworkController.LoadBalancerProperties
建立前端 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"
建立後端集區以包含叢集節點。
$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
新增探查,以偵測浮動位址目前在其上作用的叢集節點。
注意
探查查詢是針對 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
新增 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
在網路控制站中建立負載平衡器。
$lb = New-NetworkControllerLoadBalancer -ConnectionUri $URI -ResourceId $ResourceId -Properties $LoadBalancerProperties -Force
將叢集節點新增至後端集區。
您可以視需要將多個節點新增至叢集的集區。
# 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
建立負載平衡器並將網路介面新增至後端集區之後,即可設定叢集。
(選擇性) 如果您使用 Microsoft 容錯移轉叢集,請繼續進行下一個範例。
範例 2:設定 Microsoft 容錯移轉叢集
您可以使用下列步驟來設定容錯移轉叢集。
安裝及設定容錯移轉叢集的屬性。
add-windowsfeature failover-clustering -IncludeManagementTools Import-module failoverclusters $ClusterName = "MyCluster" $ClusterNetworkName = "Cluster Network 1" $IPResourceName = $ILBIP = "192.168.2.100" $nodes = @("DB1", "DB2")
在一個節點上建立叢集。
New-Cluster -Name $ClusterName -NoStorage -Node $nodes[0]
停止叢集資源。
Stop-ClusterResource "Cluster Name"
設定叢集 IP 和探查連接埠。
IP 位址必須符合上一個範例中使用的前端 IP 位址,而探查連接埠必須符合上一個範例中的探查連接埠。
Get-ClusterResource "Cluster IP Address" | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
啟動叢集資源。
Start-ClusterResource "Cluster IP Address" -Wait 60 Start-ClusterResource "Cluster Name" -Wait 60
新增其餘節點。
Add-ClusterNode $nodes[1]
您的叢集為作用中。前往指定連接埠上 VIP 的流量會導向作用中節點。