*PowerShell NLB [#b34d51cd]
#enull{{
&tag(PowerShell,NLB,Network Load Balancing,負荷分散);
}}
#contents

**前提条件 [#h7976f18]
-以下のサーバ条件を基に説明する。
|コンピュータ名|インターフェイス名|インターフェイスIPアドレス|h
|NLB1|Local1|192.168.0.1/24|
|NLB2|Local2|192.168.0.2/24|
-PowerShell操作環境はNLB1とする。

**PowerShellにてNLB(ネットワーク負荷分散:Network Load Balancing)を扱えるようにする [#s0398213]
 PS> Import-Module -Name NetworkLoadBalancingClusters

**コマンドレット一覧 [#taa0f89c]
 Get-Command -Module NetworkLoadBalancingClusters | Select-Object -Property Name
|カテゴリ|コマンドレット名|||||h
|[[作成>#w8dc7f5c]]|[[New-NlbCluster>#jc25930d]]|[[New-NlbClusterIpv6Address>#s88ee845]]||||
|[[取得>#qaed90f1]]|[[Get-NlbCluster>#l6a650a8]]|[[Get-NlbClusterDriverInfo>#g7cc33fd]]|[[Get-NlbClusterNode>#e3b88253]]|[[Get-NlbClusterNodeDip>#c9a8642b]]|[[Get-NlbClusterNodeNetworkInterface>#ke9d795d]]|
|~|[[Get-NlbClusterPortRule>#nacd4b8d]]|[[Get-NlbClusterVip>#xd348d65]]||||
|[[追加>#w8c65f68]]|[[Add-NlbClusterNode>#b9618824]]|[[Add-NlbClusterNodeDip>#y5644fa4]]|[[Add-NlbClusterPortRule>#n35fb9b7]]|[[Add-NlbClusterVip>#p6230df5]]||
|[[削除>#hc9cab77]]|[[Remove-NlbCluster>#z7c1539e]]|[[Remove-NlbClusterNode>#sc3e8867]]|[[Remove-NlbClusterNodeDip>#o5577f83]]|[[Remove-NlbClusterPortRule>#ke5256d6]]|[[Remove-NlbClusterVip>#ke706501]]|
|[[設定>#i7f58914]]|[[Set-NlbCluster>#id52a64e]]|[[Set-NlbClusterNode>#nf046f69]]|[[Set-NlbClusterNodeDip>#m4017715]]|[[Set-NlbClusterPortRule>#j717ce3f]]|[[Set-NlbClusterPortRuleNodeHandlingPriority>#g06acc4e]]|
|~|[[Set-NlbClusterPortRuleNodeWeight>#v58711e6]]|[[Set-NlbClusterVip>#od591628]]||||
|[[有効化>#tce34bed]]|[[Enable-NlbClusterPortRule>#ne3b132f]]|||||
|[[無効化>#mceca2e8]]|[[Disable-NlbClusterPortRule>#q45b66db]]|||||
|[[起動>#tf9d145a]]|[[Start-NlbCluster>#df1b5894]]|[[Start-NlbClusterNode>#zbf20e7e]]||||
|[[停止>#u34a9310]]|[[Stop-NlbCluster>#m53a47c7]]|[[Stop-NlbClusterNode>#b0dfd35b]]||||
|[[一時停止>#xa3d3c3a]]|[[Suspend-NlbCluster>#p10c80f8]]|[[Suspend-NlbClusterNode>#a43e4bb9]]||||
|[[再開>#u805d6a9]]|[[Resume-NlbCluster>#vcb0c4d4]]|[[Resume-NlbClusterNode>#r4eae64c]]||||


**作成 [#w8dc7f5c]
***NLBクラスターを作成する [#jc25930d]
-コンピュータ"NLB1"でクラスター名"cluster"、クラスターIPアドレス"192.168.0.3/24"、ユニキャストモードのクラスターを作成する
 PS> New-NlbCluster -HostName NLB1 -InterfaceName Local1 -ClusterName cluster -ClusterPrimaryIP 192.168.0.3
***操作モードを指定してNLBクラスターを作成する [#t0b2ba27]
-コンピュータ"NLB1"でクラスター名"cluster"、クラスターIPアドレス"192.168.0.3/24"、マルチキャストモードのクラスターを作成する
 PS> New-NlbCluster -HostName NLB1 -InterfaceName Local1 -ClusterName cluster -ClusterPrimaryIP 192.168.0.3 -OperationMode MULTICAST
|OperationMode|意味|h
|UNICAST|ユニキャスト|
|MULTICAST|マルチキャスト|
|IGMPMULTICAST|IGMPマルチキャスト|
***クラスタIPアドレスのサブネットマスクを指定して、NLBクラスターを作成する [#o4854d39]
-コンピュータ"NLB1"でクラスター名"cluster"、クラスターIPアドレス"192.168.0.3/27のクラスターを作成する
 PS> New-NlbCluster -HostName NLB1 -InterfaceName Local1 -ClusterName cluster -ClusterPrimaryIP 192.168.0.3 -SubnetMask 255.255.255.224
***専用IPアドレスを追加して、NLBクラスターを作成する [#x17f6f24]
-コンピュータ"NLB1"でクラスター名"cluster"、クラスターIPアドレス"192.168.0.3/24"、追加専用IPアドレス"192.168.0.4/24"のクラスターを作成する
 PS> New-NlbCluster -HostName NLB1 -InterfaceName Local1 -ClusterName cluster -ClusterPrimaryIP 192.168.0.3 -DedicatedIP 192.168.0.4
***サブネットマスクを指定した専用IPアドレスを追加して、NLBクラスターを作成する [#ff3bfbb4]
-コンピュータ"NLB1"でクラスター名"cluster"、クラスターIPアドレス"192.168.0.3/24"、追加専用IPアドレス"192.168.0.4/27"のクラスターを作成する
 PS> New-NlbCluster -HostName NLB1 -InterfaceName Local1 -ClusterName cluster -ClusterPrimaryIP 192.168.0.3 -DedicatedIP 192.168.0.4 -DedicatedIPSubnetMask 255.255.255.224

***専用IPアドレスに使用するIPv6アドレスを生成する [#s88ee845]
-NIC"Local1"に専用IPアドレスとして利用するIPv6アドレスを生成する(表示する)
 PS> New-NlbClusterIpv6Address -InterfaceName Local1
***専用IPアドレスに使用するリンクローカルIPv6アドレスを生成する [#x23337dd]
-NIC"Local1"に専用IPアドレスとして利用するリンクローカルIPv6アドレスを生成する(表示する)
 PS> New-NlbClusterIpv6Address -InterfaceName Local1 -LinkLocal
***専用IPアドレスに使用するグローバルユニキャストIPv6アドレスを生成する [#x5afcab9]
-NIC"Local1"に専用IPアドレスとして利用するグローバルユニキャストIPv6アドレスを生成する(表示する)
 PS> New-NlbClusterIpv6Address -InterfaceName Local1 -Global


**取得 [#qaed90f1]
***NLBクラスター名を取得する [#l6a650a8]
 PS> (Get-NlbCluster).Item(0).Name
***NLBクラスターIPアドレスを取得する [#xd348d65]
 PS> (Get-NlbCluster).Item(0).ClusterIPAddress
 PS> Get-NlbClusterVip
***クラスター操作モードを取得する [#g2e9c667]
 PS> (Get-NlbCluster).Item(0).OperationMode
|OperationMode|意味|h
|UNICAST|ユニキャスト|
|MULTICAST|マルチキャスト|
|IGMPMULTICAST|IGMPマルチキャスト|

***ホストの初期状態を取得する [#g7cc33fd]
 PS> (Get-NlbClusterDriverInfo).InitialHostState
***ホストの現在の状態を取得する [#c70f63ed]
 PS> (Get-NlbClusterDriverInfo).CurrentHostState
***サーバの再起動時に中断された状態を維持するかどうかの設定内容を取得する [#ob4dfd96]
 PS> (Get-NlbClusterDriverInfo).PersistedHostStates

***クラスターに設定されたノード一覧を取得する [#e3b88253]
-全てのNLBクラスターのノード一覧を取得する
 PS> Get-NlbClusterNode
-"testCluster"クラスターに設定されたノード一覧を取得する
 PS> Get-NlbClusterNode -InputObject ((Get-NlbCluster) | Where-Object {$_.Name -eq "testCluster" })
***特定のクラスターに設定されているノード数を取得する [#j79f87e3]
-"testCluster"クラスターに設定されているノード数を取得する
 PS> (Get-NlbClusterNode -InputObject ((Get-NlbCluster) | Where-Object {$_.Name -eq "testCluster" })).Count

***クラスターのノードIPアドレス情報一覧を取得する [#c9a8642b]
-全クラスターのノードIPアドレス情報一覧を取得する
 PS> Get-NlbClusterNodeDip
-ノード名が"NLB1"のIPアドレス情報一覧を取得する
 PS> Get-NlbClusterNodeDip -NodeName "NLB1"
-専用IPアドレスに"192.168.0.1"を持つノードのIPアドレス情報一覧を取得する
 PS> Get-NlbClusterNodeDip -IP "192.168.0.1"

***ネットワークインターフェースについてのノード情報を取得する [#ke9d795d]
-全てのネットワークインターフェースについて、ノード情報を取得する
 PS> Get-NlbClusterNodeNetworkInterface
-インターフェイス名が"Local1"のNICについて、ノード情報を取得する
 PS> Get-NlbClusterNodeNetworkInterface -InterfaceName "Local1"

***クラスターのポート規則を取得する [#nacd4b8d]
-全てのポート規則を取得する
 PS> Get-NlbClusterPortRule
-"192.168.0.1"のクラスターIPアドレスについて設定されたポート規則を取得する
 PS> Get-NlbClusterPortRule -IP 192.168.0.1
-ノード名が"NLB1"のポート規則を取得する
 PS> Get-NlbClusterPortRule -NodeName NLB1
-インターフェイス名が"Local1"のNICについて、ポート規則を取得する
 PS> Get-NlbClusterPortRule -InterfaceName "Local1"
-"80"番ポートが含まれるポート規則を取得する
 PS> Get-NlbClusterPortRule -Port 80


**追加 [#w8c65f68]
***既存のNLBクラスターにノードを追加する [#b9618824]
-ホスト"NLB1"に作成されたNLBクラスターに、ホスト"NLB2"の"Local2"インターフェースをノード追加する
 PS> Get-NLBCluster -HostName NLB1 | Add-NlbClusterNode -NewNodeName NLB2 -NewNodeInterface Local2

***既存のNLBクラスターノードに専用IPアドレスを追加する [#y5644fa4]
-ホスト"NLB1"の"Local1"インターフェースに"192.168.0.4/24"の専用IPアドレスを追加する
 PS> Add-NlbClusterNodeDip -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.4 -SubnetMask 255.255.255.0

***既存のNLBクラスターにポート規則を追加する [#n35fb9b7]
-すべてのクラスターIPアドレスの、TCP/UDP 443ポートで受信するトラフィックを複数ホスト(アフィニティ:単一)で処理するポート規則を追加する
 PS> Add-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -StartPort 443 -EndPort 443
-IPアドレス"192.168.0.3"へのTCP 443ポートで受信するトラフィックを複数ホスト(アフィニティ:単一)で処理するポート規則を追加する
 PS> Add-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -StartPort 443 -EndPort 443 -IP 192.168.0.3 -Protocol TCP
|Protocol|意味|h
|TCP|TCP|
|UDP|UDP|
|both|TCP/UDP|
-すべてのクラスターIPアドレスの、TCP/UDP 443ポートで受信するトラフィックを単一ホストで処理するポート規則を追加する
 PS> Add-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -StartPort 443 -EndPort 443 -Mode Single
|Mode|意味|h
|Multipul|複数ホスト|
|Single|単一ホスト|
|Disable|このポート範囲を使用不可にする|
-すべてのクラスターIPアドレスの、TCP/UDP 443ポートで受信するトラフィックを複数ホスト(アフィニティ:ネットワーク、タイムアウト:5分)で処理するポート規則を追加する
 PS> Add-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -StartPort 443 -EndPort 443 -Affinity Network -Timeout 5
|Affinity|意味|h
|None|なし(Affinity:なし の場合はタイムアウト設定は無効)|
|Single|単一|
|Network|ネットワーク|

***既存のNLBクラスターにクラスターIPアドレスを追加する [#p6230df5]
-ホスト"NLB1"のNLBクラスターに"192.168.0.10"のクラスターIPアドレスを追加する
 PS> Add-NlbClusterVip -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.10 -SubnetMask 255.255.255.0


**削除 [#hc9cab77]
***NLBクラスターを削除する [#z7c1539e]
-ローカルNLBクラスターを削除する
 PS> Remove-NlbCluster
-ローカルNLBクラスターを確認なしに削除する
 PS> Remove-NlbCluster -Force

***NLBクラスターノードを削除する [#sc3e8867]
-ホスト"NLB2"の"Local2"インターフェースで構成されるノードを削除する
 PS> Remove-NlbClusterNode -HostName NLB2 -InterfaceName Local2
-ホスト"NLB2"の"Local2"インターフェースで構成されるノードを確認なしに削除する
 PS> Remove-NlbClusterNode -HostName NLB2 -InterfaceName Local2 -Force

***NLBクラスターノードの専用IPアドレスを削除する [#o5577f83]
-ホスト"NLB1"の"Local1"インターフェースの専用IPアドレス"192.168.0.4"を削除する
 PS> Remove-NlbClusterNodeDip -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.4
-ホスト"NLB1"の"Local1"インターフェースの専用IPアドレス"192.168.0.4"を確認なしに削除する
 PS> Remove-NlbClusterNodeDip -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.4 -Force

***NLBクラスターのポート規則を削除する [#ke5256d6]
-すべてのクラスターIPアドレスを指定して作成されたポート規則を削除する
 PS> Remove-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -IP 255.255.255.255
-すべてのクラスターIPアドレスを指定して作成されたポート規則を確認なしに削除する
 PS> Remove-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -IP 255.255.255.255 -Force
-IPアドレスが"192.168.0.3"で、ポート番号80を含む範囲で指定されたポート規則を削除する
 PS> Remove-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.3 -Port 80

***クラスターIPアドレスを削除する [#ke706501]
-クラスターIPアドレス"192.168.0.4"を削除する
 PS> Remove-NlbClusterVip -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.4
-クラスターIPアドレス"192.168.0.4"を確認なしに削除する
 PS> Remove-NlbClusterVip -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.4 -Force


**設定 [#i7f58914]
***NLBクラスター名を設定する [#id52a64e]
-クラスター名を"cluster2"に設定する
 PS> Set-NlbCluster -HostName NLB1 -InterfaceName Local1 -Name cluster2
***NLBクラスターの操作モードを設定する [#ye2ca508]
-クラスター操作モードを"IGMPマルチキャスト"に設定する
 PS> Set-NlbCluster -HostName NLB1 -InterfaceName Local1 -OperationMode IGMPMULTICAST
|OperationMode|意味|h
|UNICAST|ユニキャスト|
|MULTICAST|マルチキャスト|
|IGMPMULTICAST|IGMPマルチキャスト|

***NLBクラスターノードのホスト優先順位を設定する [#nf046f69]
-ホスト"NLB1"の優先順位を"5"に設定する
 PS> Set-NlbClusterNode -HostName NLB1 -InterfaceName Local1 -HostPriority 5
***NLBクラスターノードのホストの初期状態を設定する [#l467ce68]
-ホスト"NLB1"のホスト初期状態を"中断"に設定する
 PS> Set-NlbClusterNode -HostName NLB1 -InterfaceName Local1 -InitialHostState Suspended
|InitialHostState|意味|h
|Started|開始|
|Stopped|停止|
|Suspended|中断|
***NLBクラスターノードがコンピュータ再起動に中断状態を維持するかどうかを設定する [#m97f25f4]
-ホスト"NLB1"が、コンピュータ再起動後に中断された状態を保持するように設定する
 PS> Set-NlbClusterNode -HostName NLB1 -InterfaceName Local1 -RetainSuspended $True
-ホスト"NLB1"が、コンピュータ再起動後に中断された状態を保持しないように設定する
 PS> Set-NlbClusterNode -HostName NLB1 -InterfaceName Local1 -RetainSuspended $False

***NLBクラスターノードの専用IPアドレスを設定する [#m4017715]
-ホスト"NLB1"の"Local1"インターフェースの専用IPアドレス"192.168.0.4"を"192.168.0.5"に設定する
 PS> Set-NlbClusterNodeDip -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.4 -NewDip 192.168.0.5

***NLBクラスターのポート規則を設定する [#j717ce3f]
-全てのポート規則について、クラスターIPアドレスを"192.168.0.4"に設定する
 PS> Set-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -NewIP 192.168.0.4
-全てのポート規則について、プロトコルを"UDP"に設定する
 PS> Set-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -NewProtocol UDP
|NewProtocol|意味|h
|TCP|TCP|
|UDP|UDP|
|both|TCP/UDP|
-全てのポート規則について、フィルターモードを"単一"に設定する
 PS> Set-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -NewMode Single
|NewMode|意味|h
|Multipul|複数ホスト|
|Single|単一ホスト|
|Disable|このポート範囲を使用不可にする|
-全てのポート規則について、アフィニティを"なし"に設定する
 PS> Set-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -NewAffinity None
|NewAffinity|意味|h
|None|なし(Affinity:なし の場合はタイムアウト設定は無効)|
|Single|単一|
|Network|ネットワーク|
-全てのポート規則について、アフィニティのタイムアウトを"5"分に設定する
 PS> Set-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -NewTimeout 5
-ポート"443"を範囲に含むポート規則について、ポート範囲を"0"から"500"に設定する
 PS> Set-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443 -NewStartPort 0 -NewEndPort 500

***ポート規則の処理優先順位を設定する(フィルターモードが''単一ホスト''になっている場合のみ有効) [#g06acc4e]
-IPアドレス"192.168.0.3"で"443"ポートを含むポート規則について、処理優先順位を"5"に設定する
 PS> Set-NlbClusterPortRuleNodeHandlingPriority -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.3 -Port 443 -HandlingPriority 5

***ポート規則の負荷配分を設定する(フィルターモードが''複数ホスト''になっている場合のみ有効) [#v58711e6]
-IPアドレス"192.168.0.3"で"443"ポートを含むポート規則について、NLB1の負荷配分を75%に設定する
 PS> Set-NlbClusterPortRuleNodeWeight -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.3 -Port 443 -LoadWeight 75
-IPアドレス"192.168.0.3"で"443"ポートを含むポート規則について、各NLBノードの負荷配分が均一になるように設定する
 PS> Set-NlbClusterPortRuleNodeWeight -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.3 -Port 443 -Equal

***クラスター仮想IPアドレスを設定する [#od591628]
-クラスターIPアドレス"192.168.0.4"を"192.168.0.10"に設定(変更)する
 PS> Set-NlbClusterVip -HostName NLB1 -InterfaceName Local1 -IP 192.168.0.4 -NewIP 192.168.0.10


**有効化 [#tce34bed]
***ポート規則をを有効化する [#ne3b132f]
-ノード"NLB1"の"443"ポートを含むポート規則を有効化する
 PS> Enable-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443
-全てのノードの"443"ポートを含むポート規則を有効化する
 PS> Enable-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443 -ClusterWide
-ノード"NLB1"、IPアドレス"192.168.0.3"の"443"ポートを含むポート規則を有効化する
 PS> Enable-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443 -IP 192.168.0.3


**無効化 [#mceca2e8]
***ポート規則をを無効化する [#q45b66db]
-ノード"NLB1"の"443"ポートを含むポート規則を無効化する
 PS> Disable-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443
-全てのノードの"443"ポートを含むポート規則を無効化する
 PS> Disable-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443 -ClusterWide
-ノード"NLB1"、IPアドレス"192.168.0.3"の"443"ポートを含むポート規則を無効化する
 PS> Disable-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443 -IP 192.168.0.3
-ノード"NLB1"の"443"ポートを含むポート規則をドレイン操作で無効化する
 PS> Disable-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443 -Drain
-ノード"NLB1"の"443"ポートを含むポート規則をドレイン操作で無効化する (2分経ってもドレインされない場合は接続を切断する)
 PS> Disable-NlbClusterPortRule -HostName NLB1 -InterfaceName Local1 -Port 443 -Drain -Timeout 2


**起動 [#tf9d145a]
***NLBクラスターを起動する [#df1b5894]
 PS> Start-NlbCluster

***クラスターノードを起動する [#zbf20e7e]
-ノード"NLB1"を起動する
 PS> Start-NlbClusterNode -HostName NLB1 -InterfaceName Local1


**停止 [#u34a9310]
***NLBクラスターを停止する [#m53a47c7]
-NLBクラスターを停止する (接続中のユーザは切断される)
 PS> Stop-NlbCluster
-NLBクラスターをドレイン停止する (接続中のユーザの切断を待ってから停止する)
 PS> Stop-NlbCluster -Drain

***NLBクラスターノードを停止する [#b0dfd35b]
-ノード"NLB1"を停止する
 PS> Stop-NlbClusterNode -HostName NLB1 -InterfaceName Local1
-ノード"NLB1"をドレイン停止する
 PS> Stop-NlbClusterNode -HostName NLB1 -InterfaceName Local1 -Drain


**一時停止 [#xa3d3c3a]
***NLBクラスターを中断する [#p10c80f8]
 PS> Suspend-NlbCluster

***NLBクラスターノードを中断する [#a43e4bb9]
-ノード"NLB2"を中断する
 PS> Suspend-NlbClusterNode -HostName NLB2 -InterfaceName Local2


**再開 [#u805d6a9]
***NLBクラスターを再開する [#vcb0c4d4]
 PS> Resume-NlbCluster

***NLBクラスターノードを再開する [#r4eae64c]
-ノード"NLB2"を再開する。(Suspend状態からStopped状態になる)
 PS> Resume-NlbClusterNode -HostName NLB2 -InterfaceName Local2

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS