云概念是Azure設計的基礎。可用性區域——在Azure中被視為單個位置——本質上是眾多的在相對較近的地理位置的物理數據中心。因此,處理云應用部署的管理員可以選擇將系統配置為在發生大規模中斷故障時轉移到區域內的備用數據中心。
在每個數據中心內運行的群集將數千個網絡物理節點關聯起來。當其中一個節點遇到故障時,其托管的VM將在群集中的另一個物理節點上重新啟動。每個使用公有云的站點都有成百上千群集。
正如私有數據中心的虛擬機管理程序需要打補丁一樣,在公有云中的物理刀片服務器上運行的管理程序也是如此。對于托管云應用部署的單個機器來說,這是個壞消息。一年都有那么幾次,虛擬機必須在底層管理程序升級時遷移。管理員不必擔心來自云提供商(如Microsoft的DNS和Azure Directory)的維護對服務的影響,但客戶的工作負載是他們的責任。
Azure使用可用性集來處理客戶虛擬機的中斷問題。可用性集使管理員能夠分配幾臺機器,例如放置在不同區域中的前端Web服務器。這種分散在云計算架構中創造了高可用性,因為前端服務都可以處理請求,而不管單個故障或服務器更新。Microsoft將可用性集定義為虛擬機的邏輯分組; 可用性集為云提供商提供了云應用部署的結構信息。
任何希望將Microsoft維持在99.95%的正常運行時間的服務級別協議的管理員都應該使用這些組來提供可用性。管理員需要在云計算中實現高可用性的最大教訓之一就是像對待牲畜那樣處理托管基礎設施,而不是像對待寵物那樣。管理員必須針對單個節點進行設計,從而對云應用部署的功能產生最小的影響。
磁盤在Azure中的呈現方式與在本地托管的IT基礎設施中不同。即使是存儲節點也需要升級,因此管理員將其視為單個節點的磁盤實際上在Azure數據中心中至少復制了三次。而額外的冗余也要很高的成本——云計算的高可用性不是免費的。
可用性集為云應用程序部署考慮到了故障域和升級域。故障域是一組基礎設施項目,可能會受到單個問題的影響,例如局部電源故障。升級域由經過分組并以可控的方式打補丁的機器組成。
可用性集確保云托管服務對其接收的請求執行其職責。
虛擬機不能孤立地存在,而且仍然服務于流量,因此給定可用性集中的虛擬機依賴于負載均衡器進行網絡控制。Microsoft的Azure負載均衡確保流量路由到可用的服務器——而不是故障服務器或升級中的服務器。
使高可用性成為現實壞消息是,在初始云應用程序部署之后,您不能將虛擬機添加到可用性區域。現有虛擬機必須被銷毀并重新創建。
云服務涉及全部層級——網絡層,應用層,數據庫層——每層都應該具有自己的可用性集。在設計云應用部署時不要混搭;集合中的所有機器都應具有相同的目的。
要創建可用性集,請在Azure資源管理控制臺中創建新機器。使用托管磁盤為Azure VM提供持久性,安全磁盤存儲復制到三個位置。選擇創建可用性集的選項,如果這是一個新的可用性集,請給它一個有用的名稱。根據需要重復構建云應用程序部署。
一旦服務器在可用性集中創建,就會連接負載均衡器。沒有負載均衡器,前端IP將無法提供服務。有幾種方法可以提供負載均衡,包括PowerShell。這是云操作的世界,代碼是一等公民。
云計算的高可用性與您本地的數據中心一樣可以實現,但它不會自行發生。使用云部署選項確保服務的可用性。遷移到云上的管理員們需要明白的一點是,一切不再是關于服務器的,而是關于服務的。