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