跨群集邊界的服務(wù)遷移的制作方法
【專利說明】跨群集邊界的服務(wù)遷移
[0001]
[0002]大規(guī)模數(shù)據(jù)中心一般包括運行標準軟件包的集合的硬件機器的有組織群集,諸如web服務(wù)器、數(shù)據(jù)庫服務(wù)器等等。出于容錯和管理原因,數(shù)據(jù)中心中的機器一般被分成多個群集,所述多個群集獨立地由協(xié)調(diào)各軟件應(yīng)用的各資源的一框架監(jiān)控和管理。在一實施例中,框架可以是例如供應(yīng)、支持、監(jiān)控和命令構(gòu)成數(shù)據(jù)中心的各虛擬機(VM)和物理服務(wù)器的Windows Azure?結(jié)構(gòu)控制器。
[0003]在現(xiàn)有的數(shù)據(jù)中心中,每個承租者在其整個生命周期被部署至單個群集,允許承租者的部署被單個框架管理。然而,該配置可以限制承租者的成長,因為擴展被限制于該單個群集內(nèi)的機器。承租者和群集間的緊密耦合要求數(shù)據(jù)中心操作者將群集的容量維持在一級別,該級別將滿足部署在該群集上的承租者的潛在的將來要求。通常,這導(dǎo)致群集在預(yù)期可能的將來需求時以低電流利用率進行操作。即使多余容量被維持時,這僅僅改進了承租者的將來需求將被支持的可能性。不保證承租者規(guī)模請求將被限制于已保留的容量并且,因此,有時承租者可能不能獲得所需的容量。
[0004]將服務(wù)限制于一個群集也為該服務(wù)創(chuàng)建單個故障點。如果控制該群集的框架發(fā)生故障,則整個群集將發(fā)生故障,并且該群集上所支持的所有服務(wù)都將不可用。
[0005]概述
[0006]提供本概述是為了以精簡的形式介紹將在以下詳細描述中進一步描述的一些概念。本概述并不旨在標識所要求保護主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。
[0007]本發(fā)明的各實施例允許承租者的服務(wù)有停機時間或無停機時間地在多個群集間移動。服務(wù)與群集上的特定IP地址相關(guān)聯(lián)。用戶使用一域名接入服務(wù),該域名通過域名系統(tǒng)(DNS)或其他網(wǎng)絡(luò)位置服務(wù)轉(zhuǎn)換成IP地址。在服務(wù)在各群集間移動時,服務(wù)的IP地址可能改變或可能不改變。
[0008]服務(wù)可以通過以下步驟有停機時間地被迀移:在新群集中發(fā)起服務(wù)的新實例;等待該新實例準備就緒;然后停止原始實例;并將服務(wù)的DNS名稱指向與服務(wù)在新群集上的新部署相對應(yīng)的IP地址。
[0009]或者,服務(wù)可以有停機時間地被迀移至新群集,并且保留原始IP地址。這會避免在DNS高速緩存被重新填充的同時對DNS及相關(guān)延遲重新編程的需求。
[0010]迀移服務(wù)的進一步替代方案是通過以下步驟來無停機時間地執(zhí)行迀移:逐部分地移動服務(wù)使得服務(wù)在迀移過程期間總是在群集中的一者或兩者中運行。
[0011]附圖簡沐
[0012]為了進一步闡明本發(fā)明的各實施例的以上和其他優(yōu)點和特征,將參考附圖來呈現(xiàn)本發(fā)明的各實施例的更具體的描述??梢岳斫?,這些附圖只描繪本發(fā)明的典型實施例,因此將不被認為是對其范圍的限制。本發(fā)明將通過使用附圖用附加特征和細節(jié)來描述和解釋,附圖中:
[0013]圖1是圖示用于跨不同群集移動服務(wù)的承租者迀移器的框圖。
[0014]圖2圖示了具有服務(wù)停機時間且需要DNS重新編程的服務(wù)迀移。
[0015]圖3圖示了具有服務(wù)停機時間但保留服務(wù)的IP地址的服務(wù)迀移。
[0016]圖4圖示了消除服務(wù)停機時間并保留服務(wù)的IP地址的服務(wù)迀移。
[0017]圖5圖示了用于承租者迀移的適當?shù)挠嬎愫吐?lián)網(wǎng)環(huán)境的示例。
[0018]詳細描沐
[0019]圖1是圖示用于跨不同群集12、13移動服務(wù)的承租者迀移器11的框圖。承租者迀移器11連接至數(shù)據(jù)中心中的所有群集。一旦數(shù)據(jù)中心操作者決定在各群集間移動服務(wù),例如,為了平衡利用率或為了滿足承租者需求,承租者迀移器11就標識該服務(wù)的正確目的地群集。目的地群集的選擇可以基于各因素,諸如潛在目的地群集的利用、服務(wù)所作的當前需求等等。一旦標識了目的地群集,承租者迀移器11就通過在原始群集和新群集上創(chuàng)建/刪除VM 14、15上的實例來移動服務(wù)。
[0020]承租者迀移器11控制如操作者所選擇的那樣是有停機時間還是沒有停機時間地執(zhí)行迀移。如果新IP地址被指派給服務(wù)則承租者迀移器11可以請求對DNS記錄的更新,或者如果服務(wù)保持相同地址時則承租者迀移器11可以將IP地址移至新群集。服務(wù)存在性在迀移期間是互斥的。例如,當服務(wù)被迀移時,承租者迀移器11確保從顧客角度來看服務(wù)的兩個實例絕不會都在運行。
[0021]圖2圖示了根據(jù)一實施例的具有服務(wù)停機時間且需要DNS重新編程的服務(wù)迀移。承租者迀移器21已標識在群集22上運行的要被移至群集23的服務(wù)。舊服務(wù)被指派群集22上的一個舊IP地址。在步驟201中,承租者迀移器21標識并復(fù)制來自群集22的服務(wù)人工產(chǎn)物,諸如代碼、比特、證書、型號等。通過使用這些人工產(chǎn)物,在步驟202中在群集23上創(chuàng)建新服務(wù),但該服務(wù)未被啟動。
[0022]承租者迀移器21在步驟203中指示新群集23來發(fā)起新服務(wù)群集23在步驟204中選擇適當?shù)墓?jié)點并且設(shè)立VM來運行該服務(wù)。群集23上的新IP地址被指派給該新服務(wù)。群集23在此時不啟動該服務(wù)。承租者迀移器21在步驟206中等待該服務(wù)在新群集上被發(fā)起,這例如在步驟205中指示。
[0023]—旦新服務(wù)已被發(fā)起,承租者迀移器21就在步驟207中停止舊服務(wù),并接著在步驟208中啟動新服務(wù)。在步驟209中從群集22刪除舊服務(wù),這為該群集上運行的其他服務(wù)打開空間以擴展或被添加。
[0024]然后,承租者迀移器在步驟210中更新中央DNS記錄以使該服務(wù)的域名指向群集23上的適當?shù)男翴P地址。DNS記錄更新可以用步驟207和208同時執(zhí)行,而同時舊服務(wù)被停止且新服務(wù)被啟動。
[0025]在步驟207中停止舊服務(wù)和在步驟208中啟動新服務(wù)之間有一時間段服務(wù)將對于用戶不可用。此外,如果用戶使用域名來接入服務(wù),則在DNS記錄從服務(wù)的域名的舊IP地址被更新至新IP地址的同時,可能有附加延遲。由于DNS支持跨互聯(lián)網(wǎng)分布的許多本地高速緩存,因此需要時間來更新全部這些高速緩存。一旦中央DNS記錄被更新,則本地DNS高速緩存被清除并且用新IP地址來更新。在這些更新發(fā)生之前,用戶將被定向至舊群集22,該舊群集22不再運行服務(wù)并,因此,使用該服務(wù)的嘗試將失敗
[0026]圖3圖示了根據(jù)一實施例的具有服務(wù)停機時間但保留服務(wù)的IP地址的服務(wù)迀移。承租者迀移器31已標識在群集32上運行的要被移至群集33的服務(wù)。舊服務(wù)被指派群集32上的一個IP地址。在步驟301中,承租者迀移器31標識并復(fù)制來自群集32的服務(wù)人工產(chǎn)物,諸如代碼、比特、證書、型號等。通過使用這些人工產(chǎn)物,在步驟302中在群集33上創(chuàng)建新服務(wù),但該服務(wù)未被啟動。
[0027]承租者迀移器31在步驟303中指示新群集33來發(fā)起新服務(wù)。群集33在步驟304中選擇適當?shù)墓?jié)點并且設(shè)立VM來運行該服務(wù)。群集33在此時不啟動該服務(wù)。承租者迀移器31在步驟306中等待該服務(wù)在新群集上被發(fā)起,這例如在步驟305中指示。
[0028]一旦新服務(wù)已被發(fā)起,則承租者迀移器31在步驟307中停止舊服務(wù)。在步驟308中,服務(wù)的IP地址從群集32移除。
[0029]服務(wù)的IP地址在步驟309中被添加至群集33,并且群集33上的新服務(wù)在步驟310上被啟動。
[0030]最后,在步驟311中從群集32刪除舊服務(wù),這為該群集上運行的其他服務(wù)打開空間以擴展或被添加。
[0031]由于服務(wù)的IP地址尚未改變,因此承租者迀移器不需要如同圖2所示的過程中所需的那樣更新DNS記錄。因此,在步驟307中停止舊服務(wù)和在步驟310中啟動新服務(wù)之間有一時間段服務(wù)將對于用戶不可用。然而,一旦新服務(wù)被啟動,用戶可能仍使用域名接入該服務(wù),而不等待任何DNS記錄更新延遲。本地DNS高速緩存將是準確的,因為服務(wù)的域名將仍舊與服務(wù)的相同IP地址相關(guān)聯(lián)。
[0032]圖4圖示了根據(jù)一實施例的消除服務(wù)停機時間且保留服務(wù)的IP地址的服務(wù)迀移。承租者迀移器41已標識在群集42上運行的要被移至群集43的服務(wù)。舊服務(wù)被指派群集42上的一個舊IP地址。在步驟401中,承租者迀移器41標識并復(fù)制來自群集42的服務(wù)人工產(chǎn)物,諸如代碼、比特、證書、型號等。通過使用這些人工產(chǎn)物,在步驟402中在群集43上創(chuàng)建新服務(wù),但該服務(wù)未被啟動。
[0033]承租者迀移器41在步驟403中指示新群集43來發(fā)起新服務(wù)。群集43在步驟404中選擇適當?shù)墓?jié)點并且設(shè)立VM來運行該服務(wù)。同一 IP地址在群集42和群集43兩者上用于該服務(wù)。承租者迀移器41在步驟406中等待該服務(wù)在新群集上被發(fā)起,這例如在步驟405中指示。
[0034]一旦新服務(wù)已被發(fā)起,則承租者迀移器41在步驟407中停止舊服務(wù)的一部分。然后,承租者迀移器41在步驟408中啟動新服務(wù)的相應(yīng)部分。網(wǎng)絡(luò)也在步驟408中按需被更新以連接舊服務(wù)和新服務(wù)的已啟動部分以及負載平衡器及其他路由組件,以允許它們跨群集42、43指向已啟動的服務(wù)。不像圖2和3所示的過程,服務(wù)的僅僅一部分(例如,所選數(shù)量的VM或?qū)嵗?在步驟407中被停止且然后在步驟408中被啟動。承租者迀移器在步驟409中等待在新群集上被啟動的該部分準備就緒供使用。
[0035]一旦新部分在步驟409中準備就緒,則承租者迀移器對于服務(wù)的下一部分重復(fù)(步驟410)步驟407 - 409。這些步驟在循環(huán)410中繼續(xù),直到該服務(wù)的全部已經(jīng)零碎地從舊群集42移至新群集43。在一實施例中,在每次經(jīng)過循環(huán)410期間逐一地移動值得服務(wù)的一個更新域。承租者會準備好在對服務(wù)的升級期間丟失升級域,因此那些分段可用于分割該服務(wù)用于群集間的迀移。
[0036]在服務(wù)的所有部分已經(jīng)在循環(huán)410中被移動之后,在步驟411中從群集42刪除舊服務(wù)。
[0037]由于服務(wù)的IP地址尚未改變,因此承租者迀移器不需要如同圖2所示的過程中進行的那樣更新DNS記錄。不存在服務(wù)在兩個群集上均被停止的時間段。因此,服務(wù)將沒有停機時間而總是對于用戶可用。
[0038]圖5解說了其上可以實現(xiàn)圖1-4的示例的適當?shù)挠嬎愫吐?lián)網(wǎng)環(huán)境的示例。例如,承租者迀移器11和/SVM 14、15可以主