vSphere 7.0u1 から DRS などのクラスタ制御機能が vCenter から vCLS (vSphere Cluster Services) に移管され、vCLS そのものの有効化・無効化 (Retreat Mode) の操作方法を昨年以下の記事にまとめました。
今回はクラスタの計画停止や UPS などのシャットダウンツールの連動などで vCLS Retreat Mode の切り替えを PowerCLI でスクリプトを組むための方法をまとめます。
※ 作業前に必ず KB も併せて確認して下さい。
PowerCLI でクラスタの Domain ID を確認する
まずは vCenter に接続。この後 AdvancedSetting の設定で使うので $vc に入れておきます。
$cre = Get-Credential
$vc = Connect-VIServer -Server "vCenter IP or FQDN" -Credential $cre
続いて Get-Cluster でクラスタの情報を取得してみます。
PS C:\> Get-Cluster | Format-Table -AutoSize
Name HAEnabled HAFailoverLevel DrsEnabled DrsAutomationLevel
---- --------- --------------- ---------- ------------------
vSAN True 1 True FullyAutomated
Nested-CL False 1 False FullyAutomated
PCL False 1 True Manual
デフォルトの出力だと Domain ID が分からないので、Select-Object で "ID" を含めるか、ExtensionData の管理対象オブジェクト (MoRef) を確認します。
# Cluster ID の末尾から確認する場合
PS C:\> Get-Cluster | Select-Object Name,Id |Format-Table -AutoSize
Name Id
---- --
vSAN ClusterComputeResource-domain-c3012
Nested-CL ClusterComputeResource-domain-c3006
PCL ClusterComputeResource-domain-c8
# 管理対象オブジェクト (MoRef) を確認する場合
PS C:\> (Get-Cluster -name "PCL").ExtensionData.MoRef.Value
domain-c8
PS C:\> (Get-Cluster -name "vSAN").ExtensionData.MoRef.Value
domain-c3012
PS C:\> (Get-Cluster -name "Nested-CL").ExtensionData.MoRef.Value
domain-c3006
Cluster ID は "ClusterComputeResource-domain-cXXXX" となり、URL に含まれる Domain ID と同じものを確認できます。
クラスタを指定して管理対象オブジェクト (MoRef) を確認した場合はすぐわかります。
vCLS Retreat Mode に関する詳細設定を PowerCLI で作成・制御する
前回は vSphere Client で追加した "
config.vcls.clusters.domain-cXXXX.enabled" を PowerCLI で操作します。
現在の vCLS Retreat Mode に関連する詳細設定(Advanced Settings)の有無を確認します。
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.* | Format-Table -AutoSize
Name Value Type Description
---- ----- ---- -----------
config.vcls.clusters.domain-c8.enabled false VIServer
config.vcls.clusters.domain-c3006.enabled false VIServer
先ほど新規で作成した "vSAN" クラスタの ID は未作成なので、これを新規に New-AdvancedSetting で追加します(削除は vCSA 内の vpxd.cfg を修正する必要があるので値が正しい事を必ずチェックしてください)。"vSAN" クラスタの Domain ID は "domain-c3012" なので "config.vcls.clusters.domain-c3012.enabled" を追加します。
PS C:\> New-AdvancedSetting -Entity $vc -Name config.vcls.clusters.domain-c3012.enabled -Value false
Retreat Mode の On/Off は Set-AdvancedSetting から true / false で制御します。
- true なら Retreat Mode が無効 (vCLS が 有効 : vCLS VM が作成される)
- false なら Retreat Mode が有効 (vCLS が無効 : vCLS VM が削除される)
# vCLS 有効化
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.domain-c3012.enabled | Set-AdvancedSetting -Value true
# vCLS 無効化 (Retreat Mode 有効化)
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.domain-c3012.enabled | Set-AdvancedSetting -Value false
有効・無効が正しく反映されている事を確認します。
# 各クラスタの vCLS の状態を確認 (全て Retreat Mode 有効状態)
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.* | Format-Table -AutoSize
Name Value Type Description
---- ----- ---- -----------
config.vcls.clusters.domain-c8.enabled false VIServer
config.vcls.clusters.domain-c3012.enabled false VIServer
config.vcls.clusters.domain-c3006.enabled false VIServer
# "vSAN" クラスタ (domain-c3012)の Retreat Mode を無効化 (vCLS の有効化)
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.domain-c3012.enabled | Set-AdvancedSetting -Value true
# "vSAN" クラスタ (domain-c3012) のみ vCLS が有効になった事が確認できる
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.* | Format-Table -AutoSize
Name Value Type Description
---- ----- ---- -----------
config.vcls.clusters.domain-c8.enabled false VIServer
config.vcls.clusters.domain-c3012.enabled true VIServer ← true に変更される
config.vcls.clusters.domain-c3006.enabled false VIServer
vCenter の詳細設定の操作は間違えるとシステムに大きな影響を与えるため慎重に行ってください。
以上、PowerCLI を利用して vCLS Retreat Mode を起動停止してみました。