在不少的商業場景中,用戶的訪問,峯值時間都是很難預測的,尤爲是作一些市場推廣活動和促銷的時候,到底部署什麼規模的web集羣合適,這一直是個問題,部署過量會形成高成本和資源沒必要要的浪費,部署過少,若是到達峯值,來不及部署,容易形成用戶沒法訪問,用戶體驗差,交易損失等等,固然更不用提運維人員時刻神經緊繃的實時監測壓力狀況,以便及時採起措施……php
在雲計算技術突飛猛進的今天,這個場景是很是不和諧的:)VMSS做爲Azure新的計算方式,提供了按照壓力負載自動擴展收縮,而且同時支持Windows和Linux,在提供了IAAS級別的控制靈活性的同時,也提供了PAAS級別的自動擴展,對於無狀態的web服務器應用等場景很是適合,本文介紹如何經過ARM模板和VMSS建立一個自動負載均衡的,按照你的CPU負載自動擴展的web服務器集羣:前端
在本模板中,將會建立以下測試環境:git
定義一個負載均衡器,負責轉發前端的web請求給後端的web集羣github
使用VMSS建立一個web集羣web
使用客戶定製化腳本,自動安裝Apache web服務器,和PHP web應用shell
定義自動擴展集合的規則,根據虛擬機自動擴展集合中的CPU負載進行自動擴展或者收縮,虛擬機也會自動的在負載均衡器中自動添加或者刪除後端
壓力測試用具,可使用LoadRunner,Apache AB等等,在本例中,使用PHP產生壓力,達到CPU閾值要求瀏覽器
原始的ARM模版請參考Azure的quick start模版:bash
https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-lapstack-autoscale服務器
我修改過的,直接能夠在Azure China上運行的模版以下:
https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/vmss-lapstack-autoscale
模板定義:
對於VMSS的基本定義,前述文檔已經介紹過,不在贅述,再次咱們先看一下負載均衡器的定義,首先咱們須要增長一個負載均衡器的資源,這個資源依賴於公共IP地址,前端地址就是公共IP地址:
接下來咱們須要定義負載均衡的規則,前端的請求經過DNS或者公網IP地址進來之後,經過默認的地址分發給後端的IP資源池,協議是TCP,前端和後端端口都是標準的80端口,你也能夠設置負載均衡器空閒超時時間,這個時間會決定你的鏈接空閒時長,最長但是設置爲30分鐘;由於咱們後續主要配置的是http請求,因此主要設置一下針對80端口的探測,以此判斷後端虛擬機是否健康:
爲方便用戶定製化部署,快速擴展,Azure提供了定製化腳本擴展,可讓你在虛擬機部署完成後,運行自定義的腳本,安裝你本身軟件,部署你本身的應用,具體的用法以下,你能夠將你的應用放在Azure存儲中,本例中放在了github上,而後執行bash,進行安裝配置:
在本次測試中,提供了兩個PHP web文件,一個是index.php,用來顯示當前的web應用跑在哪一個服務器上,另一個是do_work.php用來給web服務器產生壓力,觸發自動擴展。
最後須要配置一下VMSS自動擴展的規則,在什麼狀況下進行自動擴展,在什麼狀況下,進行自動收縮,在本例中,咱們定義整個VMSS中平均CPU的負載在過去5分鐘內高於60%就進行自動擴展,低於50%的時候自動收縮:
最後咱們須要配置一下參數文件,定義一下VMSS的名稱,初始在VMSS中須要幾個虛擬機,用戶名和密碼便可:
最後,咱們使用Powershell進行部署,我已經寫好了一個deploy.ps1文件,你們在Powershell下修改下參數,直接執行便可,好比你但願的資源組名稱,部署的區域等參數,而後在Powershell下執行便可:
#用你的Azure帳號登錄
Login-AzureRmAccount -EnvironmentName AzureChinaCloud
#執行部署腳本
部署完成後,登錄Azure新portal,https://portal.azure.cn, 能夠看到新的VMSS集合已經部署成功,包括有一個擴展集,,一個負載均衡器,一個公網IP地址及多個用於分發VM的存儲帳號:
打開虛擬機擴展集,,查看當前實例,能夠看到當前有2個實例:
9 .點擊負載均衡器,得到公網的IP地址或者DNS,在瀏覽器中打開,能夠看到當前鏈接的是001 web服務器,該頁面是一個demo頁面,用於給虛擬機產生壓力;新打開一個瀏覽器,鏈接負載均衡器,能夠看到請求被分發到了002 web服務器:
10 . 在當前的測試頁面上,輸入500秒,做爲壓力測試時長,點擊"DO work",那麼PHP程序就會產生壓力,佔滿CPU:
11. 大約等待5,6分鐘之後,連續5分鐘的CPU負載超過60%,咱們打開新portal的虛擬機擴展頁面的實例頁面,能夠看到,按照咱們定義的VMSS自動擴展規則,虛擬機開始自動增長:
12. 使用不一樣的瀏覽器測試網站,還會看到網站請求會被分發到新創建的服務器B,C,F等等,說明自動擴展集正在增長web服務器的時候,也會自動更新負載均衡器的設置,讓前端客戶的請求按照默認的哈希規則分發給後端的服務器,實現動態的負載均衡:
13. 壓力測試完成,虛擬機擴展集的壓力逐步低於50%,這個時候,整個虛擬機擴展集合會監測最近5分鐘的負載狀況,一旦知足收縮要求,就會執行cooldown的過程,逐步移除web服務器,也會從負載均衡器移除,下降成本:
經過這個測試能夠看到,咱們能夠方便的使用VMSS+ARM快速的構建自動可擴展的web集羣,而且使用定製化腳本部署咱們的應用程序。