どうもOpenStack界隈ではとあるホストで動いてるインスタンスを別ホストに動かすのはmigrate、壊れたり落ちたりしたホストで動いていたインスタンスを別ホストに動かすのはevacuateの模様。
壊れたノード上で動いていたインスタンスを別のホストに移動させてみた。
とあるホストが壊れたので、その場で実践してみたというのが正直なところ。
環境
Ubuntu14.04LTS amd64
OpenStack Kilo
#Evacuate対象を調べる
$ nova service-list |grep down
+-----+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+-----+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+
| 73 | nova-compute | hogehogeserver | az1 | enabled | down | 2015-09-15T00:47:46.000000 | - |
hogehogeserverのStateがDown
そこでここに乗ってるインスタンスを救いたい。
別のホストで起動するようにevacuateする。
インスタンスリストを調べる
$ nova list --all-tenants --host hogehogeserver
+--------------------------------------+--------------------+----------------------------------+---------+------------+-------------+-----------------------------------------------------------+
| ID | Name | Tenant ID | Status | Task State | Power State | Networks |
+--------------------------------------+--------------------+----------------------------------+---------+------------+-------------+-----------------------------------------------------------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | test01 | abababababababababababababababab | ACTIVE | - | Running | local_net=192.168.0.1; backend-net=10.1.1.1 |
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | test01 | cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd | SHUTOFF | - | Shutdown | local_net=192.168.0.2; backend-net=10.1.1.2 |
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | test01 | efefefefefefefefefefefefefefefef | ACTIVE | - | Running | local_net=192.168.0.3; backend-net=10.1.1.3 |
+--------------------------------------+--------------------+----------------------------------+---------+------------+-------------+-----------------------------------------------------------+
2台は起動していて1台はシャットダウン。
evacuate実行
今回のノードはすべてシェアードストレージにあったため、以下のように実施した。
$ nova evacuate instance_ID NEW_hostname --on-shared-storage
このようにインスタンスのIDと移動先のホストを指定するだけで良い。
Statusは前の状態を引き継ぐ。
ActiveならActiveに。
SHUTOFFならSHUTOFFになります。
シェアードストレージじゃない場合は、やったことないのでうまくいくかちょっとわからないです。
参考:
http://docs.openstack.org/ja/user-guide-admin/common/cli_nova_evacuate.html
https://ask.openstack.org/en/question/61208/evacuate-failure-with-sharedstorage-over-az/