OpenStack實踐(十一):Instance Live Migrate and Evacuate

前言:

    Live Migrate(動態遷移),是指在保證客戶機上應用服務正常運行的同時,讓客戶機在不同的宿主機之間進行遷移,分爲無共享存儲的Block Migration(塊遷移)方式和有共享存儲兩種方式,本文爲有共享存儲遷移方式。

    Migrate前提是計算主機的nova-compute服務正常,當某個計算主機宕機或其它異常導致服務不可用時,這時可以進行Evacuate操作,將實例遷移至其它主機。


環境

openstack版本pike
控制節點主機openstack-controller(ubuntu 16.04.5) 172.27.34.37
計算節點主機openstack-computer(ubuntu 16.04.5) 172.27.34.38
instance01
cirros0001(172.16.2.3)
instance02
cirros0002(172.16.2.6)


ubuntu安裝詳見Ubuntu16.04.5以lvm方式安裝全記錄

openstack安裝詳見OpenStack實踐(一):Ubuntu16.04下DevStack方式搭建p版OpenStack

Flat網絡搭建詳見:OpenStack實踐(三):Linux Bridge方式實現Flat Network


Live Migrate部分

修改nova.conf

修改配置文件nova.conf

stack@openstack-controller:~$ view /etc/nova/nova.conf 
[vnc]
#vncserver_listen = 127.0.0.1server_listen=0.0.0.0

重啓計算服務

root@openstack-controller:~# systemctl restart devstack@n*


配置hosts文件

配置個計算節點hosts文件,使之能相互識別主機名

root@openstack-controller:/# more /etc/hosts

圖片.png


免密訪問

各計算節點的root用戶能免密訪問應用用戶stack

root@openstack-controller:/# ssh-keygen  -t rsa

圖片.png

root@openstack-controller:~# ssh-copy-id  -i /root/.ssh/id_rsa.pub [email protected]

圖片.png

密碼測試

root@openstack-controller:~# ssh [email protected]

圖片.png


libvirt配置

本次實驗無需對/etc/default/libvirt-bin和/etc/libvirt/libvirtd.conf文件進行額外配置,採用默認qemu+ssh方式傳輸。

驗證連通性

root@openstack-controller:~# virsh -c qemu+ssh://stack@openstack-computer/system list  --all

圖片.png


配置nfs服務

nfs服務器配置

[root@centos7 ~]# mkdir -p /opt/stack/data/nova/instances
[root@centos7 ~]# chmod -R 777 /opt/stack/data/nova/instances
[root@centos7 ~]# view /etc/exports
/opt/stack/data/nova/instances  *(rw,sync,fsid=0,no_root_squash)
[root@centos7 ~]# exportfs -r
[root@centos7 ~]# exportfs -v
/opt/stack/data/nova/instances
                <world>(sync,wdelay,hide,no_subtree_check,fsid=0,sec=sys,rw,secure,no_root_squash,no_all_squash)


客戶端掛載

各計算節點都執行如下操作

安裝nfs軟件

root@openstack-controller:~# apt-get install nfs-common -y

測試共享目錄

root@openstack-controller:~# showmount -e 172.27.9.181
Export list for 172.27.9.181:
/opt/stack/data/nova/instances *

掛載

root@openstack-controller:~#  mount -t nfs 172.27.9.181:/opt/stack/data/nova/instances /opt/stack/data/nova/instances

圖片.png

開啓自動掛載

root@openstack-controller:~# view /etc/rc.local
mount -t nfs 172.27.9.181:/opt/stack/data/nova/instances /opt/stack/data/nova/instances


nfs搭建詳見:Centos7下NFS服務器搭建及客戶端連接配置


Live Migrate

查看準備遷移的實例

圖片.png

該實例遷移前位於controller節點,爲驗證是熱遷移,cirros01開啓ping服務

圖片.png


開始遷移

圖片.png

目標節點選擇computer,由於是共享存儲方式實現本實驗,不勾選‘塊設備遷移’選項。


遷移

圖片.png


遷移完成

圖片.png

實例由controller節點成功遷移至computer節點

圖片.png

ping服務在遷移過程中未中斷。


命令方式

root@openstack-controller:~# nova live-migration d0d5bc75-da89-46a8-be79-1e2639f9eaf8  openstack-controller

d0d5bc75-da89-46a8-be79-1e2639f9eaf8爲實例id,openstack-controller爲目標計算節點。


日誌分析

查看實例id和req id

查看實例id和req id以便於日誌定位

圖片.png

圖片.png


源節點nova-api發送消息

root@openstack-controller:~# journalctl -f --unit [email protected]

圖片.png


目標節點遷移準備

圖片.png


源節點暫停實例啓動遷移

圖片.png


目標節點恢復實例

圖片.png


源節點完成遷移並釋放資源

圖片.png



Evacuate部分

關閉計算節點openstack-computer

root@openstack-computer:~/.ssh# init 0


查看計算節點狀態

圖片.png


查看實例名和所屬計算節點名

root@openstack-controller:~# nova list --fields id,name,status,instance_name,host


執行evacuate 

root@openstack-controller:~# nova evacuate  80b8a5ff-5082-4864-b05e-5766c144d2b4  openstack-controller

將實例80b8a5ff-5082-4864-b05e-5766c144d2b4由計算節點openstack-computer遷移至openstack-controller


如果同主機做evacuate操作會報錯:The target host can't be the same one,如果結算節點未宕機就遷移,則報錯:Compute service of openstack-computer is still in use

圖片.png

Evacuate操作完成


登陸實例

圖片.png

實例恢復後密碼、ip、主機名都不變。


日誌分析

nova-api

圖片.png



nova-scheduler

圖片.png


nova-computer

圖片.png



本文參考

https://docs.openstack.org/nova/queens/admin/configuring-migrations.html#section-configuring-compute-migrations

https://docs.openstack.org/nova/queens/configuration/config.html

https://docs.openstack.org/nova/pike/admin/evacuate.html

http://blog.51cto.com/cloudman/1786423






































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章