1、虛擬機遷移分析
openstack虛擬機遷移分為冷遷移和熱遷移兩種方式。
1|11.1冷遷移:
冷遷移(cold migration),也叫靜態遷移。關閉電源的虛擬機進行遷移。通過冷遷移,可以選擇將關聯的磁盤從一個數據存儲移動到另一個數據存儲。
好處:虛擬機不需要位於共享存儲器上,數據丟失率小。
缺點:需要關閉電源,業務中斷。
1|21.2熱遷移:
熱遷移(Live Migration),又叫動態遷移、實時遷移,即虛擬機保存/恢復,通常是將整個虛擬機的運行狀態完整保存下來,同時可以快速的恢復到原有硬件平台甚至是不同硬件平台上。恢復以后,虛擬機仍舊平滑運行,用戶不會察覺到任何差異。
好處:軟件和硬件系統的維護升級,不會影響用戶的關鍵服務,提高了服務的高可用性和 用戶的滿意度。
缺點:過程不可中斷,操作復雜。
1|31.3虛擬機遷移的場景:
場景 1:物理機器硬件系統的維護,故障修復和升級(upgrade),但運行在這台物理機器上的虛擬機不能關機,因為用戶重要的服務跑在上面。
場景 2:物理機器軟件系統升級,打補丁(patch),為了不影響上面跑的虛擬機,在升級和打補丁之前,需要把虛擬機遷移到別的物理機器上。
場景 3:一個物理機器上的負載太重,需要減少一些虛擬機來釋放資源。
場景 4:跨域環境下,有的域里有的物理機上的虛擬機太多,有的域里物理機上虛擬機太少,做一下資源平衡。
1|41.4虛擬機遷移中數據處理
虛擬機的遷移,就是數據的轉移,如果計算節點之間沒有共享存儲,所以要轉移的數據包括兩部分:
1、靜態數據:存儲在本地的虛擬機的鏡像文件,包括后端鏡像(libvirt Base)和虛擬機單獨的增量鏡像文件(libvirt instance disks)。
2、動態數據:內存里虛擬機的運行時數據,內存里的數據是動態變化的數據,虛擬機里運行的負載的大小直接影響遷移的時間長短。
1|51.5虛擬機遷移中存儲
共享存儲與非共享存儲
虛擬機的數據存在共享磁盤上(Shared storage-based live migration),遷移只需要完成內存數據的遷移。
虛擬機的數據存在本地磁盤(block migration),需要對鏡像文件和內存數據同時遷移。
注意:本文使用的系統是ubuntu18.04,OpenStack版本是Pike。其他系統略有出入
2|0二、冷遷移
冷遷移實現方法有多種,例如有快照來遷移實例、實例文件遷移。以文件遷移為例,完成冷遷移。
2|12.1虛擬機文件冷遷移步驟:
1、關閉虛擬機
2、找到虛擬機位於/var/lib/nova/instances下文件
3、將虛擬機的文件全部copy到目標主機的相同位置下
4、修改用戶組
5、更新數據庫中host,node字段為目標主機的名字
6、重啟目標主機的nova-compute服務
2|22.2操作記錄
顯示運行的虛機
關閉虛機
將文件copy到目標主機的對應位置下
修改權限
修改數據庫中的字段
update instances set host='compute15', node='compute15' where uuid='3483d9f1-4015-48d9-9837-b67ca82dd54d';
查詢虛機所在的主機
啟動虛機
3|0三、熱遷移
熱遷移是在不停機的情況下完成遷移,步驟比起冷遷移要復雜。
3|13.1熱遷移步驟:
1、遷移前的條件檢查
2、遷移前的預處理
3、遷移過程
4、遷移后的處理
3.1.1遷移前的條件檢查
動態遷移要成功執行,一些條件必須滿足,所以在執行遷移前必須做一些條件檢查。
1、權限檢查,執行遷移的用戶是否有足夠的權限執行動態遷移。
2、參數檢查,傳遞給 API 的參數是否足夠和正確,如是否指定了 block-migrate 參數。
3、檢查目標物理主機是否存在。
4、檢查被遷移的虛擬機是否是 running 狀態。
5、檢查源和目的物理主機上的 nova-compute service 是否正常運行。
6、檢查目的物理主機和源物理主機是否是同一台機器。
7、檢查目的物理主機是否有足夠的內存(memory)。
8、檢查目的和源物理主機器 hypervisor 和 hypervisor 的版本是否相同。
3.1.2遷移前的預處理
在真正執行遷移前,做一些准備工作
1、在目的物理主機上獲得和准備虛擬機掛載的塊設備(volume)。
2、在目的物理主機上設置虛擬機的網絡(networks)。
3、目的物理主機上設置虛擬機的防火牆(fireware)。
3.1.3遷移過程
條件滿足並且做完了預處理工作后,就可以執行動態遷移了。主要步驟如下:
1、調用 libvirt python 接口 migrateToURI,來把源主機遷移到目的主機。
2、以一定的時間間隔(0.5)循環調用 wait_for_live_migration 方法,來檢測虛擬機遷移 的狀態,一直到虛擬機成功遷移為止。
3.1.4遷移后的處理
當虛擬機遷移完成后,要做一些善后工作。
1、在源物理主機上 detach volume。
2、在源物理主機上釋放 security group ingress rule。
3、在目的物理主機上更新數據庫里虛擬機的狀態。
4、在源物理主機上刪除虛擬機。
上面四步正常完成后,虛擬機就成功的從源物理主機成功地遷移到了目的物理主機了。
3|23.2熱遷移配置:
熱遷移需要libvirt遠程登錄和傳輸,所以開啟libvirt的TCP連接方式
virsh -c qemu+tcp://172.171.8.14/system
例如:qemu+tcp://172.16.0.15/system,服務端只需要配置。
修改/etc/libvirt/libvirtd.conf:
修改libvirtd的配置文件/etc/default/libvirtd:
以上修改后,執行
可以看到libvirtd監聽在TCP 16509端口。
配置nova.conf
計算節點的/etc/nova/nova.conf文件中添加如下的內容,使得compute服務支持熱遷移。
重啟nova-compute
修改用戶組
查看目標主機的用戶組信息
修改所有計算節點為相同的用戶組id。
openstack遷移命令
查看所有實例
查看需要遷移虛擬機實例
查看可用的計算節點
查看目標節點資源
開始遷移,正常無任何回顯
3|33.3操作記錄
查看虛擬機
查看虛擬機所在計算節點
遷移
查看遷移后的虛擬機所在節點
在遷移過程中,dashboard中會出現正在遷移的任務
3|43.4 大型鏡像測試
OpenLab平台鏡像遷移
創建虛擬機,鏡像是ubuntu,1.8G
遷移之前ubuntu所在的主機為compute14
遷移中
遷移之后ubuntu所在的主機為compute15
運行測試
創建虛擬機ubuntu_two,所在主機為compute14
遷移之前的界面
遷移過程
遷移之后的虛擬機所在的主機為compute15
遷移過程很快,2min左右,遷移之后界面仍然是之前的界面
以上內容來源:https://www.cnblogs.com/goldsunshine/p/9588017.html