使用ARM和VMSS建立自動擴充的web叢集

來源:互聯網
上載者:User

標籤:

在很多的商業情境中,使用者的訪問,峰值時間都是很難預測的,尤其是做一些市場推廣活動和促銷的時候,到底部署什麼規模的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叢集,並且使用定製化指令碼部署我們的應用程式。

?

?

使用ARM和VMSS建立自動擴充的web叢集

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.