fbpx

Windows 10 の Hyper-V で Apache CloudStack 検証環境を構築する:第1回 #HyperV #Apach #CloudStack

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

はじめに

Apache CloudStack (以後、ACS) の検証環境を構築するのは意外に大変ですが、Windows 10 Pro の PC ひとつあれば、Hyper-V を使用して ACS の環境を構築できます。また、Windows 10 の Anniversary Update で Nested Virtualization に対応したので、例えば、「Hyper-V VM の中で KVM ホストを作成する」と言った事ができるようになりました。

ということで、実際に ACS の検証環境を Hyper-V の VM 上に構築してみます。Nested Virtualization を確認するために、ACS に追加するホストコンピューターのハイパーバイザーは KVM とします。

 

PC のスペックと構築する ACS 検証環境

使用する PC のスペックは以下の通りです。PC ひとつと言いましたが、そこそこのスペック (特にメモリ) は必要になります。

OS Windows 10 Pro
CPU Intel Core i3-4150 3.50 GHz (論理プロセッサ × 4) BIOS でインテル VT を有効にしておく
メモリ 32 GB
ディスク1 256 GB SSD(C ドライブ) Windows 10 Pro インストール用
ディスク2 2 TB HDD(D ドライブ) VHD 配置用のデータディスク
NIC 1000 Mbps × 1 インターネット接続

Windows では、Hyper-V を有効にしておきます。Hyper-V マネージャー (Hyper-V 管理ツール) もインストールします。

ACS  検証環境は、2 つの Hyper-V VM で構築します。

VM1 には ACS (Management Server) をインストールします。データベースと NFS の役割もこの VM に持たせます。
VM2 には CloudStack Agent をインストールして、KVM ホストとして動作させます。

Hyper-V の仮想スイッチは、NIC と結び付けてインターネットに接続できる外部スイッチと、VM 間通信用の内部スイッチを作成します。外部は ACS の Public, Guest ネットワークに使用し、内部は ACS の Management, Storage ネットワークとして使用します。

外部スイッチのネットワークは 192.168.24.0/24 であり、ゲートウェイと DNS サーバーの IP アドレスは 192.168.24.1(ルーター)になります。
内部スイッチのネットワークは 172.16.24.0/24 であり、ゲートウェイと DNS サーバーはありません。

※このネットワークは弊社で使用している環境の構成になります。実際に検証するときは、それぞれの環境に合わせてネットワークを指定してください。

Hyper-V リソースの作成

ここからは、実際に ACS 検証環境を構築していきますが、まずは第1回の内容として、 Hyper-V リソース(仮想スイッチと VM )の作成を行います。

Hyper-V 仮想スイッチの作成

Hyper-V マネージャー、または PowerShell で 2 つの仮想スイッチを作成します。

外部スイッチ(インターネット通信)

インターネットに接続できる仮想スイッチであり、物理 NIC に紐づける必要があります。予め、Get-NetAdapter コマンドレットで紐づける物理 NIC を調べておきます。以下の例では index 14 が対象の物理 NIC になります。

PS C:\> Get-NetAdapter

Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
イーサネット Intel(R) Gigabit CT Desktop Adapter 14 Up xx-xx-xx-xx-xx-xx 1 Gbps

PS C:\> New-VMSwitch -Name "外部" -NetAdapterName (Get-NetAdapter -ifIndex 14).Name -AllowManagementOS $true

Name SwitchType NetAdapterInterfaceDescription 
---- ---------- ------------------------------ 
外部 External Intel(R) Gigabit CT Desktop Adapter

内部スイッチ(VM 間通信)

内部でのみ使用する仮想スイッチです。

PS C:\> New-VMSwitch -Name "内部" -SwitchType Internal

Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
内部 Internal

Hyper-V VM の作成

ACS のマネージメントサーバーとなる VM1 と、KVM ホストとなる VM2 を作成します。

その前に、VM にインストールする OS のイメージを取得します。以下のページから、minimal.iso をクリックし、適当なフォルダにダウンロードします。ここでは、D:\acs\iso 配下とします。

http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.9/isos/x86_64/

VM1(ACS マネージメントサーバー)

