今回は、PowerCLI で 2 Node vSAN を構成してみます。
2 Node vSAN のセットアップも、通常の vSAN と同様に vSphere Web Client を使用できますが
PowerCLI でもセットアップすることができます。
以前に PowerCLI での vSAN セットアップを
VMware Hands-on Labs(HoL)でためす方法を投稿しましたが・・・
PowerCLI で vSAN セットアップをためしてみる。
今回も同様に、下記の HoL のモジュール 7 にあるシナリオを PowerCLI で実施してみます。
HOL-1808-01-HCI - vSAN v6.6 - Getting Started
http://labs.hol.vmware.com/HOL/catalogs/lab/3651
ESXi ホストの準備。
最初に、vCenter へ接続してクラスタを作成しておきます。
PowerCLI> Connect-VIServer vcsa-01a.corp.local
PowerCLI> Get-Datacenter RegionA01 | New-Cluster -Name 2-Node-Stretched-Cluster
esx-05a.corp.local と esx-06a.corp.local をクラスタに移動します。
PowerCLI> Get-VMHost esx-05a.corp.local,esx-06a.corp.local | Move-VMHost -Location 2-Node-Stretched-Cluster
クラスタに移動されたすべてのホストのメンテナンスモードを解除します。
PowerCLI> Get-Cluster 2-Node-Stretched-Cluster | Get-VMHost | Set-VMHost -State Connected
VMkernel ポートで、vSAN の準備ができていることを確認します。
VMkernel ポート「vmk3」ではすでに vSAN のトラフィックが有効化されています。
(vSAN Witness ホストの VMkernel ポートの設定は、後であらためて確認します。)
PowerCLI> Get-Cluster 2-Node-Stretched-Cluster | Get-VMHost | Get-VMHostNetworkAdapter -VMKernel | select VMHost,Name,IP,VsanTrafficEnabled | sort VMHost,Name
このラボではすでに vSAN トラフィックが有効化されていますが、
有効化する場合は下記のようなコマンドラインになります。
PowerCLI>
ESXi ホストのディスク構成を確認しておきます。
ここで、このラボでは各ホストで構成が若干違う(vmhba1:~ と vmhba2:~)ことがわかります。
PowerCLI> Get-Cluster 2-Node-Stretched-Cluster | Get-VMHost | Get-VMHostDisk | select VMHost,ScsiLun,TotalSectors | sort VMHost,ScsiLun
Image may be NSFW.
Clik here to view.
先程とは別の方法で、VMkernel ポートの設定を確認しておきます。
まだ vSAN Witness が有効化されていないことがわかります。
ここでは、Get-EsxCli により、PowerCLI から esxcli を実行しています。
esxcli で実行可能な作業であれば、このように PowerCLI を介して実行することも可能です。
ここでは、コマンドラインが簡潔な Get-EsxCli -V1 を利用しています。
PowerCLI> Get-VMHost esx-0[568]a.* | Get-VMHostNetworkAdapter -VMKernel | % {$vmk = $_.Name; $_ | select VMHost,Name,@{N="Tags";E={((($_.VMHost | Get-EsxCli).network.ip.interface.tag.get($vmk)).Tags | sort) -join ","}}} | sort VMHost,Name
Image may be NSFW.
Clik here to view.
ESXi ホスト「esx-05a.corp.local」の vmk0 に、未設定だった witness タグを付与してみます。
まだ vSAN Witness が有効化されていないことがわかります。
今度は先ほどとはことなり、Get-EsxCli -V2 で esxcli を実行しています。
Get-EsxCli -V2 ではオプション指定の方法が少し複雑になりますが、
かわりにオプションを指定しやすく(必須ではないオプションを省略しやすく)なっています。
PowerCLI> $esxcli = Get-VMHost esx-05a.corp.local | Get-EsxCli -V2
PowerCLI> $a = $esxcli.vsan.network.ipv4.add.CreateArgs()
PowerCLI> $a.interfacename = "vmk0"
PowerCLI> $a.traffictype = "witness"
PowerCLI> $esxcli.vsan.network.ipv4.add.Invoke($a)
そのまま下記のコマンド実行すると、設定されたことが確認できます。
PowerCLI> $esxcli.vsan.network.list.Invoke() | select VmkNicName,TrafficType
Image may be NSFW.
Clik here to view.
同様に ESXi ホスト「esx-06a.corp.local」の vmk0 に、witness タグを付与します。
(PowerCLI のプロンプトは省略しています。)
$esxcli = Get-VMHost esx-06a.corp.local | Get-EsxCli -V2
$a = $esxcli.vsan.network.ipv4.add.CreateArgs()
$a.interfacename = "vmk0"
$a.traffictype = "witness"
$esxcli.vsan.network.ipv4.add.Invoke($a)
$esxcli.vsan.network.list.Invoke() | select VmkNicName,TrafficType
VMkernel ポートの Tag 設定は下記のようになりました。
こちらでは witness は「VSANWitness」と表示されています。
Image may be NSFW.
Clik here to view.
vSAN クラスタのセットアップ。
それでは、2 Node vSAN のセットアップをしていきます。
vSAN Witness 仮想アプライアンス「esx-08a.corp.local」は、
このラボではすでにデプロイとネットワーク設定が実施されています。
クラスタで vSAN を有効化します。
PowerCLI> Get-Cluster 2-Node-Stretched-Cluster | Set-Cluster -VsanEnabled:$true -Confirm:$false
Fault Domain を 2 ノードそれぞれに作成します。
優先 Fault Domain は Preferred でセカンダリは Secondary としますが、
ここではまだその区別はありません。
PowerCLI> New-VsanFaultDomain -Name Preferred -VMHost esx-05a.corp.local
PowerCLI> New-VsanFaultDomain -Name Secondary -VMHost esx-06a.corp.local
ストレッチ クラスタを有効化します。
ここで Witness ホストと、優先 Fault Domain を指定します。
PowerCLI> Get-Cluster 2-Node-Stretched-Cluster | Set-VsanClusterConfiguration -StretchedClusterEnabled:$true -WitnessHost esx-08a.corp.local -WitnessHostCacheDisk mpx.vmhba1:C0:T2:L0 -WitnessHostCapacityDisk mpx.vmhba1:C0:T1:L0 -PreferredFaultDomain Preferred
つづけて、vSAN ディスク グループを作成します。
それぞれにホストに、2つずつ ディスクグループを作成します。
今回は各ホストでキャッシュ用 SSD のデバイス名が異なるので、ディスクグループごとにコマンドラインを実行します。
esx-05a.corp.local の ディスクグループ#1
PowerCLI> Get-VMHost esx-05a.corp.local | New-VsanDiskGroup -SsdCanonicalName mpx.vmhba1:C0:T0:L0 -DataDiskCanonicalName mpx.vmhba3:C0:T0:L0,mpx.vmhba3:C0:T1:L0
esx-06a.corp.local の ディスクグループ#1
PowerCLI> Get-VMHost esx-06a.corp.local | New-VsanDiskGroup -SsdCanonicalName mpx.vmhba2:C0:T0:L0 -DataDiskCanonicalName mpx.vmhba3:C0:T0:L0,mpx.vmhba3:C0:T1:L0
esx-05a.corp.local の ディスクグループ#2
PowerCLI> Get-VMHost esx-05a.corp.local | New-VsanDiskGroup -SsdCanonicalName mpx.vmhba1:C0:T1:L0 -DataDiskCanonicalName mpx.vmhba4:C0:T0:L0,mpx.vmhba4:C0:T1:L0
esx-06a.corp.local の ディスクグループ#2
PowerCLI> Get-VMHost esx-06a.corp.local | New-VsanDiskGroup -SsdCanonicalName mpx.vmhba2:C0:T1:L0 -DataDiskCanonicalName mpx.vmhba4:C0:T0:L0,mpx.vmhba4:C0:T1:L0
vSAN データストアの名前を確認します。デフォルトで「vsanDatastore」になります。
PowerCLI> Get-Cluster 2-Node-Stretched-Cluster | Get-Datastore | where {$_.Type -eq "vsan"}
vSAN データストアに VM を作成しておきます。
PowerCLI> New-VM -Name vm01 -Datastore vsanDatastore -StorageFormat Thin -ResourcePool esx-05a.corp.local
今回は省略しますが、あわせて必要に応じて「仮想マシン ストレージ ポリシー」によるローカルアフィニティや、
DRS ルールでのアフィニティ ルールを設定したりします。
セットアップした 2 Node vSAN の様子。
PowerCLI で構成したとおり、2 Node vSAN はストレッチ クラスタとなり、
Preferred と Secondary のうち、Preferred が優先 Fault Domain になっています。
Image may be NSFW.
Clik here to view.
vSAN Health でも「Storeched cluster」が緑になっています。
ハードウェア互換性に関連するエラーなどがありますが、HoL の仕様上ここでは無視します。
Image may be NSFW.
Clik here to view.
vSAN データストアに作成した VM「vm01」は、
データが格納される Component がそれぞれの Fault Domain(Preferred と Secondary)、
Witness が Witness ホストに配置されています。
(今回はデフォルトの仮想マシン ストレージ ポリシーのままです。)
Image may be NSFW.
Clik here to view.
vSphere Web Client で簡単に 2 Node vSAN を構成できますが、
PowerCLI を利用すると Fault Domain を手動作成したりするので
より理解を深められるのではないかと思います。
2 Node vSAN はリモートオフィス / ブランチオフィスへの配置をユースケースとしているようで
大量展開や省力化のためか自動化のサンプルが多くあります。
VMware Sample Exchange などにもサンプルが多いので、いろいろと挑戦してみたいところです。
vSAN Samples - Samples - VMware {code}
以上、PowerCLI で 2 Node vSAN を構成してみる話でした。