Openstack - Nova Migration (Manually) between AZ

## Nova Migration Type

http://docs.openstack.org/admin-guide-cloud/compute-configuring-migrations.html

> **The migration types are:**
>
> 1. **Non-live migration** (sometimes referred to simply as ‘migration’)
> The instance is shut down for a period of time to be moved to another hypervisor. In this case, the instance recognizes that it was rebooted.
>
> 2. **Live migration** (or ‘true live migration’)
> Almost no instance downtime. Useful when the instances must be kept running during the migration.
> The different types of live migration are:
>     - 2-1. **Shared storage-based live migration** <br>
>            Both hypervisors have access to shared storage.
>     - 2-2. **Block live migration** <br>
>            No shared storage is required. Incompatible with read-only devices such as CD-ROMs and Configuration Drive (config_drive).
>     - 2-3. **Volume-backed live migration** <br>
>            Instances are backed by volumes rather than ephemeral disk, no shared storage is required, and migration is supported (currently only available for libvirt-based hypervisors).

## What's this?

`nova migrate` を使用した AZ 間の Nova instance の移動ではなく、

* [Nova Migration (non live migration) to Different Hypervisor between AZ][link-02]
* [Nova Migration (true live migration) to Different Hypervisor between AZ][link-04]

手動で Nova instance を別の AZ へ移動。

Brief summary procedure:

1. Nova の snapshot 取得
2. その snapshot から 別 AZ で Nova boot


## Migrate Nova instance

### Initial state

#### Hypervisor (Compute node)

    # nova hypervisor-list
    +----+-----------------------+
    | ID | Hypervisor hostname   |
    +----+-----------------------+
    | 6  | node-27               |
    | 9  | node-28               |
    | 15 | node-31               |
    +----+-----------------------+

#### AZ

    # nova availability-zone-list | egrep -A 10 "^\| nova"
    | nova                     | available                              |
    | |- node-27               |                                        |
    | | |- nova-compute        | enabled :-) 2015-02-25T01:12:12.000000 |
    | |- node-28               |                                        |
    | | |- nova-compute        | enabled :-) 2015-02-25T01:12:15.000000 |
    | nova2                    | available                              |
    | |- node-31               |                                        |
    | | |- nova-compute        | enabled :-) 2015-02-25T01:12:13.000000 |
    +--------------------------+----------------------------------------+

#### Nova instance is on node-27 of AZ:nova

    # nova list --field name,status,,OS-EXT-STS:vm_state,OS-EXT-AZ:availability_zone,OS-EXT-SRV-ATTR:hypervisor_hostname
    +--------------------------------------+------------+--------+--+----------------------+------------------------------+--------------------------------------+
    | ID                                   | Name       | Status |  | OS-EXT-STS: Vm State | OS-EXT-AZ: Availability Zone | OS-EXT-SRV-ATTR: Hypervisor Hostname |
    +--------------------------------------+------------+--------+--+----------------------+------------------------------+--------------------------------------+
    | 4cabed9e-94fe-4229-9fb9-b4e785895845 | admin_vm01 | ACTIVE |  | active               | nova                         | node-27                              |
    +--------------------------------------+------------+--------+--+----------------------+------------------------------+--------------------------------------+


### Nova snapshot

#### Take Nova snapshot

Recommend to stop a instance before take a snapshot.

    $ nova image-create --poll admin_vm01 admin_vm01_ss
    Server snapshotting... 100% complete
    Finished

#### List Glance images

    $ glance image-list --name admin_vm01_ss
    +--------------------------------------+---------------+-------------+------------------+------------+--------+
    | ID                                   | Name          | Disk Format | Container Format | Size       | Status |
    +--------------------------------------+---------------+-------------+------------------+------------+--------+
    | 95385cef-879c-4b36-91d7-e96f87c0c8ed | admin_vm01_ss | raw         | bare             | 1073741824 | active |
    +--------------------------------------+---------------+-------------+------------------+------------+--------+

    $ glance image-show admin_vm01_ss | egrep "Property|instance_uuid"
    | Property                              | Value                                |
    | Property 'instance_uuid'              | 4cabed9e-94fe-4229-9fb9-b4e785895845 |


### Boot Nova instance in different AZ:nova2 from the snapshot of AZ:nova

