虛擬機器自動上電 自癒 重生是怎麼觸發的

2021-12-30 10:31:34 字數 2120 閱讀 6395

背景介紹:

系統執行過程中,經常會遇到虛擬機器異常退出,或者虛擬機器所在物理主機異常下電的情況出現。當這些管理人員不可預知的異常情況出現後,管理員可能會希望系統能夠自動的恢復,把異常下電的虛擬機器給啟動起來,把異常下電的物理主機上面的虛擬機器給在其他健康的物理節點上面啟動起來。達到虛擬機器高可用的目的。

我們按物理主機能否正常工作把高可用性分成下面兩類來進行描述

物理主機仍然健康時的虛擬機器自癒

物理主機仍然健康,採取的高可用策略比較簡單,就是盡力的把虛擬機器在源節點上啟動起來。我們把這種動作叫做自癒。

細分為下面幾種場景:

2.1 物理主機健康,僅僅是把物理主機重啟了一下

這種場景下可以有兩種處理策略:

a. 物理主機重新上電後,這個物理主機上面的原有執行的虛擬機器,系統不給自動上電;

b. 物理主機重新上電後,這個物理主機上面的原有執行的虛擬機器,系統給自動上電。

通過如下配置完成上面策略的切換:

resume_guests_state_on_host_boot,配置為true則系統自動把虛擬機器上電滿足上面的場景b;

配置為false,不自動上電,滿足上面場景a。

這個配置項是按計算節點配置的,不同的計算節點可以採用不同的策略。修改配置後,需要重啟對應計算節點的 nova-compute服務。

2.2 物理主機健康,虛擬機器異常下電了

虛擬機器異常下電的定義:不是通過openstack提供的虛擬機器操作命令,而虛擬機器處於了下電狀態,比如虛擬機器內部異常導致虛擬機器下電,通過libvirt命令直接把虛擬機關機等。

這種狀態的虛擬機器有兩種處理策略:

a. 執行虛擬機器下電動作,讓資料庫記錄的狀態真實反應虛擬機器狀態,這樣資料庫和底層虛擬化層看到的虛擬機器都是下電狀態的了,即以虛擬機器真實狀態同步資料庫;

b. 執行虛擬機器上電動作,讓虛擬機器的真實狀態和資料庫中記錄的狀態一致,使資料庫和虛擬機器的真實狀態都為執行態,即以openstack的資料庫中狀態同步虛擬機器的真實狀態。

上面的兩個策略通過配置項來選擇,heal_instance_customed:

取值為false,表示按上面的a執行,以虛擬機器的真實狀態為準;

設定為true,表示上面的b,以資料庫中的狀態為準。

監控原理:資料庫中維護的虛擬機器狀態和實際虛擬化層看到的狀態比較,目前僅僅處理了資料庫是active狀態,而實際執行態為shutoff的虛擬機器。

針對上面的第二種處理策略,為了滿足應標測試,加入了本地試圖上電一定次數扔不能上電成功後,嘗試在其他主機上面上電的功能,於是針對b又增加了下面的策略:本地自癒、本地+異地自癒、異地自癒(異地自癒採用的就是冷遷移的動作)。通過配置項heal_instance_policy來配置,可取值為local/remote/=local-remote:3(3為預設本地嘗試次數,也可由使用者指定),詳細描述參加

物理主機宕機狀態下虛擬機器異地重生

系統通過帶外管理工具,判斷物理主機的電源狀態,如果物理主機電源狀態為下電態且物理主機上面有執行的虛擬機器,則把這些虛擬機器在其他的計算節點上面進行重新部署。由於源物理主機已經宕機,沒法拷貝源主機上面儲存的資料資訊,所以本功能僅支援採用共享儲存的虛擬機器(即僅支援雲盤起的虛機)。

本功能預設關閉,開啟這個功能可以通過修改配置項 monitor_evacuate_on_offnode_chk_interval 來指定乙個檢測週期。預設功能關閉的。詳細介紹請參考

總結:1.host正常,host重啟:

host重新上電後虛機是否自動上電,該策略由resume_guests_state_on_host_boot配置項決定:

配置為true時,虛機自動上電;

配置為false時,虛機不自動上電。

resume_guests_state_on_host_boot配置項按計算節點配置,配置後需重啟nova-compute服務。

2.host正常,虛機異常下電:

虛機異常下電後,資料庫中的狀態與虛機的實際狀態不一致。有兩種解決策略:

以虛機真實的狀態同步資料庫:heal_instance_customed=false

以虛機資料庫中的狀態同步真實狀態:heal_instance_customed=true

3.host宕機,虛機在執行:

將宕機的host上的執行的主機在其他host上重新部署:monitor_evacuate_on_offnode_chk_interval

檢視linux是否是虛擬機器

第一種 檢視dmidecode命令下的system information 很明顯,根據前兩個引數manufacture和product name可以很明顯看到,我這台是虛擬機器 第二種 判斷 openvz xen pv uml 是最容易的,直接檢查 proc 下的相關目錄和檔案就可以知道,比如 o...

自動化安裝redhat虛擬機器

安裝部署 disable no 將yes改為no systemctl restart xinetd.service 重新啟動tftp服務 netstat antlupe grep 69 tcp6 0 0 40071 listen 29 23969 1300 rpc.statd udp 0 0 0.0...

讓VirtualBox虛擬機器實現開機自動後台執行

測試環境 host os windows 7 x64 guest os ubuntu windows xp 開啟遠端登入,並設定使用者密碼,xp用control userpasswords2設定自動登入 取消 要使 用本機,使用者必需輸入伺服器密碼 虛擬機器軟體 virtualbox 4.0.2 6...