Azure管理虛擬機(jī)的高可用性
可用性可確保在Azure上部署的VM能夠跨多個(gè)隔離的硬件群集分布。這樣,就可以確保當(dāng)Azure中發(fā)生硬件或軟件故障時(shí),只有一部分VM受到影響,整體解決方案仍可使用和操作。
最佳實(shí)踐是同時(shí)使用可用性集和負(fù)載均衡,以幫助確保您的應(yīng)用程序始終可用并高效運(yùn)行。
影響VM高可用的因素很多,本文將統(tǒng)一進(jìn)行梳理,詳細(xì)如下:
1、VM維護(hù)和停機(jī)
有三種情況可能會(huì)導(dǎo)致Azure中的虛擬機(jī)受影響:計(jì)劃外硬件維護(hù)、意外停機(jī)、計(jì)劃內(nèi)維護(hù)。
當(dāng)Azure平臺(tái)預(yù)測(cè)硬件或者與物理計(jì)算機(jī)關(guān)聯(lián)的任何平臺(tái)組件即將發(fā)生故障時(shí),就會(huì)發(fā)生計(jì)劃外硬件維護(hù)事件。
意外停機(jī)指虛擬機(jī)的硬件或物理基礎(chǔ)設(shè)施意外出現(xiàn)故障。此類故障可能包括:本地網(wǎng)絡(luò)故障、本地磁盤故障,或者其他機(jī)架級(jí)別的故障。
計(jì)劃內(nèi)維護(hù)事件是指由Microsoft對(duì)底層Azure平臺(tái)進(jìn)行定期更新,以改進(jìn)虛擬機(jī)運(yùn)行時(shí)所在的平臺(tái)基礎(chǔ)結(jié)構(gòu)的總體可靠性、性能和安全性。
2、使用可用性區(qū)域防范數(shù)據(jù)中心級(jí)故障
可用性區(qū)域是Azure區(qū)域中獨(dú)特的物理位置。每個(gè)區(qū)域由一個(gè)或多個(gè)數(shù)據(jù)中心組成,這些數(shù)據(jù)中心配置了獨(dú)立電源、冷卻和網(wǎng)絡(luò)。
Azure區(qū)域中的可用性區(qū)域是容錯(cuò)域和更新域的組合。例如,如果在Azure區(qū)域的三個(gè)區(qū)域中創(chuàng)建三個(gè)或更多VM,則VM將有效分布在三個(gè)容錯(cuò)域和三個(gè)更新域中。Azure平臺(tái)會(huì)識(shí)別更新域上的此分布,以確保不同區(qū)域中的VM不會(huì)同時(shí)更新。
3、配置多個(gè)虛擬機(jī)以確保冗余
Azure平臺(tái)為可用性集中的每個(gè)虛擬機(jī)分配一個(gè)更新域和一個(gè)容錯(cuò)域。
更新域是可以同時(shí)維護(hù)或重新啟動(dòng)的基礎(chǔ)硬件邏輯組。在計(jì)劃內(nèi)維護(hù)期間,更新域的重啟順序可能不會(huì)按序進(jìn)行,但一次只重啟一個(gè)更新域。
容錯(cuò)域定義一組共用一個(gè)通用電源和網(wǎng)絡(luò)交換機(jī)的虛擬機(jī)。
4、VM使用托管磁盤
托管磁盤為可用性集提供了更佳的可靠性。為此,會(huì)自動(dòng)將磁盤放置在不同的存儲(chǔ)容錯(cuò)域(存儲(chǔ)群集)中,并使它們與VM容錯(cuò)域一致。如果某個(gè)存儲(chǔ)容錯(cuò)域因硬件或軟件故障而失敗,則只有其磁盤在該存儲(chǔ)容錯(cuò)域上的VM實(shí)例會(huì)失敗。
5、主動(dòng)響應(yīng)影響事件的VM
如果訂閱計(jì)劃事件,則將通知VM即將發(fā)生會(huì)對(duì)VM造成影響的維護(hù)事件。啟用計(jì)劃事件后,可在執(zhí)行維護(hù)活動(dòng)之前為虛擬機(jī)提供最少的時(shí)間。
6、配置單獨(dú)的可用性區(qū)域或可用性集
如果虛擬機(jī)幾乎完全相同,并且為應(yīng)用程序提供相同的目的,我們建議為每個(gè)應(yīng)用程序?qū)优渲每捎眯詤^(qū)域或可用性集。如果將兩個(gè)不同的層置于同一可用性區(qū)域或集中,則同一應(yīng)用程序?qū)又械乃刑摂M機(jī)都可以同時(shí)重啟。通過在可用性區(qū)域中配置至少兩個(gè)虛擬機(jī)或?yàn)槊總€(gè)層設(shè)置,可確保每個(gè)層中至少有一個(gè)虛擬機(jī)可用。
7、結(jié)合使用負(fù)載均衡器和可用性區(qū)域
將Azure負(fù)載均衡器與可用性區(qū)域相結(jié)合,或?qū)⑵湓O(shè)置為最大程度地提高應(yīng)用程序復(fù)原能力。Azure負(fù)載均衡器將流量分布到多個(gè)虛擬機(jī)中。對(duì)于標(biāo)準(zhǔn)層虛擬機(jī)來說,Azure負(fù)載均衡器已包括在內(nèi)。并非所有虛擬機(jī)層都包括Azure負(fù)載均衡器。
如果沒有將負(fù)載均衡器配置為對(duì)多個(gè)虛擬機(jī)上的流量進(jìn)行平衡,則任何計(jì)劃內(nèi)維護(hù)事件都會(huì)影響唯一的那個(gè)處理流量的虛擬機(jī),導(dǎo)致應(yīng)用程序?qū)又袛?。將同一層的多個(gè)虛擬機(jī)置于相同的負(fù)載均衡器和可用性集下可以確保至少有一個(gè)虛擬機(jī)實(shí)例能夠持續(xù)處理流量。