前回に続いて、ネステッド vSAN 環境セットアップの工夫を紹介します。

今回は、特にネスト特有の、物理マシンの ESXi と、ESXi VM の部分についてです。

ひきつづき PowerCLI も利用していきます。

 

これまでの話は下記をどうぞ。

図解 ネステッド vSAN ラボ。

ネステッド vSAN ラボを構築するための工夫 Part.1。(物理 マシン ESXi ~ VCSA デプロイ)

 

ネステッド ハイパーバイザとなる ESXi VM は、下図のように

vCenter(VCSA)と横並びの VM として作成して、ネスト環境特有の設定をします。

今回は最初に、テンプレートにする ESXi VM を作成し、

それをクローンして 3台の ネステッド ESXi にします。

1box-vsan-12.png

2-1. ESXi VM を接続するポートグループの作成。

ESXi にデフォルトで作成される「VM Network」ポートグループは、

今回の構成ではネストではない VM で利用するものとします。

そこで、デフォルトで作成される仮想スイッチ「vSwitch0」に、

ESXi VM を接続する、ネスト環境むけのポートグループ

「Nested-Trunk-Network」を新規作成します。

 

このポートグループには、下記の設定をしています。

  • 無差別モード(プロミスキャスモード)の許可。
  • 「偽装転送」と「MAC アドレス変更」はデフォルト同様に「許可」。
  • VLAN ID 4095。

※ PowerCLI は前回の投稿で vCenter に接続したままの状態です。

PowerCLI> $pg_name = "Nested-Trunk-Network"

PowerCLI> $pg = Get-VMHost | Get-VirtualSwitch -Name vSwitch0 | New-VirtualPortGroup -Name $pg_name -VLanId 4095

PowerCLI> $pg | Get-SecurityPolicy | Set-SecurityPolicy -AllowPromiscuous:$true -ForgedTransmits:$true -MacChanges:$true

 

2-2. ESXi VM の作成。

ESXi をインストールする VM を作成します。

これは、あとで複数台の ESXi をクローンするための、VM テンプレートとして利用する想定です。

 

今回は、下記のような PowerCLI スクリプトで VM を作成します。

末尾の 4行では「ハードウェア アシストによる仮想化をゲスト OS に公開」にあたる

NestedHVEnabled を有効にしています。

また、vNIC は 最低限である 1つだけ作成しています。

 

create-esxi-vm.ps1

$vm_name = "vm-esxi-template-01"

$hv_name = "192.168.1.20"

 

$guest_id = "vmkernel65Guest"

$num_cpu = 2

$memory_gb = 6

$ds_name = "datastore1"

$vmdk_gb = 16

$pg_name = "Nested-Trunk-Network"

 

