国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在高可用性虛擬機環(huán)境中提供高可用性應(yīng)用程序的制作方法

      文檔序號:6361181閱讀:188來源:國知局
      專利名稱:在高可用性虛擬機環(huán)境中提供高可用性應(yīng)用程序的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及高可用性,更具體地是涉及在虛擬機中提供高可用性應(yīng)用程序。
      背景技術(shù)
      虛擬化系統(tǒng)允許多個操作系統(tǒng)(實際上可以是相同類型操作系統(tǒng)的單獨實例)在同一時段內(nèi)在同一硬件上執(zhí)行。每個執(zhí)行的操作系統(tǒng)充當一個獨立的“虛擬機”,它們可以交互并且可以采用基本相同的方式用作在獨立硬件上執(zhí)行的獨立操作系統(tǒng)。通過將一個硬件計算裝置有效地轉(zhuǎn)變成若干虛擬機,虛擬機允許提高硬件資源的使用率。一些虛擬化系統(tǒng)提供虛擬化控制器,該虛擬化控制器可以管理在一個或多個計算裝置上實施的一個或多虛擬機。此類虛擬化控制器可以與虛擬機通信并且控制這些虛擬機的運行。在某些環(huán)境下,虛擬化控制器甚至可以采用提供虛擬機的高可用性的方式來管理虛擬機,這樣如果一個特定虛擬機發(fā)生故障,虛擬化控制器可以在另一個計算裝置上重啟發(fā)生故障的虛擬機。不幸的是,在提供高可用性虛擬機的傳統(tǒng)虛擬化系統(tǒng)中,同樣不可能有效地使虛擬機內(nèi)執(zhí)行的應(yīng)用程序具有高可用性。

      發(fā)明內(nèi)容
      在此披露了各種提供在高可用性虛擬機環(huán)境下執(zhí)行的應(yīng)用程序的高可用性的系統(tǒng)和方法。例如,一種方法包括從在虛擬機中執(zhí)行的監(jiān)控代理接收指示該虛擬機中執(zhí)行的應(yīng)用程序的狀態(tài)的信息。響應(yīng)于接收到該信息,該方法確定是否該重啟該虛擬機?;谠摯_定,該方法然后確定監(jiān)控代理是否在超時間隔到期之前向虛擬化控制器發(fā)出心跳信息。如果虛擬機在超時間隔到期之前沒有發(fā)出心跳信息,配置虛擬化控制器以重新啟動虛擬機。確定是否發(fā)出心跳信息的操作由計算裝置執(zhí)行。在一些實施方案中,由實施決策代理的計算裝置來執(zhí)行該確定操作,該決策代理并不在該虛擬機中執(zhí)行。接收到的信息可以識別在虛擬機中執(zhí)行的多個應(yīng)用程序中的每一個應(yīng)用程序的運行狀態(tài)。確定是否重新啟動該虛擬機可以基于該多個應(yīng)用程序中的每一個應(yīng)用程序的運行狀態(tài)和優(yōu)先級。例如,響應(yīng)于識別出該多個應(yīng)用程序中一個較高優(yōu)先級的應(yīng)用程序正確執(zhí)行并且該多個應(yīng)用程序中一個較低優(yōu)先級的應(yīng)用程序發(fā)生故障的信息,該方法可以確定不應(yīng)該重啟該虛擬機?;蛘撸憫?yīng)于識別出該多個應(yīng)用程序中一個較高優(yōu)先級的應(yīng)用程序發(fā)生故障并且該多個應(yīng)用程序中一個較低優(yōu)先級的應(yīng)用程序正確執(zhí)行的信息,該方法可以確定應(yīng)該重啟該虛擬機。在一個實施方案中,響應(yīng)于識別出該應(yīng)用程序不正確運行的信息,該方法可以確定監(jiān)控代理首先嘗試重啟該應(yīng)用程序,其中在確定虛擬機是否應(yīng)該重啟之前嘗試重啟該應(yīng)用程序。
      響應(yīng)于識別出該應(yīng)用程序已經(jīng)有意脫機的信息,該方法可以決定注銷監(jiān)控代理以避免向虛擬化控制器提供心跳信息。監(jiān)控代理被注銷之后可以繼續(xù)監(jiān)控該應(yīng)用程序。響應(yīng)于識別出該應(yīng)用程序重新上線的信息,該方法可以決定重新注冊監(jiān)控代理以便向虛擬化控制器提供心跳信息。該方法可以包括從管理員接收信息。例如,該信息可以指示是否應(yīng)用程序已經(jīng)脫機和/或是否監(jiān)控代理應(yīng)該繼續(xù)監(jiān)控應(yīng)用程序。系統(tǒng)的一個實例包括一個或多個處理器和連接至該一個或多個處理器的存儲器。該存儲器存儲程序指令,這些程序指令可執(zhí)行用于實施類似上述方法的一種方法。同樣,這些程序指令可以存儲在計算機可讀存儲介質(zhì)上。前述內(nèi)容是概述,因此必然包含細節(jié)的簡化、概括和省略;因此本領(lǐng)域的普通技術(shù)人員將會認識到此概述只是示例性的并且不用于任何形式的限制。僅由權(quán)利要求定義的本發(fā)明的其他方面、創(chuàng)新性特征以及優(yōu)點在以下的非限定性詳細描述中將變得明顯。附圖簡沭通過參考附圖,本發(fā)明可以得到更好的理解,并且其眾多目標、特征以及優(yōu)點對本領(lǐng)域的普通技術(shù)人員是明顯的。

      圖1是根據(jù)本發(fā)明的一個實施方案的一種在高可用性虛擬機環(huán)境下提供應(yīng)用程序的高可用性的系統(tǒng)的框圖。圖2是根據(jù)本發(fā)明的另一個實施方案的另一種在高可用性虛擬機環(huán)境下提供應(yīng)用程序的高可用性系統(tǒng)的框圖。圖3是根據(jù)本發(fā)明的一個實施方案的一種在高可用性虛擬機環(huán)境下提供應(yīng)用程序的高可用性的方法的流程圖。圖4是根據(jù)本發(fā)明的一個實施方案的一種確定是否允許心跳信號從執(zhí)行多個監(jiān)控應(yīng)用程序的虛擬機發(fā)送到虛擬化控制器的方法的流程圖。圖5是根據(jù)本發(fā)明的一個實施方案的一種計算裝置的框圖,該框圖展示了監(jiān)控代理和決策代理兩者如何在軟件中實施。圖6是根據(jù)本發(fā)明的一個實施方案的一種網(wǎng)絡(luò)系統(tǒng)的框圖,該框圖展示了各種計算裝置如何通過網(wǎng)絡(luò)進行通信。盡管很容易對本發(fā)明做出各種修改和替代形式,但在附圖和詳細的說明中仍以實例提供本發(fā)明的具體實施方案。應(yīng)當理解,附圖和詳細說明并無意將本發(fā)明限制于所披露的具體形式。相反,目的是覆蓋所有落入由所附權(quán)利要求所限定的本發(fā)明的精神和范圍內(nèi)的修改形式、等同形式和替代形式。實施本發(fā)明的一種或多種模式圖1是一個虛擬化系統(tǒng)的框圖。如圖所示,虛擬化系統(tǒng)包括兩臺主機10(1)和10(2)。在此實例中,每臺主機實施兩個虛擬機(VMs)。如圖所示,主機10(1)實施VM30(1)和VM302(2).同樣,主機10 (2)實施VM30(3)和VM30 (4)。應(yīng)當注意的是替代實施方案可以每臺主機實施與此實例中所示的主機不同數(shù)量的VM,并且相同的系統(tǒng)可以包括一個或多個主機,其中每臺主機可以和在同一系統(tǒng)的其他主機實現(xiàn)不同數(shù)量的VM。虛擬機VM30 (I) -VM30 (4)各自提供一個執(zhí)行操作系統(tǒng)的自容式實例。可以利用相同或不同的操作系統(tǒng)實施在同一主機上執(zhí)行的多個VM。與VM交互的客戶端通常將以完全相同的方式(客戶端與獨立硬件上運行的獨立操作系統(tǒng)進行交互)進行交互??梢岳锰摂M化軟件(例如美國加利福尼亞州的Palo Alto公司提供的VMware)來實施虛擬機。應(yīng)用程序在虛擬機的每一個的內(nèi)部執(zhí)行。這種應(yīng)用程序可以是數(shù)據(jù)庫應(yīng)用程序、郵件服務(wù)器等。這里,應(yīng)用程序40(1)在VM30 (I)中執(zhí)行,應(yīng)用程序40 (2)在VM30 (2)中執(zhí)行,應(yīng)用程序40 (3)和40⑷在VM30(3)中執(zhí)行,而應(yīng)用程序40 (5)在VM30⑷中執(zhí)行如圖所示,多個應(yīng)用程序可以在一個單一 VM內(nèi)執(zhí)行。在一個給定的VM上執(zhí)行的應(yīng)用程序的類型和在同一個虛擬化系統(tǒng)內(nèi)的另一個VM上執(zhí)行的應(yīng)用程序的類型可以相同或不同。監(jiān)控代理(一種特殊類型的應(yīng)用程序)也在每個VM內(nèi)執(zhí)行。每個監(jiān)控代理被配置為監(jiān)控在相同VM內(nèi)執(zhí)行的一個或多個應(yīng)用程序的狀態(tài)并且將所監(jiān)控的一個或多個程序的狀態(tài)報告給決策代理。如圖所示,監(jiān)控代理50(1)在VM30(1)中執(zhí)行并且監(jiān)控應(yīng)用程序40(1)的狀態(tài)。監(jiān)控代理50 (2)在VM30(2)中執(zhí)行并且監(jiān)控應(yīng)用程序40 (2)的狀態(tài)。監(jiān)控代理50 (3)在VM30(3)中執(zhí)行并且監(jiān)控應(yīng)用程序40 (3)和40 (4)中每一個的狀態(tài)。監(jiān)控代理50(4)在VM30(4)中執(zhí)行并且監(jiān)控應(yīng)用程序40 (5)的狀態(tài)。盡管圖1展示了一個單一的監(jiān)控代理可以監(jiān)控多個應(yīng)用程序的實施方案,但替代實施方案可以在每個VM上使用多個監(jiān)控代理,這樣在被監(jiān)控的應(yīng)用程序和監(jiān)控代理之間存在一一對應(yīng)關(guān)系。應(yīng)當注意的是監(jiān)控代理可以被配置為監(jiān)控比給定VM中執(zhí)行的所有應(yīng)用程序更少的應(yīng)用程序。在一些實施方案中,監(jiān)控代理被實施為VERITAS集群服務(wù)器(VCS)代理,該代理可從美國加利福尼亞州的庫比蒂諾的Symantec公司購得。在這種實施方案中,每個VM可以被配置為一個獨立的單節(jié)點群集。監(jiān)控代理可以被配置為該單節(jié)點群集的監(jiān)控服務(wù)組。在VM中受到監(jiān)控的每個應(yīng)用程序還可以被配置為該單節(jié)點群集的服務(wù)組。該監(jiān)控服務(wù)組監(jiān)控相同單節(jié)點集群內(nèi)的其他服務(wù)組的狀態(tài)。決策代理(另一種特殊類型的應(yīng)用程序)在每一個VM內(nèi)執(zhí)行。決策代理被配置用于基于一個或多個應(yīng)用程序的狀態(tài)(由一個或多個相應(yīng)的監(jiān)控代理來識別)來確定應(yīng)當采取什么動作(如果存在的話)。將在以下進行更為詳細地描述決策代理的操作。如圖所示,決策代理60 (I)在VM30(1)中執(zhí)行,決策代理60⑵在VM30⑵中執(zhí)行,決策代理60 (3)在VM30 (3)中執(zhí)行,而決策代理60 (4)在VM30(4)中執(zhí)行。在一些實施方案中,監(jiān)控代理和決策代理的功能可以合并為在每一個VM內(nèi)執(zhí)行的一個單一代理。主機10⑴和10⑵相連接以便與服務(wù)器70進行通信(例如,通過網(wǎng)絡(luò)),該服務(wù)器執(zhí)行虛擬化控制器80。虛擬化控制器80控制在主機10 (I)和10 (2)上實施的多個VM。因此,虛擬化控制器80監(jiān)控每個VM的狀態(tài)以識別每個VM是否正確執(zhí)行。響應(yīng)于檢測到VM出現(xiàn)故障,虛擬化控制器80可以采取行動來糾正這種情況。此類行動可以包括在相同的或另一臺主機上重啟故障的VM或嘗試糾正導(dǎo)致故障的問題。在一些實施方案中,虛擬化控制器80可以作為VMware的vCenter服務(wù)器(TM)來實施。在此類實施方案中,虛擬化控制器80可以通過VMware Tools (TM)提供的心跳通道與VM進行通信,該TM可以安裝在每一個VM中并在其中執(zhí)行。在此類實施方案中,用于在另一個主機上重新啟動VM的機構(gòu)可以是vMotion(TM)??梢岳锰摂M化軟件(例如由美國加利福尼亞州的Palo Alto公司的VMware所提供的虛擬化軟件)來實現(xiàn)這些特征。這里,虛擬化控制器80依賴于每個VM的心跳信息來確定該VM的狀態(tài)。在每個VM上的應(yīng)用程序(例如,以下更為詳細描述的監(jiān)控代理)向虛擬化控制器80注冊,以指示注冊的應(yīng)用程序?qū)l(fā)送心跳給虛擬化控制器80。而當處于從一個特定VM接收心跳的狀態(tài)時,虛擬化控制器80預(yù)計從該特定VM每周期(也稱作超時間隔)接收一次心跳。如果在一個給定的周期內(nèi)沒有接收到一個心跳(或者如果在連續(xù)周期上沒有接收到一系列心跳),虛擬化控制器80將確定該VM出現(xiàn)故障并且采取糾正行動(例如,重啟另一臺主機上的VM)。為了提供在圖1的虛擬環(huán)境中執(zhí)行的應(yīng)用程序的高可用性,每個監(jiān)控代理將向虛擬化控制器80注冊,以為它的VM提供心跳。因此,監(jiān)控代理50(1)注冊以便為VM30(1)提供心跳,監(jiān)控代理50(2)注冊以便為VM30(2)提供心跳,監(jiān)控代理50 (3)注冊以便為VM30(3)提供心跳,監(jiān)控代理50 (4)注冊以便為VM30(4)提供心跳。如上所述,監(jiān)控代理50(1)-50(4)將監(jiān)控應(yīng)用程序并且將這些應(yīng)用程序的狀態(tài)報告給決策代理60 (I)-60 (4)中的一個對應(yīng)的決策代理。根據(jù)在特定VM上監(jiān)控的程序的狀態(tài),該VM中的決策代理將決定是否應(yīng)該重啟該應(yīng)用程序,該VM是否應(yīng)該繼續(xù)由虛擬化控制器進行監(jiān)控,并且是否應(yīng)該發(fā)送該VM的心跳信息。然后決策代理將其決策報告給監(jiān)控代理,監(jiān)控代理會采取所決定的行動。對于作為監(jiān)控代理的相同VM內(nèi)的每個受監(jiān)控應(yīng)用程序,該監(jiān)控代理可以檢測該應(yīng)用程序是否正確執(zhí)行。在至少一些實施方案中,監(jiān)控代理還可以在一個非執(zhí)行的應(yīng)用程序是由于故障還是由于有意脫機而不執(zhí)行之間進行辨別。例如,監(jiān)控代理可以提供接口(例如,圖形用戶接口、命令行接口等),管理員可以通過該接口通知該監(jiān)控代理一個應(yīng)用程序已經(jīng)脫機,作為響應(yīng),該監(jiān)控代理可以更新與該應(yīng)用程序相關(guān)的狀態(tài)信息以指示該應(yīng)用程序是有意脫機的。應(yīng)當注意的是管理員可以在任何時候使應(yīng)用程序脫機或重新聯(lián)線(并且通過接口識別此動作),不管當前的操作狀態(tài)是否由監(jiān)控代理所檢測。當監(jiān)控代理檢測到應(yīng)用程序未執(zhí)行,監(jiān)控代理可以進行檢查(例如,通過訪問與該應(yīng)用程序相關(guān)聯(lián)的存儲信息)以查看是否在該應(yīng)用程序停止執(zhí)行之前管理員就指示了該應(yīng)用程序正在脫機。當有意脫機之后應(yīng)用程序重新啟動時,管理員可以再次(例如,通過接口)通知監(jiān)控代理應(yīng)用程序的狀態(tài)變化??商娲?,監(jiān)控代理可以簡單檢測到該應(yīng)用程序已經(jīng)在下個心跳周期重新啟動并且清除以前與該應(yīng)用程序相關(guān)的任何信息。因此,監(jiān)控代理識別每個被監(jiān)控的應(yīng)用程序是否正確執(zhí)行。如果未正確執(zhí)行,至少在某些實施方案中,監(jiān)控代理將進一步分辨應(yīng)用程序沒有執(zhí)行是由于故障或由于有意脫機。監(jiān)控代理可以產(chǎn)生描述應(yīng)用程序及其檢測到的執(zhí)行狀態(tài)的信息,并且將這種信息提供給決策代理。例如,監(jiān)控代理50(1)可以檢測到應(yīng)用程序40(1)發(fā)生故障,并且可以向決策代理60 (I)發(fā)送指示應(yīng)用程序40 (I)發(fā)生故障的信息。當從監(jiān)控代理接收描述每個應(yīng)用程序的狀態(tài)的信息(例如,在線、故障、或有意脫機)時,作為響應(yīng),決策代理決定采取何種動作。如果在VM中只有一個單一的受監(jiān)控的應(yīng)用程序,而且該應(yīng)用程序正在正常執(zhí)行,決策代理將決定發(fā)送心跳信息(確保該虛擬化控制器不重啟該VM)。如果該應(yīng)用程序發(fā)生故障,決策代理將決定禁止發(fā)送心跳信息,這樣將使虛擬化控制器重啟VM (在該VM中發(fā)生故障應(yīng)用程序正在執(zhí)行),這將在已重啟的VM內(nèi)有效地重啟發(fā)生故障的應(yīng)用程序。如果應(yīng)用程序已經(jīng)有意脫機(例如,如果應(yīng)用程序不執(zhí)行但是并未出現(xiàn)故障),決策代理可以決定注銷理應(yīng)該撤銷向虛擬化控制器提供心跳。監(jiān)控代理通過向虛擬化控制器發(fā)送一個注銷請求來實現(xiàn)注銷。注銷處理有效地從為高可用性而進行監(jiān)控的VM組中刪除已注銷的VM。虛擬化控制器不再期望從VM接收到定期的心跳信息,并且當沒有心跳從VM接收到時不會重啟VM。接口(例如,用于允許管理員指示何時應(yīng)用程序已經(jīng)有意脫機)還可以允許管理員指定監(jiān)控代理何時應(yīng)該重新注冊。例如,當應(yīng)用程序重新聯(lián)機時,管理員可以指定是否監(jiān)控代理應(yīng)該注冊心跳信息。例如,如果應(yīng)用程序脫機進行升級時,管理員可以指示該注銷應(yīng)該是暫時的。相反如果該應(yīng)用程序是因為不再用于提供服務(wù)而脫機的,管理員可以指示該注銷應(yīng)該是永久性的。監(jiān)控代理可以獲取并報告每個被監(jiān)控的應(yīng)用程序每一次心跳周期的狀態(tài)。同樣,決策代理可以接收該信息并基于該信息在每一次心跳周期上產(chǎn)生一個決定。在不注冊監(jiān)控代理以發(fā)送心跳給虛擬化控制器期間,監(jiān)控代理仍然可以繼續(xù)監(jiān)控一個或多個應(yīng)用程序的狀態(tài)并且向決策代理報告應(yīng)用程序狀態(tài)。同樣,決策代理可以每周期一次地的從監(jiān)控代理接收信息并且利用該信息決定采取何種動作(例如,發(fā)送心跳,不發(fā)送心跳,或注銷)。在注銷的同時,通過繼續(xù)監(jiān)控應(yīng)用程序,監(jiān)控代理可以檢測何時應(yīng)用程序重新聯(lián)機。當檢測到該動作時,作為響應(yīng),決策代理可以使監(jiān)控代理重新注冊以便向虛擬化控制器發(fā)送心跳信息。如果多個應(yīng)用程序被監(jiān)控時,監(jiān)控代理將向適當?shù)臎Q策代理報告每個被監(jiān)控應(yīng)用程序的狀態(tài),然后根據(jù)狀態(tài)和每個應(yīng)用程序的優(yōu)先級決定采用何種操作。應(yīng)用程序的優(yōu)先級可以通過管理員進行配置(例如,通過命令行接口或圖形用戶接口輸入信息)并由決策代理存儲。通常在做決定時,相比于較低優(yōu)先級應(yīng)用程序,決策代理將給予高優(yōu)先級應(yīng)用程序的狀態(tài)更高的權(quán)重??紤]應(yīng)用程序優(yōu)先級的各種不同算法中的任意一種都可用于實現(xiàn)此過程。例如,一個簡單的算法可以簡單評估最高優(yōu)先級應(yīng)用程序的狀態(tài)并且根據(jù)該應(yīng)用程序的狀態(tài)做出決定。如果該最高優(yōu)先級應(yīng)用程序正確執(zhí)行時,決策代理可以決定該監(jiān)控代理應(yīng)該發(fā)送心跳,而不管任何較低優(yōu)先級應(yīng)用程序的狀態(tài)如何。相似地,即使所有較低優(yōu)先級應(yīng)用程序正確運行,如果最高優(yōu)先級應(yīng)用程序發(fā)生故障,決策代理可以決定監(jiān)控代理不應(yīng)當發(fā)送心跳信息。在此 實例中,所有權(quán)重都給予最高優(yōu)先級應(yīng)用程序的狀態(tài)。其他算法可以比上述例子分配更多權(quán)重給較低優(yōu)先級的應(yīng)用程序,上述例子中除了最高優(yōu)先級的應(yīng)用程序外,不分配任何權(quán)重給任意應(yīng)用程序。例如,一個算法可以將VM內(nèi)正在被監(jiān)控的發(fā)生故障的應(yīng)用程序的優(yōu)先級總和與VM內(nèi)正在被監(jiān)控的正確執(zhí)行的應(yīng)用程序優(yōu)先級總和進行比較。如果對應(yīng)于發(fā)生故障的應(yīng)用程序總和更大,決策代理可以決定停止發(fā)送心跳。相似地,如果對應(yīng)于正確執(zhí)行的應(yīng)用程序總和更大,決策代理可以決定繼續(xù)發(fā)送心跳。如果總和相等,在一個實施方案中,決策代理可以決定停止發(fā)送心跳。另一個算法可以將正確執(zhí)行和有意脫機的應(yīng)用程序的優(yōu)先級總和與發(fā)生故障的應(yīng)用程序優(yōu)先級總和進行比較。如果前者的總和更大,決策代理將使監(jiān)控代理繼續(xù)發(fā)送心跳。如果后者總和更大,決策代理將阻止心跳的發(fā)送。通過將多個應(yīng)用程序的狀態(tài)壓縮到一個單一心跳通信信道,決策代理可以有效地在一個單一通信信道上將多個應(yīng)用程序狀態(tài)多路復(fù)用到一個單一心跳信息。0} 這允許系統(tǒng)基于配置的優(yōu)先級提供多個應(yīng)用程序的高可用性,盡管只有一個單一心跳通信信道。在以上實例中,如果應(yīng)用程序發(fā)生故障,標準的響應(yīng)是停止發(fā)送心跳信息,從而使VM (其中發(fā)生故障的應(yīng)用程序執(zhí)行)重啟。在另一個實施方案中,代替自動使包含故障應(yīng)用程序的VM重啟的是,決策代理相反可以首先決定監(jiān)控代理應(yīng)該嘗試重啟故障應(yīng)用程序。決策代理可以被配置(例如,管理員通過接口輸入信息)為具有最大數(shù)量的重試,以便允許在決策代理決定VM應(yīng)該重啟之前可以控制這種決定到達故障應(yīng)用程序的次數(shù)。為了給應(yīng)用程序重新啟動的時間,在監(jiān)控代理嘗試重新啟動應(yīng)用程序的同時,決策代理可以指示監(jiān)控代理向虛擬化控制器注銷。如上所提及,用于控制每個決策代理的不同信息可以由管理員通過接口輸入信息進行配置。這些信息在VM之間和應(yīng)用程序之間可以不同。因此,在一個VM中,管理員可以選擇使應(yīng)用程序A比分配到另一個VM中的應(yīng)用程序A的實例具有更高的優(yōu)先權(quán)。圖2展示了虛擬化系統(tǒng)的另一個例子。該實例說明了監(jiān)控代理和決策代理的功能可以如何分離,這樣決策代理在不同于監(jiān)控代理的計算裝置上執(zhí)行。此外,該實例說明了在監(jiān)控代理和決策代理之間不需要一一對應(yīng)的關(guān)系。在圖2的實例中,服務(wù)器70以及主機10⑴和10⑵以類似于圖1所示的方式進行配置。然而,在每個VM內(nèi)執(zhí)行的不是一個獨立的決策代理,而是一個單獨的決策代理60在計算裝置90上執(zhí)行,該裝置與主機10 (I)和10(2)相連接以進行通信。在此實例中,每個監(jiān)控代理50 (I) -50 (4)被配置用于將監(jiān)控代理產(chǎn)生的信息發(fā)送到單一的決策代理60,然后決策代理利用類似上述的技術(shù)處理該信息并產(chǎn)生決定。接著決策代理60將描述其決定的信息返回給合適的監(jiān)控代理。例如,響應(yīng)于監(jiān)控代理50 (3)接收到的指示該應(yīng)用程序40(4)(具有比應(yīng)用程序40 (3)更高的優(yōu)先級)發(fā)生故障的信息,決策代理60可以決定監(jiān)控代理50(3)應(yīng)該停止向虛擬化控制器70發(fā)送心跳信息。響應(yīng)于接收到的識別該決定的信息,監(jiān)控代理50(3)將終止向虛擬化控制器80發(fā)送心跳信息,這將繼而使虛擬化控制器80重啟不同主機(例如,主機10(1))上的VM30 (3)。如圖1所示的實例,管理員可以將決策代理60配置為在每個VM上不同的優(yōu)先級用于不同應(yīng)用程序。管理員可以為每個應(yīng)用程序和每個VM提供不同的信息。決策代理可以選擇使用哪個優(yōu)先級和其他信息(例如,在決定對故障應(yīng)用程序在其中執(zhí)行的VM進行故障轉(zhuǎn)移之前,嘗試重啟應(yīng)用程序的次數(shù))來處理從監(jiān)控代理接收的一組給定信息(基于哪個監(jiān)控代理發(fā)送了該信息)。因此,響應(yīng)于從監(jiān)控代理50 (I)接收信息,決策代理60可以選擇使用與VM30(1)相關(guān)的信息以處理接收的信息。圖3展示了一種在虛擬環(huán)境中提供高可用性應(yīng)用程序的方法。該方法可以通過結(jié)合決策代理操作的監(jiān)控代理來實現(xiàn)。如上圖所示,這些組件可以或不可以在與彼此相同的計算裝置上執(zhí)行。當在虛擬機內(nèi)執(zhí)行的監(jiān)控代理檢測到在該虛擬機內(nèi)執(zhí)行的應(yīng)用程序狀態(tài)時,該方法開始,以300示出。操作300的執(zhí)行可可以包括監(jiān)控另一個服務(wù)組(包括被監(jiān)控的應(yīng)用程序)的狀態(tài)的監(jiān)控服務(wù)組代理。描述操作300的結(jié)果的信息可以從監(jiān)控代理發(fā)送至決策代理,決策代理可以或可以不與監(jiān)控代理相集成。如果被監(jiān)控的應(yīng)用程序正確執(zhí)行,如在305所確定的,可以針對是否當前注冊了監(jiān)控代理以向監(jiān)控虛擬機的虛擬化控制器提供心跳信息而做出決定,以310示出。操作305和310可以通過決策代理來實現(xiàn),決策代理處理由監(jiān)控代理產(chǎn)生的信息。如果當前并未注冊監(jiān)控代理目來提供心跳信息,監(jiān)控代理將注冊以提供心跳信息,以315示出,然后在當前周期發(fā)送心跳。如果當前注冊了監(jiān)控代理以提供心跳,監(jiān)控代理將當前周期的心跳信息發(fā)送至虛擬化控制器,以320示出。操作315和320的執(zhí)行可以包括決策代理決定采取的動作并將該動作傳輸給監(jiān)控代理,然后監(jiān)控代理采取決策代理所選擇的動作。如果應(yīng)用程序未正確執(zhí)行,可以針對是否應(yīng)用程序發(fā)生故障或已經(jīng)有意脫機來做出決定,以325示出。操作325的執(zhí)行包括監(jiān)控代理檢測應(yīng)用程序的狀態(tài)(例如,在應(yīng)用程序已經(jīng)有意脫機的情況下利用管理員輸入的信息)以及決策代理處理該信息。如果應(yīng)用程序發(fā)生故障,監(jiān)控代理將注冊以提供心跳(如果尚未注冊的話),以340和345示出。那么監(jiān)控代理將不向虛擬化控制器發(fā)送心跳信息,以330示出。相反,如果應(yīng)用程序已經(jīng)有意脫機,監(jiān)控代理將注銷發(fā)送心跳信息給虛擬化控制器,以335示出。操作330和335的執(zhí)行包括決策代理決定采取的動作并將該決定傳遞給監(jiān)控代理,然后監(jiān)控代理采取決策代理所選擇的動作。圖3的方法(以及以下描述的圖4的方法同樣)可以每一次心跳周期重復(fù)一次。因此,例如在一個周期,可以檢測到應(yīng)用程序正在正常運行,而在下個周期,可以檢測到相同的應(yīng)用程序已經(jīng)有意脫機了。作為響應(yīng),監(jiān)控代理可以注銷。此后的幾個周期,可以再次檢測到應(yīng)用程序在線并且監(jiān)控代理可以注冊以再次提供心跳。此后一段時間,監(jiān)控代理可以檢測應(yīng)用程序發(fā)生故障,并且監(jiān)控代理可以通過停止發(fā)送心跳使應(yīng)用程序重啟(通過使應(yīng)用程序在其中執(zhí)行的虛擬機重新啟動)。圖4是一種在虛擬環(huán)境下提供多個應(yīng)用程序的高可用性的方法的實例。類似圖3的方法,該方法可以通過與決策代理相結(jié)合操作的監(jiān)控代理來實現(xiàn)。圖3所示的方法在400開始,此時監(jiān)控代理檢測在與檢測代理相同的虛擬機內(nèi)執(zhí)行的若干被監(jiān)控應(yīng)用程序中每一個的運行狀態(tài)(例如,正確執(zhí)行,故障,或有意脫機)。決策代理可以檢測那些被監(jiān)控應(yīng)用程序中每一個的優(yōu)先級(例如,通過訪問管理員輸入的配置信息)。在405,決策代理使用識別應(yīng)用程序的運行狀態(tài)的信息和優(yōu)先級來確定所希望的一個或多個應(yīng)用程序組是否正確執(zhí)行。決策代理可以使用上述算法之一做出該決定,或使用考慮了應(yīng)用程序優(yōu)先級的任何其他算法。如果所需的應(yīng)用程序正在執(zhí)行并且當前注冊了監(jiān)控代理以向虛擬化控制器提供用于虛擬機的心跳,決策代理決定監(jiān)控代理應(yīng)該發(fā)送當前周期的心跳信息,以420示出。如果監(jiān)控代理當前未注冊,監(jiān)控代理將注冊(415),然后發(fā)送心跳信息(420)。如果所需的應(yīng)用程序未正確執(zhí)行,決策代理確定(例如,通過尋找最高優(yōu)先級應(yīng)用程序的運行狀態(tài),通過比較發(fā)生故障和有意脫機的應(yīng)用程序的優(yōu)先級總和等)是否所需應(yīng)用程序發(fā)生故障或已經(jīng)有意脫機,以425示出。如果所需的應(yīng)用程序發(fā)生故障,監(jiān)控代理將注冊以提供心跳(如果未注冊的話),以440和445示出。決策代理可以使監(jiān)控代理不發(fā)送當前周期(430)的心跳信息,這將繼而導(dǎo)致虛擬化控制器重啟VM,在該VM中故障應(yīng)用程序在另一個主機被執(zhí)行重啟。相反如果所需的應(yīng)用程序已經(jīng)有意脫機,決策代理可以使監(jiān)控代理向虛擬化控制器注銷,以435示出。圖5是能夠?qū)崿F(xiàn)如上所述的監(jiān)控代理和/或決策代理的計算系統(tǒng)510的框圖。計算系統(tǒng)510廣義上代表能夠執(zhí)行計算機可讀指令的任何單處理器或多處理器的計算裝置或系統(tǒng)。計算系統(tǒng)510的實例包括(但不限于)各種裝置中的任意一個或多個,這些裝置包括工作站、個人計算機、膝上型計算機、客戶端側(cè)終端、服務(wù)器、分布式計算系統(tǒng)、手持式裝置(例如,個人數(shù)字助理以及移動電話)、網(wǎng)絡(luò)設(shè)備、存儲控制器(例如,陣列控制器、磁帶驅(qū)動控制器、或硬盤驅(qū)動控制器)等。在其最基本的配置中,計算系統(tǒng)510可以包括至少一個處理器514和一個系統(tǒng)內(nèi)存516。通過執(zhí)行實現(xiàn)監(jiān)控代理和/或決策代理的軟件,計算系統(tǒng)510成為一個專用計算裝置,該裝置被配置為在虛擬環(huán)境中提供一個或多個應(yīng)用程序的高可用性。處理器514總體上代表能夠處理數(shù)據(jù)或解釋并執(zhí)行多個指令的任何類型或形式的處理單元。在某些實施方案中,處理器514可以從一個軟件應(yīng)用程序或模塊中接收指令。這些指令可以使處理器514執(zhí)行在此所說明和/或展示的這些示例性實施方案中的一個或多個的功能。例如,處理器514可以執(zhí)行和/或作為一種手段用于執(zhí)行此處所描述的操作。處理器514還可以執(zhí)行和/或作為一種手段來執(zhí)行在此說明和/或展示的任何其他操作、方法、或過程。系統(tǒng)內(nèi)存516總體上代表能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任何類型或形式的易失性或非易失性存儲裝置或媒質(zhì)。系統(tǒng)內(nèi)存516的多個實例包括(但不限于)隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃存、或任何其他適當?shù)拇鎯ρb置。盡管未作要求,在某些實施方案中計算系統(tǒng)510可以既包括一個易失性內(nèi)存單元(例如像系統(tǒng)內(nèi)存516)又包括一個非易失性存儲裝置(例如像以下詳細說明的主存儲裝置532)。在一個實例中,監(jiān)控代理50中的一個或多個(例如,圖5和2的監(jiān)控代理50(1)-50(4)中的一個)或決策代理60 (例如,圖1的決策代理60(1)-60(4)中的一個或圖2的決策代理60)可以被加載到系統(tǒng)內(nèi)存516中。在某些實施方案中,除了處理器514和系統(tǒng)內(nèi)存516外,計算系統(tǒng)510還可以包括一個或多個組件或元件。例如,如圖5所示,計算系統(tǒng)510可以包括內(nèi)存控制器518、輸入/輸出(I/O)控制器520、以及通信接口 522,它們中的每一個可以通過通信基礎(chǔ)設(shè)施512相互連接。通信基礎(chǔ)設(shè)施512總體上代表能夠幫助在計算裝置的一個或多個組件之間進行通信的任意類型或形式的基礎(chǔ)設(shè)施。通信基礎(chǔ)設(shè)施512的實例包括但不限于通信總線(例如工業(yè)標準體系結(jié)構(gòu)(ISA)、外圍組件互聯(lián)(PCI)、第三代總線標準(PCIe)、或類似總線)和一個網(wǎng)絡(luò)。內(nèi)存控制器518總體上代表在計算系統(tǒng)510的一個或多個組件之間操作內(nèi)存或數(shù)據(jù)或者控制通信的任意類型或形式的裝置。例如,在某些實施方案中,內(nèi)存控制器518可以通過通信基礎(chǔ)設(shè)施512控制處理器514、系統(tǒng)內(nèi)存516以及I/O控制器520之間的通信。在某些實施方案中,內(nèi)存控制器518可以獨立地或與其他元件相結(jié)合地執(zhí)行和/或作為一種手段執(zhí)行在此描述和/或展示的多個步驟或特征中的一個或多個。I/O控制器520總體上代表能夠協(xié)調(diào)和/或控制一種計算裝置的輸入和輸出功能的任何類型或形式的模塊。例如,在一些實施方案中I/o控制器520可以控制或協(xié)助在計算系統(tǒng)510的一個或多個元件(如處理器514、系統(tǒng)內(nèi)存516、通信接口 522、顯示適配器526、輸入接口 530、以及存儲接口 534)之間的數(shù)據(jù)傳送。通信接口 522廣義地代表能夠協(xié)助計算系統(tǒng)510與一個或多個附加裝置之間進行通信的任何類型或形式的通信裝置或適配器。例如,在某些實施方案中,通信接口 522可以協(xié)助計算系統(tǒng)510與包括多個附加的計算系統(tǒng)的私人或公共網(wǎng)絡(luò)之間的通信。通信接口522的實例包括而不限于有線網(wǎng)絡(luò)接口(例如網(wǎng)絡(luò)接口卡)、無線網(wǎng)絡(luò)接口(例如無線網(wǎng)絡(luò)接口卡)、調(diào)制解調(diào)器、以及任何其他適當?shù)慕涌?。在至少一個實施方案中,通信接口 522可通過到網(wǎng)絡(luò)(如互聯(lián)網(wǎng))的直接鏈接來提供到一臺遠程服務(wù)器的直接連接。通信接口 522還可以間接地提供這種連接,例如通過局域網(wǎng)(如以太網(wǎng))、個人局域網(wǎng)、電話或纜線網(wǎng)、蜂窩電話連接、衛(wèi)星數(shù)據(jù)連接、或任何其他適當?shù)倪B接。在某些實施方案中,通信接口 522還可以代表一種主機適配器,該主機適配器被配置為用于通過一條外部總線或通信信道協(xié)助計算系統(tǒng)510與一個或多個附加網(wǎng)絡(luò)或存儲裝置之間的通信。主機適配器的實例包括,但不限于,小型計算機系統(tǒng)接口(SCSI)主機適配器、通用串行總線(USB)主機設(shè)配器、電氣和電子工程學(xué)會(IEEE) 1394主機適配器、串行高級技術(shù)附件(SATA)和外部SATA (eSATA)主機適配器、高級技術(shù)附件(ATA)和并行ATA(PATA)主機適配器、光纖通道接口適配器、以太網(wǎng)適配器等。通信接口 522還可以允許計算系統(tǒng)510參與分布式計算或遠程計算。例如,通信接口 522可以從一個遠程裝置接收指令或向一個遠程裝置發(fā)送指令用于執(zhí)行。如圖5所示,計算系統(tǒng)510還可以包括通過顯示適配器526連接至通信基礎(chǔ)設(shè)施512的至少一個顯示裝置524。顯示裝置524總體上代表能夠可視地呈現(xiàn)顯示適配器526所轉(zhuǎn)發(fā)的顯示信息的任意類型或形式的裝置。相似地,顯示適配器526總體上代表任意類型或形式的裝置,這些裝置被配置用于從通信基礎(chǔ)設(shè)施512 (或從本領(lǐng)域已知的幀緩沖器)轉(zhuǎn)發(fā)圖形、文本以及其他數(shù)據(jù)以便顯示在顯示裝置524上。如圖5所示,計算系統(tǒng)510還可以包括通過輸入接口 530連接至通信基礎(chǔ)設(shè)施512的至少一個輸入裝置528。輸入裝置528總體上代表能夠向示例性計算系統(tǒng)510提供由計算機或人員生成的輸入的任意類型或形式的輸入裝置。輸入裝置528的實例包括但不限于鍵盤、定位裝置、語音識別裝置或任意其他輸入裝置。如圖5所示,計算系統(tǒng)510還包括通過存儲接口 534連接至通信基礎(chǔ)設(shè)施512的一個主存儲裝置532和一個備份存儲裝置533。存儲裝置532和533總體上代表能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任意類型或形式的存儲裝置或介質(zhì)。例如,存儲裝置532與533可以是磁盤驅(qū)動器(例如,所謂的硬盤驅(qū)動器)、軟盤驅(qū)動器、磁帶驅(qū)動器、光盤驅(qū)動器、閃存驅(qū)動器、或者類似裝置。存儲接口 534總體上代表用于在存儲裝置532和533和計算裝置510的其他組件之間傳輸數(shù)據(jù)的任意類型或形式的接口或裝置。類似于主存儲裝置532的存儲裝置可以存儲信息,如配置信息590 (例如,如上文所述,配置信息表示應(yīng)用程序的優(yōu)先級和每個應(yīng)用程序重新嘗試的次數(shù))。在某些實施方案中,存儲裝置532和533可以被配置為用于讀取自和/或?qū)懭氲揭粋€可移動存儲單元,該可移動存儲單元被配置為用于存儲計算機軟件、數(shù)據(jù)、或其他計算機可讀信息。適合的可移動存儲單元的實例包括但不限于軟盤、磁帶、光盤、閃存裝置等等。存儲裝置532和533還可以包括其他類似的結(jié)構(gòu)或裝置,以允許計算機軟件、數(shù)據(jù)或其他計算機可讀指令下載到計算系統(tǒng)510中。例如,存儲裝置532和533可以被配置用于讀或?qū)戃浖?shù)據(jù)或其他計算機可讀信息。存儲裝置532和533還可以作為計算系統(tǒng)510的一部分或可以是通過其他接口系統(tǒng)訪問的一個分離的裝置。很多其他裝置或子系統(tǒng)可以連接至計算系統(tǒng)510上。相反地,為了實施在此描述和/展示的實施方案,不需要圖5中所示的所有組件和裝置。以上提到的這些裝置和子系統(tǒng)還能夠以不同于圖5中所示的方式進行相互連接。計算系統(tǒng)510還可使用任何數(shù)目的軟件、固件、和/或硬件的配置。例如,在此披露的示例性實施方案中的一個或多個可以被編碼為一種計算機可讀媒質(zhì)上的計算機程序(也稱為計算機軟件、軟件應(yīng)用程序、計算機可讀指令、或計算機控制邏輯)。計算機可讀存儲介質(zhì)的實例包括磁存儲介質(zhì)(例如硬盤驅(qū)動器和軟盤)、光存儲介質(zhì)(例如,⑶或DVD-ROM)、電存儲介質(zhì)(例如,固態(tài)驅(qū)動器和閃存)等。此類計算程序也可以通過網(wǎng)絡(luò)(例如因特網(wǎng)或載體介質(zhì))傳輸?shù)接嬎阆到y(tǒng)510以存儲在內(nèi)存中。包含計算機程序的計算機可讀媒質(zhì)可以載入到計算系統(tǒng)510中。存儲在計算機可讀媒質(zhì)上的所有或部分計算機程序然后可以存儲在系統(tǒng)內(nèi)存516和/或存儲裝置532和533的不同部分上。當由處理器514執(zhí)行時,載入到計算系統(tǒng)510中的計算機程序可以使處理器514執(zhí)行和/或作為一種手段執(zhí)行在此描述和/或展示的示例性實施方案中的一個或多個的功能。另外或可替代地,在此所說明和/或展示的示例性實施方案中的一個或多個可以在固件和/或硬件中實施。例如,可以將計算系統(tǒng)510配置為一種專用集成電路(ASIC),該電路被適配為用于實施在此所披露的這些示例性實施方案中的一個或多個。圖6是網(wǎng)絡(luò)體系結(jié)構(gòu)600的框圖,在該網(wǎng)絡(luò)體系結(jié)構(gòu)中客戶端系統(tǒng)610、620和630以及服務(wù)器640和645可以連接至網(wǎng)絡(luò)650??蛻舳讼到y(tǒng)610、620和630總體上代表任意類型或形式的計算裝置或系統(tǒng),例如圖5中的計算系統(tǒng)510。類似地,服務(wù)器640和645總體上代表被配置為用于提供不同的數(shù)據(jù)庫服務(wù)和/或運行某種軟件應(yīng)用程序的計算裝置或系統(tǒng),如應(yīng)用程序服務(wù)器或數(shù)據(jù)庫服務(wù)器。網(wǎng)絡(luò)650總體上代表任何電信或計算機網(wǎng)絡(luò),例如包括:內(nèi)部網(wǎng)、廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、個人區(qū)域網(wǎng)(PAN)、或互聯(lián)網(wǎng)。在一個實例中,客戶端系統(tǒng)610、620和/或630和/或服務(wù)器640和/或645可以包括如圖1和2所示的監(jiān)控代理和/或決策代理。如圖6所示,一個或多個存儲裝置660(1)-(N)可以直接附接至服務(wù)器640。類似地,一個或多個存儲裝置670 (I)-(N)可以直接附接至服務(wù)器645。存儲裝置660 (I) - (N)和存儲裝置670 (I)-(N)總體上代表能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任意類型或形式的存儲裝置或媒質(zhì)。在某些實施方案中,存儲裝置660 (I)-(N)和存儲裝置670 (I)-(N)可以代表網(wǎng)絡(luò)附聯(lián)存儲(NAS)裝置,這些裝置被配置為利用不同協(xié)議(例如網(wǎng)絡(luò)文件系統(tǒng)(NFS)、服務(wù)器消息塊(SMB)、或公共互聯(lián)網(wǎng)文件系統(tǒng)(CIFS))與服務(wù)器640和645進行通信。服務(wù)器640和645還可以連接至存儲區(qū)域網(wǎng)絡(luò)(SAN)結(jié)構(gòu)680。SAN結(jié)構(gòu)680總體上代表能夠協(xié)助多個存儲裝置之間通信的任意類型或形式的計算機網(wǎng)絡(luò)或體系結(jié)構(gòu)。SAN結(jié)構(gòu)680可以協(xié)助服務(wù)器640和645與多個存儲裝置690 (I)-(N)和/或智能存儲器陣列695之間的通信。SAN結(jié)構(gòu)680還可以通過網(wǎng)絡(luò)650和服務(wù)器640和645協(xié)助客戶端系統(tǒng)610,620和630與存儲裝置690 (I)-(N)和/或智能存儲器陣列695之間的通信,其方式為裝置690 (I)-(N)以及陣列695對客戶端系統(tǒng)610、620和630呈現(xiàn)為本地附接的裝置。與存儲裝置660 (I)-(N)和存儲裝置670 (I)-(N) —樣,存儲裝置690 (I) - (N)和存儲陣列695總體上代表能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任意類型或形式的存儲裝置或媒質(zhì)。在某些實施方案中,參考圖5的計算系統(tǒng)510,通信接口(例如圖5中的通信接口522)可以用來在每個客戶端系統(tǒng)610、620和630以及網(wǎng)絡(luò)650之間提供連接。客戶端系統(tǒng)610、620和630能夠利用例如網(wǎng)絡(luò)瀏覽器或其他客戶端軟件訪問服務(wù)器640或645的信息。這種軟件可以允許客戶端系統(tǒng)610、620和630訪問由服務(wù)器640、服務(wù)器645、存儲裝置660 (I) - (N)、存儲裝置670 (I) - (N)、存儲裝置690 (I) - (N)或智能存儲器陣列695管理的數(shù)據(jù)。盡管圖6描繪了使用網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))來交換數(shù)據(jù),但在此描述和/或展示的實施方案不限于互聯(lián)網(wǎng)或任意具體的基于網(wǎng)絡(luò)的環(huán)境。在至少一個實施方案中,在此披露的示例性實施方案中的一個或多個的全部或一部分可被編碼為一種計算機程序并且由服務(wù)器640、服務(wù)器645、存儲裝置660 (I)-(N)、存儲裝置670 (I)-(N)、存儲裝置690 (I)-(N)、智能存儲陣列695、或它們中的任意組合加載并執(zhí)行。在此披露的不例性實施方案中的一個或多個的全部或一部分還可以被編碼成為一種計算機程序,它存儲在服務(wù)器640中、由服務(wù)器645來運行、并在網(wǎng)絡(luò)650上分發(fā)給客戶端系統(tǒng) 610、620、和 630。在一些實例中,圖1中示例性系統(tǒng)100的全部或一部分可以代表云計算的或基于網(wǎng)絡(luò)的環(huán)境的多個部分。云計算環(huán)境可以通過互聯(lián)網(wǎng)提供各種服務(wù)和應(yīng)用程序。這些基于云的服務(wù)(例如,軟件即服務(wù)、平臺即服務(wù)、基礎(chǔ)設(shè)施即服務(wù)等)可以通過網(wǎng)絡(luò)瀏覽器或其他的遠程接口進行訪問。在此所述的不同功能可以通過遠程桌面環(huán)境或任何其他的基于云的計算環(huán)境來提供。另外,在此所述的這些模塊中的一個或多個可以將數(shù)據(jù)、物理裝置、和/或物理裝置的表示從一種形式轉(zhuǎn)換到另一種形式。例如,結(jié)合監(jiān)控代理進行操作的決策代理可以通過控制心跳信息的傳輸來改變虛擬化系統(tǒng)的配置,方式為使虛擬機在另一臺主機上重新啟動。盡管已經(jīng)結(jié)合一些實施方案描述了本發(fā)明,但無意將本發(fā)明限制于本文闡述的具體形式。相反的是,本發(fā)明意在涵蓋可以合理地包含在所附權(quán)利要求定義的本發(fā)明范圍內(nèi)的這些替代形式、修改形式以及等效形式。工業(yè)話用件本發(fā)明適用于計算裝置和網(wǎng)絡(luò)計算裝置領(lǐng)域。
      權(quán)利要求
      1.一種方法,包括: 從在一個虛擬機中執(zhí)行的一個監(jiān)控代理接收指示在該虛擬機中執(zhí)行的一個應(yīng)用程序的狀態(tài)的信息; 響應(yīng)于該接收,確定是否應(yīng)該重啟該虛擬機;并且 基于確定是否應(yīng)該重啟該虛擬機,確定該監(jiān)控代理是否應(yīng)該在一個超時間隔到期之前向一個虛擬化控制器發(fā)出一條心跳信息,其中該虛擬化控制器被配置為如果該虛擬機在該超時間隔到期之前沒有發(fā)出該心跳信息就重啟該虛擬機,并且其中確定是否發(fā)出該心跳信息由一個計算裝置執(zhí)行。
      2.根據(jù)權(quán)利要求1所述方法,其中該信息識別在該虛擬機中執(zhí)行的多個應(yīng)用程序中的每一個應(yīng)用程序的運行狀態(tài),并且其中該確定是基于該多個應(yīng)用程序中的每一個應(yīng)用程序的運行狀態(tài)和優(yōu)先級。
      3.根據(jù)權(quán)利要求2所述方法,進一步包括響應(yīng)于識別出該多個應(yīng)用程序中一個較高優(yōu)先級的應(yīng)用程序正確執(zhí)行并且該多個應(yīng)用程序中一個較低優(yōu)先級的應(yīng)用程序發(fā)生故障的信息,確定不應(yīng)該重啟該虛擬機。
      4.根據(jù)權(quán)利要求2所述方法,進一步包括響應(yīng)于識別出該多個應(yīng)用程序中一個較高優(yōu)先級的應(yīng)用程序發(fā)生故障并且該多個應(yīng)用程序中一個較低優(yōu)先級的應(yīng)用程序正確執(zhí)行的信息,確定應(yīng)該重啟該虛擬機。
      5.根據(jù)權(quán)利要求2所述方法,其中該確定過程由一個決策代理執(zhí)行,其中該決策代理不在該虛擬機中執(zhí)行。
      6.根據(jù)權(quán)利要求 5所述方法,進一步包括響應(yīng)于識別出該應(yīng)用程序未正確運行的信息,決定該監(jiān)控代理應(yīng)該嘗試重啟該應(yīng)用程序,其中嘗試重啟該應(yīng)用程序在確定是否應(yīng)該重啟該虛擬機之前執(zhí)行。
      7.根據(jù)權(quán)利要求6所述的方法,進一步包括響應(yīng)于識別出該應(yīng)用程序已經(jīng)有意脫機的信息,決定注銷該監(jiān)控代理以避免向該虛擬化控制器提供心跳信息。
      8.根據(jù)權(quán)利要求7所述方法,進一步包括在該監(jiān)控代理注銷后,該監(jiān)控代理繼續(xù)監(jiān)控該應(yīng)用程序。
      9.根據(jù)權(quán)利要求7所述的方法,進一步包括響應(yīng)于識別出該應(yīng)用程序重新在線的消息,重新注冊該監(jiān)控代理以便向該虛擬化控制器提供心跳信息。
      10.根據(jù)權(quán)利要求1所述方法,進一步包括從一個管理員接收信息,其中該信息指示該應(yīng)用程序是否已經(jīng)有意脫機和該監(jiān)控代理是否應(yīng)該繼續(xù)監(jiān)控該應(yīng)用程序中的至少一項。
      11.一種系統(tǒng),包括: 一個或多個處理器;以及 存儲器,該存儲器連接至該一個或多個處理器并存儲可由該一個或多個處理器執(zhí)行的程序指令,以便: 從在一個虛擬機中執(zhí)行的一個監(jiān)控代理接收指示在該虛擬機中執(zhí)行的一個應(yīng)用程序的狀態(tài)的信息; 響應(yīng)于接收到該信息,確定是否應(yīng)該重啟該虛擬機;并且 基于確定是否應(yīng)該重啟該虛擬機,確定該監(jiān)控代理是否應(yīng)該在一個超時間隔到期之前向一個虛擬化控制器發(fā)出一條心跳信息,其中該虛擬化控制器被配置為如果該虛擬機在該超時間隔到期之前沒有發(fā)出該心跳信息就重啟該虛擬機。
      12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中該信息識別在該虛擬機中執(zhí)行的多個應(yīng)用程序中的每一個應(yīng)用程序的運行狀態(tài),并且其中該確定是基于該多個應(yīng)用程序中的每一個應(yīng)用程序的運行狀態(tài)和優(yōu)先級。
      13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中該程序指令進一步可由該一個或多個處理器執(zhí)行,以便響應(yīng)于識別出該多個應(yīng)用程序中一個較高優(yōu)先級的應(yīng)用程序正確執(zhí)行并且該多個應(yīng)用程序中一個較低優(yōu)先級的應(yīng)用程序發(fā)生故障的信息,確定不應(yīng)該重啟該虛擬機。
      14.根據(jù)權(quán)利要求12所述的系統(tǒng),其中該程序指令進一步可由該一個或多個處理器執(zhí)行,以便響應(yīng)于識別出該多個應(yīng)用程序中一個較高優(yōu)先級的應(yīng)用程序發(fā)生故障并且該多個應(yīng)用程序中一個較低優(yōu)先級的應(yīng)用程序正確執(zhí)行的信息,確定應(yīng)該重啟該虛擬機。
      15.根據(jù)權(quán)利要求12所述的系統(tǒng),程序指令實施一個決策代理,并且其中該決策代理不在該虛擬機中執(zhí)行。
      16.根據(jù)權(quán)利要求11所述的系統(tǒng),其中該程序指令進一步可由該一個或多個處理器執(zhí)行,以便響應(yīng)于識別出該應(yīng)用程序已經(jīng)有意脫機的信息,決定注銷該監(jiān)控代理以避免向該虛擬化控制器提供心跳信息。
      17.一種計算機可讀存儲介質(zhì),包括由一個或多個處理器可執(zhí)行的程序指令以便: 從在一個虛擬機中執(zhí)行的一個監(jiān)控代理接收指示在該虛擬機中執(zhí)行的一個應(yīng)用程序的狀態(tài)的信息; 響應(yīng)于接收到該信息,確定是否應(yīng)該重啟該虛擬機;并且 基于確定是否應(yīng)該重啟該虛擬機,確定該監(jiān)控代理是否應(yīng)該在一個超時間隔到期之前向一個虛擬化控制器發(fā)出一條心跳`信息,其中該虛擬化控制器被配置為如果該虛擬機在該超時間隔到期之前沒有發(fā)出該心跳信息就重啟該虛擬機。
      18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中該信息識別在該虛擬機中執(zhí)行的多個應(yīng)用程序中的每一個應(yīng)用程序的運行狀態(tài),并且其中該確定是基于該多個應(yīng)用程序中的每一個應(yīng)用程序的運行狀態(tài)和優(yōu)先級。
      19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中該程序指令進一步可由該一個或多個處理器執(zhí)行,以便響應(yīng)于識別出該多個應(yīng)用程序中一個較高優(yōu)先級的應(yīng)用程序正確執(zhí)行并且該多個應(yīng)用程序中一個較低優(yōu)先級的應(yīng)用程序發(fā)生故障的信息,確定不應(yīng)該重啟該虛擬機。
      20.根據(jù)權(quán)利要求18所述的系統(tǒng),其中該程序指令進一步可由該一個或多個處理器執(zhí)行,以便響應(yīng)于識別出該多個應(yīng)用程序中一個較高優(yōu)先級的應(yīng)用程序發(fā)生故障并且該多個應(yīng)用程序中一個較低優(yōu)先級的應(yīng)用程序正確執(zhí)行的信息,確定應(yīng)該重啟該虛擬機。
      21.根據(jù)權(quán)利要求18所述的系統(tǒng),程序指令實施一個決策代理,并且其中該決策代理不在該虛擬機中執(zhí)行。
      22.根據(jù)權(quán)利要求17所述的系統(tǒng),其中該程序指令進一步可由該一個或多個處理器執(zhí)行,以便響應(yīng)于識別出該應(yīng)用程序已經(jīng)有意脫機的信息,決定注銷該監(jiān)控代理以避免向該虛擬化控制器提供心跳信息。
      全文摘要
      不同的系統(tǒng)和方法可以提供在高可用性虛擬機環(huán)境下執(zhí)行的應(yīng)用程序的高可用性。一種方法包括從在虛擬機中執(zhí)行的監(jiān)控代理接收指示該虛擬機中執(zhí)行的應(yīng)用程序的狀態(tài)的信息。響應(yīng)于接收到該信息,該方法涉及確定是否應(yīng)該重啟該虛擬機。根據(jù)該確定,該方法然后確定監(jiān)控代理是否應(yīng)該在超時間隔到期之前向虛擬化控制器發(fā)出心跳信息。如果該虛擬機在超時間隔到期之前沒有發(fā)出心跳信息,配置該虛擬化控制器以重新啟動虛擬機。
      文檔編號G06F11/07GK103201724SQ201180035090
      公開日2013年7月10日 申請日期2011年7月29日 優(yōu)先權(quán)日2010年7月30日
      發(fā)明者喬格·羅希特·維賈伊, 薩林·蘇米特·曼莫漢 申請人:賽門鐵克公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1