読者です 読者をやめる 読者になる 読者になる

NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix CE で OpenStack。Part8: マルチテナントにしてみる。

OpenStack 連携している Nutanix CE で露骨なマルチテナント環境を作ってみました。下記のような環境を、OpenStack 側と Nutanix 側から見てみます。

f:id:gowatana:20160527084110j:plain

 テナント1

  • Project: t1 ※ユーザ「user01」が所属。
  • Instance: vm-1、vm-2、vm-3
  • Network: net01 (subnet: 192.168.10.0/24)

テナント2

  • Project: t2 ※ユーザ「user02」が所属。
  • Instance: vm-1、vm-2、vm-3
  • Network: net01 (subnet: 192.168.10.0/24)

OpenStack 側

Horizon Dashboard から見てみます。

テナント1 の様子

user01 でログインして、t01 プロジェクトを見ています。
vm-01 ~ vm03 が作成されていて、192.168.10.0/24 のネットワークに接続されています。

f:id:gowatana:20160527084425p:plain

t01 プロジェクトの vm-01 の ID を見ておきます。
「9e29fe1d-fdef-49bc-a6f0-f498e1cd32d1」になっています。

f:id:gowatana:20160527084739p:plain

t01 プロジェクトの net01 の ID を見ておきます。
「c922a8bb-6746-4650-8bf3-81bb9c63dab4」になっています。

f:id:gowatana:20160527084924p:plain

テナント2の様子

user02 でログインして、t02 プロジェクトを見ています。
別のテナントですが、t01 と同様に vm-01 ~ vm03 が作成されていて、192.168.10.0/24 のネットワークに接続されています。

f:id:gowatana:20160527085059p:plain

t02 プロジェクトの vm-01 の ID を見ておきます。
こちらは「2dd3162d-0930-4eee-9c3c-4b2e4878f179」です。

f:id:gowatana:20160527085234p:plain

t02 プロジェクトの net01 の ID を見ておきます。
こちらは「97a21c24-5404-400d-84a6-59b054f3ccb7」になっています。

f:id:gowatana:20160527085442p:plain

Nutanix 側

Nutanix 側では、OpenStack のプロジェクトにかかわらず、VM やネットワークがまとめて見えます。UUID を見ると、OpenStack 側のオブジェクトとの対応がわかります。

Prism で見る

同じ名前で、同じネットワークから IP アドレスが設定されている VM が並んでいます。ID 「9e29fe1d-fdef-49bc-a6f0-f498e1cd32d1」をもとに探すと、t01 プロジェクトの vm-01 はこれです。

f:id:gowatana:20160527085900p:plain

すぐとなりに、ID が「2dd3162d-0930-4eee-9c3c-4b2e4878f179」である t02 プロジェクトの vm-01 があります。

f:id:gowatana:20160527085827p:plain

ネットワークには特に名前がつけられていませんが、今回は VLAN ID 38 と 40 のネットワークが OpenStack から作成されました。

f:id:gowatana:20160527090133p:plain

Nutanix Cmdlets でみる

ID とオブジェクトを簡単にまとめて表示して、OpenStack - Nutanix 間のひもづけを確認するため、PowerShell の Nutanix Cmdlets で Prism に接続して情報を見てみました。

雰囲気を出すために PowerShell のプロンプトを変更してあります。

PS C:\> function prompt{Write-Host "NTNX" -NoNewLine -ForegroundColor White; Write-Host ">" -NoNewLine -ForegroundColor Green;" "}

Nutanix CE のバージョンは、まだ 2016.03.13 です。

NTNX> Get-NTNXCluster | ft -AutoSize name,version

name    version
----    -------
ntnx-ce 2016.03.13


NTNX>

VM の名前、IP アドレス、ID(vmId)を表示してみます。
Hoizon と Prism で見たような情報が取得できます。

NTNX> Get-NTNXVM | sort vmName,ipAddresses | ft -AutoSize vmName,ipAddresses,vmId

f:id:gowatana:20160528000636p:plain

CVM(ControllerVM)を除いた、VM の名前、IP アドレス、vNIC ID を表示してみます。vNIC ID の末尾から、うまい具合に VM ID と MAC アドレス がわかります。

NTNX> Get-NTNXVM | where {$_.controllerVm -eq $false} | sort vmName,ipAddresses | ft -AutoSize vmName,ipAddresses,virtualNicIds

f:id:gowatana:20160528000645p:plain

vNIC の接続されているネットワーク ID を見てみます。接続先のネットワークは 2つに分かれています。

NTNX> Get-NTNXVM | where {$_.controllerVm -eq $false} | % {Get-NTNXVMNIC -Vmid $_.vmid} | sort networkUuid | ft -AutoSize macAddress,networkUuid

f:id:gowatana:20160528001128p:plain

MAC アドレスと、ネットワーク ID をもとにした VLAN ID を表示してみます。Prism で見た通りそれぞれのネットワークの VLAN ID は 38 と 40 です。

NTNX> Get-NTNXVM | where {$_.controllerVm -eq $false} | % {Get-NTNXVMNIC -Vmid $_.vmid} | sort networkUuid | ft -AutoSize macAddress,{(Get-NTNXNetwork -Networkid $_.networkUuid).vlanId}

f:id:gowatana:20160528000941p:plain

OpenStack のインスタンス UUID をもとに VM を探す工夫

1行のコマンドラインを長くするとわかりにくいので、ここまで確認してみた内容を見るためだけの、簡単なスクリプトを作ってみました。ちなみに Nutanx の vmId に含まれる clusterUuid の部分は、たぶんなくても ID 重複しないので除外しています。

get_osuuid2ntnxvm.ps1

Get-NTNXVM | where {$_.controllerVm -eq $false} | % {
    $vm = $_
    Get-NTNXVMNIC -Vmid $_.vmid | sort networkUuid | % {
        $vnic = $_
        $t = "" | select ID,VM,IP,MAC,VLAN
        $t.ID = ($vm.vmId -replace "^.*::","")
        $t.VM = $vm.vmName
        $t.MAC = $vnic.macAddress
        $t.VLAN = (Get-NTNXNetwork -Networkid $vnic.networkUuid).vlanId
        $t.IP = $vm.ipAddresses
    }
    $t
}

CVM を除く VM を表示。テナントが区別できずとりあえず接続している VLAN でソート。VM に複数 NIC があると微妙に・・・

NTNX> .\get_osuuid2ntnxvm.ps1 | sort VLAN,VM | ft -AutoSize

f:id:gowatana:20160528094643p:plain

インスタンス UUID「9e29fe1d-fdef-49bc-a6f0-f498e1cd32d1」を探してみました。

NTNX> .\get_osuuid2ntnxvm.ps1 | where {$_.ID -eq "9e29fe1d-fdef-49bc-a6f0-f498e1cd32d1"}

f:id:gowatana:20160528094405p:plain

 以上。