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

NTNX>日記

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

Ravello の Nutanix CE Multi-Node Cluster で Live Migration。

NutanixCE-OnDemand Advent-Calendar
2015年のNutanix アドベンドカレンダー 24日目です。
 
以前に、Nutanix CE On Demand の Blueprint を使用して、
Ravello クラウドにマルチノードクラスタを構成してみました。
荒い手順ですが、こんな感じです。
 
今回は、Ravello の Nutanix CE Multi-Node Cluster で、Live Migration をしてみます。
 

 4 Node の Nutanix クラスタで、Ravello UI からはこのように見えます。

f:id:gowatana:20151224221412p:plain

 
そして、Prism でも Acropolis Hypervisor(AHV)が4台あることがわかります。

f:id:gowatana:20151224221442p:plain

 
VM は、ホストそれぞれの CVM のほかに、2台(vm01、vm02)作成しました。

f:id:gowatana:20151224221500p:plain

Live Migration 失敗編

Multi-Node クラスタを構成したので、とりあえず Live Migration してみました。
vm01 を、10.1.1.101 という AHV に Migration しようとしています。

f:id:gowatana:20151224221709p:plain


しかしエラーで失敗してしまいました。Details を開いてみると・・・

f:id:gowatana:20151224221936p:plain

エラーメッセージは下記。
Operation failed: Traceback (most recent call last): File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/task/base_task.py", line 492, in _resume File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/hypervisor/host.py", line 70, in wrapper File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/vm/migrate_task.py", line 113, in _run File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__ self.gen.next() File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/vm/migrate_task.py", line 110, in _run File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/vm/migrate_task.py", line 239, in _migrate File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/hypervisor/kvm/libvirt_connection.py", line 120, in wrapper File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/hypervisor/kvm/migrate_mixin.py", line 231, in migrate_vm libvirtError: internal error: Attempt to migrate guest to the same host 564dadcc-a795-99fc-f2ea-24afead600c3
 
さらに、CVM にログインして acli で Live Migration しても同様のエラーになりました。出力の末尾を見ると、「~00c3」という ID の AHV ホストが重複しているように見えているようです。
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ acli vm.migrate vm01 live=true host=10.1.1.101
vm01: pending
vm01: kUncaughtException: Traceback (most recent call last):
----- vm01 -----
kUncaughtException: Traceback (most recent call last):
  File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/task/base_task.py", line 492, in _resume
  File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/hypervisor/host.py", line 70, in wrapper
  File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/vm/migrate_task.py", line 113, in _run
  File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__
    self.gen.next()
  File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/vm/migrate_task.py", line 110, in _run
  File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/vm/migrate_task.py", line 239, in _migrate
  File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/hypervisor/kvm/libvirt_connection.py", line 120, in wrapper
  File "/home/afg/src/main/builds/build-ce-2015.11.05-stable-release/python-tree/bdist.linux-x86_64/egg/acropolis/hypervisor/kvm/migrate_mixin.py", line 231, in migrate_vm
libvirtError: internal error: Attempt to migrate guest to the same host 564dadcc-a795-99fc-f2ea-24afead600c3

問題点の確認 

AHV の UUID を確認してみます。

今回の Multi-Node Cluster に含まれるホストの UUID

