Skip navigation

今回は、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> Get-Cluster 2-Node-Stretched-Cluster | Get-VMHost | Get-VMHostNetworkAdapter -Name vmk3 | Set-VMHostNetworkAdapter -VsanTrafficEnabled:$true -Confirm:$false

 

ESXi ホストのディスク構成を確認しておきます。

ここで、このラボでは各ホストで構成が若干違う(vmhba1:~ と vmhba2:~)ことがわかります。

PowerCLI> Get-Cluster 2-Node-Stretched-Cluster | Get-VMHost | Get-VMHostDisk | select VMHost,ScsiLun,TotalSectors | sort VMHost,ScsiLun

vsan1808m7-01.png

 

先程とは別の方法で、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

vsan1808m7-02.png

 

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

vsan1808m7-03.png

 

同様に 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」と表示されています。

vsan1808m7-02a.png

 

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 になっています。

vsan1808m7-04.png

 

vSAN Health でも「Storeched cluster」が緑になっています。

ハードウェア互換性に関連するエラーなどがありますが、HoL の仕様上ここでは無視します。

vsan1808m7-05.png

 

vSAN データストアに作成した VM「vm01」は、

データが格納される Component がそれぞれの Fault Domain(Preferred と Secondary)、

Witness が Witness ホストに配置されています。

(今回はデフォルトの仮想マシン ストレージ ポリシーのままです。)

vsan1808m7-06.png

 

vSphere Web Client で簡単に 2 Node vSAN を構成できますが、

PowerCLI を利用すると Fault Domain を手動作成したりするので

より理解を深められるのではないかと思います。

 

2 Node vSAN はリモートオフィス / ブランチオフィスへの配置をユースケースとしているようで

大量展開や省力化のためか自動化のサンプルが多くあります。

VMware Sample Exchange などにもサンプルが多いので、いろいろと挑戦してみたいところです。

vSAN Samples - Samples - VMware {code}

 

以上、PowerCLI で 2 Node vSAN を構成してみる話でした。