#### Nova boot

    # nova boot --flavor m1.tiny \
                --image admin_vm01_ss \
                --security-groups default \
                --availability-zone nova2 \
                --nic net-id=b3fa9d4d-4c21-47f5-be07-cf2ff518035e \
                admin_vm02
    +--------------------------------------+------------------------------------------------------+
    | Property                             | Value                                                |
    +--------------------------------------+------------------------------------------------------+
    | OS-DCF:diskConfig                    | MANUAL                                               |
    | OS-EXT-AZ:availability_zone          | nova                                                 |
    | OS-EXT-SRV-ATTR:host                 | -                                                    |
    | OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                                    |
    | OS-EXT-SRV-ATTR:instance_name        | instance-0000048c                                    |
    | OS-EXT-STS:power_state               | 0                                                    |
    | OS-EXT-STS:task_state                | scheduling                                           |
    | OS-EXT-STS:vm_state                  | building                                             |
    | OS-SRV-USG:launched_at               | -                                                    |
    | OS-SRV-USG:terminated_at             | -                                                    |
    | accessIPv4                           |                                                      |
    | accessIPv6                           |                                                      |
    | adminPass                            | yWYtEPCu78qz                                         |
    | config_drive                         |                                                      |
    | created                              | 2015-02-25T01:22:19Z                                 |
    | flavor                               | m1.tiny (1)                                          |
    | hostId                               |                                                      |
    | id                                   | e75a9a13-1df2-43e3-923e-bd6f4b56996c                 |
    | image                                | admin_vm01_ss (d2aad231-0b2a-4785-b58c-aa57300e5dee) |
    | key_name                             | -                                                    |
    | metadata                             | {}                                                   |
    | name                                 | admin_vm02                                           |
    | os-extended-volumes:volumes_attached | []                                                   |
    | progress                             | 0                                                    |
    | security_groups                      | default                                              |
    | status                               | BUILD                                                |
    | tenant_id                            | a8085d1871f847bdb906ef4a28d1bd48                     |
    | updated                              | 2015-02-25T01:22:19Z                                 |
    | user_id                              | a1c2ec19759040e39f219fcf82028bf6                     |
    +--------------------------------------+------------------------------------------------------+

#### Check the Nova instance

New Nova instance is booted on node-31 in AZ:nova2

    # nova list --field name,status,,OS-EXT-STS:vm_state,OS-EXT-AZ:availability_zone,OS-EXT-SRV-ATTR:hypervisor_hostname
    +--------------------------------------+------------+--------+--+----------------------+------------------------------+--------------------------------------+
    | ID                                   | Name       | Status |  | OS-EXT-STS: Vm State | OS-EXT-AZ: Availability Zone | OS-EXT-SRV-ATTR: Hypervisor Hostname |
    +--------------------------------------+------------+--------+--+----------------------+------------------------------+--------------------------------------+
    | 4cabed9e-94fe-4229-9fb9-b4e785895845 | admin_vm01 | ACTIVE |  | active               | nova                         | node-27                              |
    | e75a9a13-1df2-43e3-923e-bd6f4b56996c | admin_vm02 | ACTIVE |  | active               | nova2                        | node-31                              |
    +--------------------------------------+------------+--------+--+----------------------+------------------------------+--------------------------------------+

    # nova show admin_vm02 | egrep "Property|AZ|hypervisor| id |image"
    | Property                             | Value                                                    |
    | OS-EXT-AZ:availability_zone          | nova2                                                    |
    | OS-EXT-SRV-ATTR:hypervisor_hostname  | node-31                                                  |
    | id                                   | e75a9a13-1df2-43e3-923e-bd6f4b56996c                     |
    | image                                | admin_vm01_ss (d2aad231-0b2a-4785-b58c-aa57300e5dee)     |

## Environment

* Openstack : Juno
* Ceph : Firefly

## Reference

[Nova Migration (non live migration) to Different Hypervisor][link-01]
[Nova Migration (non live migration) to Different Hypervisor between AZ][link-02]
[Nova Migration (true live migration) to Different Hypervisor][link-03]
[Nova Migration (true live migration) to Different Hypervisor between AZ][link-04]
[Nova Migration (Manually) between AZ][link-05]
[Nova Migration (Manually) between Region][link-06]
[Nova Migration (true live migration) to Different Hypervisor - Volume-backend live migration (instance)][link-07]
[Nova Migration (true live migration) to Different Hypervisor - Volume-backend live migration (instance) between AZ][link-08]

[link-01]:http://qiita.com/idzzy/items/a3032dce3110f959e11b
[link-02]:http://qiita.com/idzzy/items/3d67b3cedd42d39a8e2a
[link-03]:http://qiita.com/idzzy/items/a03b19e0c0289a63e491
[link-04]:http://qiita.com/idzzy/items/ed45aaa3cc6ecc144f90
[link-05]:http://qiita.com/idzzy/items/98967887a0d3771a7795
[link-06]:http://qiita.com/idzzy/items/01b32f52e7cf0e4c5f55
[link-07]:http://qiita.com/idzzy/items/515776f1461bb5c96eea
[link-08]:http://qiita.com/idzzy/items/5c54443c0d36f0a14e72