VM1 の保存場所は D:\acs\vm\ACS-MS 配下とします。VM1 は NFS の役割も担うため、ストレージ領域用の追加 VHD ファイルも作成し、VM1 にアタッチします。

PS C:\> $vm1 = New-VM -Name ACS-MS -Path D:\acs\vm -NewVHDPath D:\acs\vm\ACS-MS\VHD\ACS-MS.vhdx -NewVHDSizeBytes 50GB -MemoryStartupBytes 2048MB -Generation 1 -SwitchName "外部"
PS C:\> Set-VM -VM $vm1 -AutomaticCheckpointsEnabled $false
PS C:\> Get-VMDvdDrive -VM $vm1 | Set-VMDvdDrive -Path D:\acs\iso\CentOS-6.9-x86_64-minimal.iso
PS C:\> Add-VMNetworkAdapter -VM $vm1 -SwitchName "内部"
PS C:\> New-VHD -Path D:\acs\vm\ACS-MS\VHD\NFS-Storage.vhdx -SizeBytes 1TB
PS C:\> Add-VMHardDiskDrive -VM $vm1 -Path D:\acs\vm\ACS-MS\VHD\NFS-Storage.vhdx
PS C:\> Start-VM $vm1
PS C:\> Start-Process vmconnect.exe -ArgumentList localhost, ACS-MS

VM1 が起動するので、CentOS をインストールします。インストール時に特に設定は不要です。ネットワークもインストール後に設定します。

VM2(KVM ホスト)

VM2 は KVM ホストとなるため、以下の点に注意する必要があります。

  • VM2 の中に、さらに KVM VM が作成されることになります。これを "入れ子になった仮想化(Nested Virtualization)"といいます。デフォルトではこれが無効になっているため、有効にする必要があります。
  • KVM VM からインターネットに通信するため、VM2 のネットワークアダプターの MAC アドレス スプーフィングを有効にする必要があります。
  • CloudStack のネットワークで VLAN を使用します。よって VM2 のネットワークアダプターは VLAN ID を認識する必要があります。

この点を踏まえて、VM2 を作成します。保存場所は D:\acs\vm\KVM-host-01 配下とします。

PS C:\> $vm2 = New-VM -Name KVM-host-01 -Path D:\acs\vm -NewVHDPath D:\acs\vm\KVM-host-01\VHD\KVM-host-01.vhdx -NewVHDSizeBytes 50GB -MemoryStartupBytes 4096MB -Generation 1 -SwitchName "外部"
PS C:\> Set-VM -VM $vm2 -AutomaticCheckpointsEnabled $false -ProcessorCount 4
PS C:\> Get-VMDvdDrive -VM $vm2 | Set-VMDvdDrive -Path D:\acs\iso\CentOS-6.9-x86_64-minimal.iso
PS C:\> Add-VMNetworkAdapter -VM $vm2 -SwitchName "内部"
PS C:\> Set-VMProcessor -VM $vm2 -ExposeVirtualizationExtensions $true
PS C:\> Set-VMNetworkAdapter -VM $vm2 -MacAddressSpoofing On
PS C:\> Set-VMNetworkAdapterVlan -VM $vm2 -Trunk -AllowedVlanIdList 1-4094 -NativeVlanId 0
PS C:\> Start-VM -VM $vm2
PS C:\> Start-Process vmconnect.exe -ArgumentList localhost, KVM-host-01

VM2 が起動するので、CentOS をインストールします。インストール時に特に設定は不要です。ネットワークもインストール後に設定します。

以上で Hyper-V リソースの作成は完了です。

まとめ

これで、Hyper-V の仮想スイッチと VM の作成が終わりました。物理的に言えば、2 台のサーバーが用意され、ネットワークケーブルとスイッチが結線された状態になります。

次回は、CentOS にログインして各種ソフトウェアのインストールを行います。具体的には、VM1 には ACS マネージメントサーバーを、VM2 には CloudStack Agent  のインストールを行います。

参考文献

入れ子になった仮想化による仮想マシンでの Hyper-V の実行
https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/user-guide/nested-virtualization

新規CTA