通過集群化、復(fù)制、快照、微服務(wù)和應(yīng)用程序設(shè)計(jì)來提高企業(yè)工作負(fù)載的應(yīng)用程序彈性和可用性。
應(yīng)用程序的彈性和可用性是現(xiàn)代企業(yè)工作負(fù)載的關(guān)鍵屬性。應(yīng)用程序需要在硬件故障發(fā)生后,扛過服務(wù)故障(例如負(fù)載平衡器和域名系統(tǒng)錯(cuò)誤)保持工作狀態(tài),并且可以忍受局域網(wǎng)和互聯(lián)網(wǎng)中斷的影響。每個(gè)事件都可能會(huì)影響業(yè)務(wù)收入、聲譽(yù)甚至法規(guī)的符合性。以下五種方法幫助您增強(qiáng)應(yīng)用程序彈性和服務(wù)可用性。
集群化增加應(yīng)用程序彈性
群集幾乎是最普遍的用于增強(qiáng)應(yīng)用程序的彈性、性能和可用性的方法。應(yīng)用程序的某一實(shí)例擁有的吞吐能力是有限的—它只能在給定的時(shí)間內(nèi)做一定量的工作。如果您推送的應(yīng)用程序超出其容量—期望其每秒處理的比其可以處理的事務(wù)更多—應(yīng)用程序?qū)⒃庥鲂阅芙档蜕踔潦潜罎⒉⒆兊脽o法工作。該應(yīng)用程序工作負(fù)載的每個(gè)附加實(shí)例可以增加應(yīng)用程序的有效容量,并允許集群實(shí)現(xiàn)比單個(gè)工作負(fù)載實(shí)例能夠處理更多的工作。這是可擴(kuò)展性聚類的概念。如果企業(yè)需要從應(yīng)用程序獲得更多的工作能力,您可以將更多負(fù)載平衡的節(jié)點(diǎn)部署到應(yīng)用程序集群。
但附加的節(jié)點(diǎn)將增強(qiáng)應(yīng)用程序的可用性,這對(duì)于應(yīng)用程序高可用性(HA)相當(dāng)關(guān)鍵。如果某一節(jié)點(diǎn)出現(xiàn)故障,則集群中的其他節(jié)點(diǎn)將共享計(jì)算負(fù)載。負(fù)載平衡器可以識(shí)別故障節(jié)點(diǎn),并將應(yīng)用流量重新分配給其余節(jié)點(diǎn)。這樣一來該應(yīng)用程序仍然可工作。在很多情況下,用戶永遠(yuǎn)都不會(huì)注意到這一問題。節(jié)點(diǎn)可以在同一數(shù)據(jù)中心本地,也可以分布在不同的數(shù)據(jù)中心,以防止可能出現(xiàn)的設(shè)施故障、互聯(lián)網(wǎng)中斷和其他潛在的威脅。
RAID和復(fù)制是存儲(chǔ)可用性的基礎(chǔ)
RAID仍然是存儲(chǔ)可用性的重要特性。RAID 0(條帶化)不提供數(shù)據(jù)保護(hù),而是將數(shù)據(jù)分散到多個(gè)磁盤上,同時(shí)主軸用以提高存儲(chǔ)性能。RAID 1(鏡像)將一個(gè)磁盤的數(shù)據(jù)復(fù)制到另一個(gè)磁盤。如果一個(gè)磁盤發(fā)生故障,則副本可無縫地接管,您可以從工作副本中替換和重建發(fā)生故障的磁盤。RAID 5在多個(gè)磁盤或RAID組之間分散數(shù)據(jù)和奇偶校驗(yàn)。如果磁盤發(fā)生故障,剩余的奇偶校驗(yàn)信息可以重構(gòu)丟失的數(shù)據(jù),并重建有缺陷的磁盤的內(nèi)容。這樣可以保護(hù)存儲(chǔ)設(shè)備組免受單磁盤故障的影響。RAID 6也可在多個(gè)磁盤間分散數(shù)據(jù),但包含雙層奇偶校驗(yàn)信息。這可以容忍和重建兩個(gè)同時(shí)的磁盤故障——該技術(shù)被稱為雙重奇偶校驗(yàn)。
您還可以將RAID技術(shù)進(jìn)行組合以實(shí)現(xiàn)多重優(yōu)勢(shì)。例如,將RAID 5或RAID 6組(RAID 1)鏡像到第二個(gè)磁盤組,其結(jié)合了性能并確保在重建故障磁盤時(shí)快速訪問數(shù)據(jù)。您可以制定最適合每個(gè)給定業(yè)務(wù)應(yīng)用程序的存儲(chǔ)保護(hù)方案。
復(fù)制可以在兼容的存儲(chǔ)子系統(tǒng)之間進(jìn)行,但I(xiàn)T經(jīng)常使用它從一個(gè)數(shù)據(jù)中心站點(diǎn)定期復(fù)制數(shù)據(jù)到輔助站點(diǎn)或公有云——即某一非現(xiàn)場(chǎng)或遠(yuǎn)程位置,可以幫助防止數(shù)據(jù)丟失一個(gè)嚴(yán)重的設(shè)施問題。您可以在本地存儲(chǔ)資源之間同步執(zhí)行復(fù)制,其中延遲不是重要因素,或遠(yuǎn)程存儲(chǔ)資源之間的異步執(zhí)行,其中延遲可能很大。您可以同時(shí)使用和復(fù)制RAID。
快照和遷移提供的靈活性
虛擬化技術(shù)允許您在數(shù)據(jù)中心服務(wù)器上配置、部署和管理現(xiàn)代企業(yè)應(yīng)用程序作為虛擬機(jī)。虛擬機(jī)提供了巨大的靈活性,因?yàn)榕c物理服務(wù)器相比,計(jì)算資源的利用率更高,同時(shí)也保證了共享同一物理系統(tǒng)的每個(gè)虛擬機(jī)的充分邏輯隔離。即使虛擬機(jī)砸死服務(wù)器內(nèi)存空間中作為映像存在,但仍然必須保護(hù)這些映像不受服務(wù)器故障和應(yīng)用程序崩潰的影響,從而可能危及虛擬機(jī)并導(dǎo)致應(yīng)用程序無法使用。
然而,并不是所有的工作負(fù)載都那么重要,可以證明在集群和其他應(yīng)用程序可用性選擇方面的投資。快照是在服務(wù)器內(nèi)存中將虛擬機(jī)的時(shí)間點(diǎn)狀態(tài)復(fù)制到存儲(chǔ)中的文件的常見方法。您可以經(jīng)常捕獲并輕松恢復(fù)快照——將應(yīng)用程序恢復(fù)到當(dāng)時(shí)時(shí)間點(diǎn)的狀態(tài)。通常情況下,應(yīng)用程序中斷時(shí)IT人員使用快照進(jìn)行應(yīng)用程序回滾和快速恢復(fù)。您還可以使用快照創(chuàng)建重復(fù)的應(yīng)用程序?qū)嵗?mdash;—通常用于應(yīng)用程序測(cè)試、開發(fā)和評(píng)估。
在數(shù)據(jù)中心內(nèi)或遠(yuǎn)程數(shù)據(jù)中心之間的虛擬化服務(wù)器之間遷移虛擬機(jī)非常簡(jiǎn)單。遷移通常用于工作負(fù)載平衡等任務(wù)。這允許IT管理員調(diào)整固定服務(wù)器上的工作負(fù)載數(shù)量,以優(yōu)化可用的計(jì)算資源或通過將工作負(fù)載移動(dòng)到具有更多計(jì)算資源可用性的另一臺(tái)服務(wù)器來提高應(yīng)用程序性能。為了防止工作負(fù)載中斷,在監(jiān)控和管理工具檢測(cè)到該服務(wù)器運(yùn)行狀況的問題時(shí),先將VM從服務(wù)器遷移出去。您還可以手動(dòng)調(diào)用遷移以在服務(wù)器上執(zhí)行例行維護(hù)過程。
微服務(wù)和容器為虛擬化提供新的機(jī)會(huì)
應(yīng)用程序設(shè)計(jì)的一大新興趨勢(shì)是放棄傳統(tǒng)的單片設(shè)計(jì)并將應(yīng)用程序重新映射為使用API傳達(dá)命令和數(shù)據(jù)的更小的“無狀態(tài)”功能或服務(wù)的集合。這就是微服務(wù)的方法。您可以分別構(gòu)建、測(cè)試、部署和擴(kuò)展每個(gè)組件。而且由于每個(gè)組件都是無狀態(tài)的,所以一個(gè)組件的故障或故障不會(huì)導(dǎo)致整體應(yīng)用中嚴(yán)重的數(shù)據(jù)丟失或不穩(wěn)定;您可以簡(jiǎn)單地重新啟動(dòng)某一出現(xiàn)問題的組件。
更新微服務(wù)應(yīng)用程序更加容易。盡管單片應(yīng)用程序更新將需要完整的功能回歸測(cè)試,但組件更新只需要測(cè)試該特定組件。由于組件是獨(dú)立存在的,因此在單片應(yīng)用程序中經(jīng)常存在的相互狀態(tài)關(guān)系并不存在而無需測(cè)試。
構(gòu)成微服務(wù)應(yīng)用程序的組件經(jīng)常部署到虛擬化容器之中。容器是用于提供服務(wù)器資源的替代化虛擬化技術(shù)。每個(gè)虛擬機(jī)提供完全隔離的操作環(huán)境,每個(gè)容器共享相同的底層操作系統(tǒng)、驅(qū)動(dòng)程序和其他依賴項(xiàng)。這種共享方法使每個(gè)容器的體積之小和資源有效性都達(dá)到極限,允許更多容器駐留在同一臺(tái)服務(wù)器上。容器可被快速創(chuàng)建和銷毀,因此您可以根據(jù)需要對(duì)構(gòu)成微服務(wù)應(yīng)用程序的組件進(jìn)行啟動(dòng)和擴(kuò)展。
在設(shè)計(jì)階段預(yù)先構(gòu)造應(yīng)用程序彈性
應(yīng)用程序彈性通常涉及工作負(fù)載在其某一或多個(gè)組件中發(fā)生故障后的生存能力,以及仍可為業(yè)務(wù)及其用戶提供最佳可能的服務(wù)的程度。這意味著您本應(yīng)將可用性集成到現(xiàn)代應(yīng)用程序的設(shè)計(jì)和測(cè)試階段之中。
應(yīng)用程序靈活性討論的一部分以應(yīng)用程序架構(gòu)和設(shè)計(jì)為中心。微服務(wù)器方法只是構(gòu)建復(fù)雜高度可擴(kuò)展應(yīng)用程序的新興設(shè)計(jì)范例的一種流行演示。自動(dòng)化以及編排提供擴(kuò)充組件,并根據(jù)流量需求隨時(shí)間變化自動(dòng)平衡負(fù)載提供了相應(yīng)能力。例如,如果較大應(yīng)用程序的一個(gè)組件或功能需要處理更多的流量請(qǐng)求,那么您可以復(fù)制該組件(僅復(fù)制該組件)來處理額外的流量。
彈性應(yīng)用程序設(shè)計(jì)的思考
彈性的應(yīng)用程序設(shè)計(jì),如微服務(wù)器,需要重新關(guān)注測(cè)試和審查每項(xiàng)對(duì)應(yīng)用程序的更改。了解每個(gè)組件、模塊、服務(wù)或依賴關(guān)系的損失將如何影響應(yīng)用程序的整體可用性。如果應(yīng)用程序在測(cè)試期間不符合既定目標(biāo),則不應(yīng)將其發(fā)布到生產(chǎn)環(huán)境中。有時(shí),您必須改進(jìn)相關(guān)服務(wù)或依賴關(guān)系(如存儲(chǔ))的可用性,以滿足應(yīng)用程序的可用性目標(biāo)。
您還必須評(píng)估應(yīng)用程序的安全性,作為用戶授權(quán)和對(duì)外部和內(nèi)部攻擊的硬度的測(cè)量方法。衡量業(yè)務(wù)數(shù)據(jù)的安全性,并確保只有授權(quán)用戶可以訪問應(yīng)用程序的數(shù)據(jù),并保護(hù)數(shù)據(jù)免遭丟失或被盜。這可能包括某種形式的身份和訪問管理框架,以及在運(yùn)行和非運(yùn)行狀態(tài)下一定級(jí)別的數(shù)據(jù)加密。
此外,評(píng)估應(yīng)用程序的可擴(kuò)展性,以確定如何輕松地?cái)U(kuò)展工作負(fù)載以滿足流量需求?,F(xiàn)代模塊化應(yīng)用程序往往更加容易進(jìn)行擴(kuò)充,因?yàn)橥ǔ?梢酝ㄟ^更少的計(jì)算資源來更快地(通常是自動(dòng)的)部署其他組件并平衡負(fù)載。
所有這些概念經(jīng)常伴隨著綜合的應(yīng)用程序性能管理工具,旨在幫助您了解工作負(fù)載在生產(chǎn)環(huán)境中如何執(zhí)行其設(shè)計(jì)目標(biāo)。
應(yīng)用程序也經(jīng)常設(shè)法接受無狀態(tài)設(shè)計(jì)?;旧希瑹o狀態(tài)功能從外部獲取所需要的所有數(shù)據(jù),執(zhí)行其各自的任務(wù),然后將其結(jié)果傳遞給用戶或其他功能——不考慮模式、選集、選擇或配置偏好對(duì)功能行為的負(fù)面影響。如果功能發(fā)生故障,您可以簡(jiǎn)單地重新啟動(dòng)它,而免受數(shù)據(jù)損失數(shù)據(jù)的風(fēng)險(xiǎn)。