使用ARM和VMSS創建自動擴展的web集羣

在很多的商業場景中,用戶的訪問,峯值時間都是很難預測的,尤其是做一些市場推廣活動和促銷的時候,到底部署什麼規模的web集羣合適,這一直是個問題,部署過量會造成高成本和資源不必要的浪費,部署過少,如果到達峯值,來不及部署,容易造成用戶無法訪問,用戶體驗差,交易損失等等,當然更不用提運維人員時刻神經緊繃的實時監測壓力情況,以便及時採取措施……

在雲計算技術日新月異的今天,這個場景是非常不和諧的:)VMSS作爲Azure新的計算方式,提供了按照壓力負載自動擴展收縮,並且同時支持Windows和Linux,在提供了IAAS級別的控制靈活性的同時,也提供了PAAS級別的自動擴展,對於無狀態的web服務器應用等場景非常適合,本文介紹如何通過ARM模板和VMSS創建一個自動負載均衡的,按照你的CPU負載自動擴展的web服務器集羣:

在本模板中,將會創建如下測試環境:

  1. 定義一個負載均衡器,負責轉發前端的web請求給後端的web集羣

  2. 使用VMSS創建一個web集羣

  3. 使用客戶定製化腳本,自動安裝Apache web服務器,和PHP web應用

  4. 定義自動擴展集合的規則,根據虛擬機自動擴展集合中的CPU負載進行自動擴展或者收縮,虛擬機也會自動的在負載均衡器中自動添加或者刪除

  5. 壓力測試用具,可以使用LoadRunner,Apache AB等等,在本例中,使用PHP產生壓力,達到CPU閾值要求

  6. 原始的ARM模版請參考Azure的quick start模版:

https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-lapstack-autoscale

  1. 我修改過的,直接可以在Azure China上運行的模版如下:

    https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/vmss-lapstack-autoscale

     

模板定義:

  1. 對於VMSS的基本定義,前述文檔已經介紹過,不在贅述,再次我們先看一下負載均衡器的定義,首先我們需要增加一個負載均衡器的資源,這個資源依賴於公共IP地址,前端地址就是公共IP地址:

     

     

  2. 接下來我們需要定義負載均衡的規則,前端的請求通過DNS或者公網IP地址進來以後,通過默認的地址分發給後端的IP資源池,協議是TCP,前端和後端端口都是標準的80端口,你也可以設置負載均衡器空閒超時時間,這個時間會決定你的連接空閒時長,最長可是設置爲30分鐘;因爲我們後續主要配置的是http請求,所以主要設置一下針對80端口的探測,以此判斷後端虛擬機是否健康:

     

  3. 爲方便用戶定製化部署,快速擴展,Azure提供了定製化腳本擴展,可以讓你在虛擬機部署完成後,運行自定義的腳本,安裝你自己軟件,部署你自己的應用,具體的用法如下,你可以將你的應用放在Azure存儲中,本例中放在了github上,然後執行bash,進行安裝配置:

     

    在本次測試中,提供了兩個PHP web文件,一個是index.php,用來顯示當前的web應用跑在哪個服務器上,另外一個是do_work.php用來給web服務器產生壓力,觸發自動擴展。

     

  4. 最後需要配置一下VMSS自動擴展的規則,在什麼情況下進行自動擴展,在什麼情況下,進行自動收縮,在本例中,我們定義整個VMSS中平均CPU的負載在過去5分鐘內高於60%就進行自動擴展,低於50%的時候自動收縮:

     

     

  5. 最後我們需要配置一下參數文件,定義一下VMSS的名稱,初始在VMSS中需要幾個虛擬機,用戶名和密碼即可:

  6. 最後,我們使用Powershell進行部署,我已經寫好了一個deploy.ps1文件,大家在Powershell下修改下參數,直接執行即可,比如你希望的資源組名稱,部署的區域等參數,然後在Powershell下執行即可:

     

    #用你的Azure賬號登陸

    Login-AzureRmAccount -EnvironmentName AzureChinaCloud

    #執行部署腳本

  7. 部署完成後,登陸Azure新portal,https://portal.azure.cn, 可以看到新的VMSS集合已經部署成功,包括有一個擴展集,,一個負載均衡器,一個公網IP地址及多個用於分發VM的存儲賬號:

  8. 打開虛擬機擴展集,,查看當前實例,可以看到當前有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集羣,並且使用定製化腳本部署我們的應用程序。

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章