$vm = New-VM -Name $vm_name -VMHost $hv_name `

    -GuestId $guest_id `

    -NumCpu $num_cpu -CoresPerSocket $num_cpu `

    -MemoryGB $memory_gb `

    -DiskGB $vmdk_gb -Datastore $ds_name -StorageFormat Thin `

    -NetworkName $pg_name

 

$vm = Get-VM -Name $vm_name

$vm_config_spec = New-Object VMware.Vim.VirtualMachineConfigSpec

$vm_config_spec.NestedHVEnabled = $true

$vm.ExtensionData.ReconfigVM($vm_config_spec)

 

スクリプトは、vCenter に接続した状態で、下記のように実行します。

PowerCLI> .\create-esxi-vm.ps1

 

さまざまな vSAN を作成しやすいように、

VMDK の追加や ISO ファイルの接続はクローン後に実施します。

 

2-3. ESXi VM への ESXi インストールとクローン準備。

まず ESXi VM に、ESXi インストーラの ISO イメージファイルを接続してから起動し、

通常どおり ESXi をインストールします。

 

ESXi インストーラの ISO イメージファイルも、PowerCLIで VM に接続します。

ISO イメージファイルは、あらかじめ 物理マシン ESXi のデータストアに配置してあります。

※ESXi を Kickstart でインストールする場合は、この ISO イメージファイル接続は不要です。

PowerCLI> $iso_path = "[datastore1] iso/VMware-VMvisor-Installer-6.7.0.update01-10302608.x86_64.iso"

PowerCLI> Get-VM vm-esxi-?? | New-CDDrive -IsoPath $iso_path -StartConnected:$true

 

ESXi Shell を有効化して、vSphere Client の VM のコンソールからログインします。

この時点では、まだネットワーク設定は不要です。

 

下記の 2つの設定をします。

 

1) クローンによる MAC アドレス変更の対策として、

/Net/FollowHardwareMac を有効化します。

[root@localhost:~] esxcli system settings advanced set -o /Net/FollowHardwareMac -i 1

 

2) クローン後の ESXi VM 初回起動で UUID を再生成するために、

/etc/vmware/esx.conf ファイルから「/system/uuid」をいったん記載削除します。

※ これは vi などの編集でもよいです。

[root@localhost:~] sed -i "/uuid/d" /etc/vmware/esx.conf

 

設定後、ESXi VM をシャットダウンします。

クローン前に ESXi VM を起動した場合は、また /system/uuid を記載削除する必要があります。

 

また、VM テンプレートには、変換しても、しなくても大丈夫です。

 

2-4. ESXi VM のクローン。

ここまでに作成した VM「vm-esxi-template-01」から、3台の VM をクローンします。

  • PowerCLI は、vCenter に接続した状態で 物理マシン ESXi「192.168.1.20」上の VM をクローン。
  • 仮想マシン名は「vm-esxi-XX」とする。

PowerCLI> 1..3 | % {New-VM -VMHost 192.168.1.20 -StorageFormat Thin -VM "vm-esxi-template-01" -Name ("vm-esxi-" + $_.toString("00"))}

 

vSAN Disk として利用する VMDK を追加します。

今回は Cache 用に 20GB x 1、Capacity 用に 50GB x 2 を 各 ESXi に用意します。

PowerCLI> Get-VM vm-esxi-?? | New-HardDisk -SizeGB 20 -StorageFormat Thin

PowerCLI> Get-VM vm-esxi-?? | New-HardDisk -SizeGB 50 -StorageFormat Thin

PowerCLI> Get-VM vm-esxi-?? | New-HardDisk -SizeGB 50 -StorageFormat Thin

 

VMDK は下記のように作成されます。

PowerCLI> Get-VM vm-esxi-?? | Get-HardDisk | select CapacityGB,Parent,Name | Sort-Object Parent,Name

 

CapacityGB Parent     Name

---------- ------     ----

        16 vm-esxi-01 Hard disk 1

        20 vm-esxi-01 Hard disk 2

        50 vm-esxi-01 Hard disk 3

        50 vm-esxi-01 Hard disk 4

        16 vm-esxi-02 Hard disk 1

        20 vm-esxi-02 Hard disk 2

        50 vm-esxi-02 Hard disk 3

        50 vm-esxi-02 Hard disk 4

        16 vm-esxi-03 Hard disk 1

        20 vm-esxi-03 Hard disk 2

        50 vm-esxi-03 Hard disk 3

        50 vm-esxi-03 Hard disk 4

 

 

ESXi VM をまとめてパワーオンします。

PowerCLI> Get-VM vm-esxi-?? | Start-VM

 

このあとの工程に備えて、ネステッド ESXi の VMware Tools が起動したことを確認しておきます。

PowerCLI> Get-VM vm-esxi-?? | select Name,PowerState,@{N="ToolsStatus";E={$_.Guest.ExtensionData.ToolsStatus}}

 

Name       PowerState ToolsStatus

----       ---------- -----------

vm-esxi-03  PoweredOn     toolsOk

vm-esxi-02  PoweredOn     toolsOk

vm-esxi-01  PoweredOn     toolsOk

 

 

2-5. ネステッド ESXi の設定。

ネステッド ESXi が起動したら、普通の ESXi と同様に

vCenter から登録する準備としてネットワーク設定をします。

これは VM コンソール経由で DCUI や esxcli などで設定できます。

 

しかし、ESXi には標準で VMware Tools がインストールされており、

VM にインストールした場合は、vCenter 経由で(ゲスト OS としての)ESXiのコマンドが実行できます。

そして、それを PowerCLI 経由で実行することもできます。

 

そこで、下記の投稿にある PowerCLI のサンプルスクリプトを利用して、

3台の ESXi VM それぞれにむけて esxcli によるネットワーク設定をします。

PowerCLI から Nested ESXi の esxcli を実行してみる。(GuestProcessManager)

 

1台目。

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-01 system hostname set --host esxi-01 --domain go-lab.jp

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-01 network ip interface ipv4 set --interface-name=vmk0 --type=static --ipv4=192.168.1.31 --netmask=255.255.255.0 --gateway=192.168.1.1

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-01 network ip dns server add --server=192.168.1.101

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-01 network ip dns server add --server=192.168.1.102

 

2台目。

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-02 system hostname set --host esxi-02 --domain go-lab.jp

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-02 network ip interface ipv4 set --interface-name=vmk0 --type=static --ipv4=192.168.1.32 --netmask=255.255.255.0 --gateway=192.168.1.1

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-02 network ip dns server add --server=192.168.1.101

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-02 network ip dns server add --server=192.168.1.102

 

3台目。

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-03 system hostname set --host esxi-03 --domain go-lab.jp

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-03 network ip interface ipv4 set --interface-name=vmk0 --type=static --ipv4=192.168.1.33 --netmask=255.255.255.0 --gateway=192.168.1.1

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-03 network ip dns server add --server=192.168.1.101

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-03 network ip dns server add --server=192.168.1.102

 

 

これで、ネステッド ESXi が 3台作成された状態になります。

あとは、vSAN クラスタのセットアップです。

 

つづく・・・

ネステッド vSAN ラボを構築するための工夫 Part.3。(vSAN クラスタ構築)