次の方法で共有


仮想ネットワークでのゲスト クラスタリング

仮想ネットワークに接続されている仮想マシンは、ネットワーク コントローラーがネットワーク上で通信するために割り当てた IP アドレスのみを使用できます。 Microsoft フェールオーバー クラスタリングなど、フローティング IP アドレスを必要とするクラスタリング テクノロジでは、正しく機能するためにいくつかの追加の手順が必要です。

フローティング IP に到達するには、ソフトウェア ロード バランサー (SLB) 仮想 IP (VIP) を使用します。 ソフトウェア ロード バランサーでは、その IP 上のポートで正常性プローブが構成されている必要があります。そうすることで、SLB では、その IP を持つマシンに対してトラフィックを送信できるようになります。

例: ゲートウェイ ロード バランサーの構成

この例では、クラスター ノードになる VM が既に作成されており、それらを仮想ネットワークにアタッチしていることを想定しています。 ガイダンスについては、「VM を作成し、テナントの仮想ネットワークまたは 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 の他のポートとプロトコルに対して、この手順を複数回繰り返すことも可能です。 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. 1 つのノードにクラスターを作成します。

    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 に向かうトラフィックは、アクティブなノードに送信されます。