ネステッド vSAN ラボを構築するための工夫 Part.2。(物理マシン ESXi と ESXi VM の準備)



  • 前回に続いて、ネステッド 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 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 インストーラの 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 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

     

    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

     

    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

     

    また、このラボでは vCenter / ESXi を(本番環境ではサポートされませんが) IP アドレスのみで

    セットアップしているので、参照する DNS サーバの設定は省略しています。

     

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

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

     

    つづく・・・



    https://communities.vmware.com/people/gowatana/blog/2018/10/23/vsan-1box-3

Log in to reply
 

© Lightnetics 2024