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

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

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

在本模板中,將會建立以下測試環境:git

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

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

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

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

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

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

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集羣,而且使用定製化腳本部署咱們的應用程序。

相關文章
相關標籤/搜索