仮想ネットワークでのゲスト クラスタリング
仮想ネットワークに接続されている仮想マシンは、ネットワーク コントローラーがネットワーク上で通信するために割り当てた IP アドレスのみを使用できます。 Microsoft フェールオーバー クラスタリングなど、フローティング IP アドレスを必要とするクラスタリング テクノロジでは、正しく機能するためにいくつかの追加の手順が必要です。
フローティング IP に到達するには、ソフトウェア ロード バランサー (SLB) 仮想 IP (VIP) を使用します。 ソフトウェア ロード バランサーでは、その IP 上のポートで正常性プローブが構成されている必要があります。そうすることで、SLB では、その IP を持つマシンに対してトラフィックを送信できるようになります。
例: ゲートウェイ ロード バランサーの構成
この例では、クラスター ノードになる VM が既に作成されており、それらを仮想ネットワークにアタッチしていることを想定しています。 ガイダンスについては、「VM を作成し、テナントの仮想ネットワークまたは VLAN に接続する」を参照してください。
この例では、クラスターのフローティング IP アドレスを表す仮想 IP アドレス (192.168.2.100) を作成し、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")
1 つのノードにクラスターを作成します。
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 に向かうトラフィックは、アクティブなノードに送信されます。