基于即付即得(pay-as-you-go)的云計算模型有助于開發人員和架構師設計出能夠一直運行于最佳資源分配下的應用程序。給服務器過高的配置來滿足業務需要意味著花費太多冤枉錢,這個錯誤的另一個極端則更糟糕,即給服務器過低的配置導致應用程序的性能不足。而應用程序要求的變化使得對服務器配置的選擇變得更加困難,因為最佳的資源組合不是一成不變的。
使用AWS服務來應對這些變化的一種方法是創建一個負載均衡服務器集群,然后根據需要添加或刪除服務器。你可以自己管理這樣一種集群,除此之外,你還可以嘗試AWS Auto Scaling服務。該服務在避免過度配置的條件下保持足夠的性能,同時也能夠減少一些管理費用。該服務要達到的最佳應用場景是工作負載變化顯著變化時,AWS Auto Scaling能夠輕松地跨多個服務器分配負載。
AWS Auto Scaling 使用CloudWatch(亞馬遜提供的一種監控工具)來提供所需的性能數據,完成伸縮服務建議。每隔五分鐘,CloudWatch都將從服務器和其他AWS資源處,免費地收集性能統計數據,包括CPU使用率、磁盤使用情況和數據傳輸情況等。(額外付費的話將可獲得每分鐘一次的性能指標收集服務。)系統管理員可根據這些測量信息規定添加或刪除服務器的配置策略。例如,一項配置策略指示當CPU平均利用率超過70%時,將啟動一個額外的虛擬實例。
通過實現自動伸縮組協助制定配置策略
使用AWS Auto Scaling服務的第一步是實現一個自動伸縮組,即在邏輯上統一管理的一組亞馬遜彈性計算云(EC2)實例。每一個組均被指定了最小和最大實例數,而實際數值則由基于CloudWatch的測量值做出的配置策略來決定。當需要手動干預時,通過AWS提供的ExecutePolicy命令行,系統管理員便可以無需等待觸發條件,直接執行一項策略。
通過自動伸縮組的應用,企業在維護應用程序性能和開銷的許多相關工作中得到了幫助。
自動伸縮組能夠跨越可用性區域(一種能夠支撐應用程序高可用性要求的特性)提供服務。這些可用性區域處于AWS 范圍內,例如,美國東部(北維吉尼亞)或歐盟地區(愛爾蘭),通過不同的基礎架構隔離故障實例與正常實例。如果在某個可用性區域中發生了故障,AWS Auto Scaling將在同一個地理區域內的某個功能區啟動一個新的實例。
自動伸縮組能夠通過負載均衡器配置集群內服務器間的工作負載。亞馬遜的彈性負載均衡服務提供了一個到你的應用程序的所有流量的單點訪問。當使用負載均衡器時,可以引用負載均衡測量指標(比如請求等待時間)以及EC2實例測量指標來制定自動伸縮策略。
除了響應變化的負載,Auto Scaling還支持其他伸縮選項,包括持續確保當前實例的性能、手動伸縮以及基于排程的伸縮。
應對AWS Auto Scaling的潛在問題
完成一項自動伸縮策略的指定動作需要花費一定的時間,然而,AWS在一次觸發后,實現了一個冷卻周期,用于防止當對觸發器最初的響應還在繼續的時候,執行了對觸發器第二次響應所引起的一系列事件。冷卻周期始于執行策略動作。
針對Web服務器和一些應用程序服務器而言,當應用程序負載可以分布在多個服務器之上時,自動伸縮不無裨益。某些系統(如關系型數據庫系統)可以配置運行于集群中,但其中存在諸多缺點:商業版關系型數據庫可能通過收取額外授權費用來提供集群支持,這些授權費甚至會超過因在不同數量的小型服務器運行數據庫而拒絕一臺大型服務器所節省下來的費用。此外還要考慮管理數據庫服務器集群與管理單個服務器的不同開銷。