今回の Nutanix CE は、4台すべて install ユーザで再ログインして Nutanix CE を再インストールしなおしたものです。AHV の UUID はすべて別になっているので問題なそうです。
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ acli host.list
Hypervisor address  Host UUID                             Schedulable
10.1.1.101          e2384cba-2ac3-4482-94c4-37e938ab6f82  True
10.1.1.102          12ad07a4-8e33-4632-b07e-c629d0f8f290  True
10.1.1.103          09cd92c9-4c75-4156-a77d-87be59f25d47  True
10.1.1.104          fbdaa099-9a00-4df6-af01-725cdc9f5309  True
しかし、AHV から CVM にログインして UUID 確認すると、AHV ホストの BIOS がもつ UUID (virsh sysinfo や dmidecode で表示される)は、Nutanix CE を再インストールしても変更されていませんでした。
※下記はためしに 1台だけ確認していますが、全台おなじ「~00C3」です。
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ ssh root@10.1.1.101
Last login: Sat Nov 21 04:50:56 2015
[root@NTNX-3ab8ddaa-A ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 2     NTNX-3ab8ddaa-A-CVM            running
 3     d103da66-0009-4439-81f6-80c7302b0bf5 running
[root@NTNX-0d740ca1-A ~]# virsh sysinfo | grep uuid
    564DADCC-A795-99FC-F2EA-24AFEAD600C3
 
AHV の、dmidecode を見ても UUID は「~00C3」です。
[root@CE-Ravello-A ~]# dmidecode | grep -i uuid
        UUID: 564DADCC-A795-99FC-F2EA-24AFEAD600C3

Nutanix CE の Blueprint のホストの UUID

Blueprint の、 Nutanix CE シングルクラスタの AHV ホストを確認してみると、やはり BIOS の UUID が「~00C3」でした。
nutanix@NTNX-bb10a8de-A-CVM:10.1.1.11:~$ acli host.list
Hypervisor address  Host UUID                             Schedulable
10.1.1.10           7591109c-c822-43cd-8aa2-9ecd5327edef  True
nutanix@NTNX-bb10a8de-A-CVM:10.1.1.11:~$ ssh root@10.1.1.10
Last login: Thu Dec 24 02:56:45 2015 from 192.168.5.254
[root@CE-Ravello-A ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 2     CE-Ravello-A-CVM               running

[root@CE-Ravello-A ~]# virsh sysinfo | grep uuid
    564DADCC-A795-99FC-F2EA-24AFEAD600C3
[root@CE-Ravello-A ~]# dmidecode | grep UUID
        UUID: 564DADCC-A795-99FC-F2EA-24AFEAD600C3
Ravello では、Library から VM を配置すると VM の UUID は自動的には変更されないようです。そのため、Nutanix CE の VM に設定された UUID を変更する必要があります。

Nutanix CE VM の UUID 変更

Ravello UI で、VM の UUID を指定できるので変更してみます。

Nuanix CE クラスタの停止

まず、稼働中の CVM 以外の VM をすべて停止します。
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ acli vm.list
VM name  VM UUID
vm01     72b0dc53-2c90-481e-89d8-35bc260f7067
vm02     d103da66-0009-4439-81f6-80c7302b0bf5
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ acli vm.shutdown vm01
vm01: pending
vm01: complete
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ acli vm.shutdown vm02
vm02: pending
vm02: complete
 
そしてクラスタを停止します。
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ cluster stop

 

さらに Ravello で Nutanix CE Multi-Node の Application をいったん停止しました。

f:id:gowatana:20151224222150p:plain

VM の UUID の変更

※4台それそれ、設定変更します。

Ravello の Canvas で VM を選択して、General → Advanced Configuration で・・・

f:id:gowatana:20151224222336p:plain

 

UUID を「~00C3」から重複しない値に変更して、「OK」→SAVE します。

f:id:gowatana:20151224222547p:plain

※今回は UUID の末尾だけ変更しました。

f:id:gowatana:20151224222925p:plain

Application の UPDATE ~ クラスタ起動

最後に、Application を UPDATE してから・・・

f:id:gowatana:20151224223625p:plain

 
Start Application で起動します。

f:id:gowatana:20151224223809p:plain

 
VM が起動したら、CVM にパブリック IP アドレスで SSH ログインしてクラスタを起動します。
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ cluster start

Live Migration の確認。

AHV ホストの BIOS UUID が変更されました。
nutanix@NTNX-0d740ca1-A-CVM:10.1.1.111:~$ ssh root@10.1.1.101
Last login: Thu Dec 24 04:17:37 2015
[root@NTNX-0d740ca1-A ~]# virsh sysinfo | grep uuid
    564DADCC-A795-99FC-F2EA-24AFEAD60001
[root@NTNX-0d740ca1-A ~]# dmidecode | grep UUID
        UUID: 564DADCC-A795-99FC-F2EA-24AFEAD60001
 
VM を起動して、ふたたび Migration してみます。

f:id:gowatana:20151224223905p:plain

 
今度は成功しました。Ravello 環境で、Nutanix CE の Live Migration ができました。

f:id:gowatana:20151224224026p:plain

 
しばしば、接続エラーらしきものが出ますが、とりあえず使えています・・・

f:id:gowatana:20151224225430p:plain

 
以上。メリークリスマスです。