在Azure以前的ASM版本或者經典模式中,用戶使用Azure Website,Azure Cloud Service等PAAS服務,能夠實現必定程度上的自動擴展(auto scaling),但有着諸多限制和缺陷,例如只能在PAAS平臺上使用,擴展週期較長,沒法支持定製化鏡像,沒法支持Linux等等,那麼在Azure上有沒有一種服務,能夠給予咱們加強的PAAS的自動擴展能力,同時讓用戶可以像使用IAAS虛擬機同樣有最大限度的控制能力暱?git
Azure新的資源管理器(ARM)模式中推出了一項全新的服務,叫作虛擬機擴展集合(Virtual Machine Scale Sets),實現了真正的自動化擴展(auto scaling)功能,對於大併發須要自動擴展的場景提供了很是好的功能支持,例如:github
細粒度的性能收集和處理(能夠每分鐘收集性能數據,最小5分鐘做爲一個處理窗口進行擴展或者收縮)web
支持Linux,固然也支持Windowsshell
支持客戶自定義鏡像,不須要像之前的雲服務同樣要預先部署json
幾分鐘內部署上百臺服務器ubuntu
能夠在擴展集中整合使用負載均衡器,高可用集合,應用程序網關等服務服務器
支持多種不一樣類型的度量值(cpu/memeory/network/disk)進行擴展網絡
在本文中描述如何經過ARM模板和Powershell,在Azure中國的平臺上建立一個Linux的VMSS,實現自動化擴展。對於什麼是ARM,什麼是ARM模版,ARM和ASM的比較差異等等詳見本人其餘博客。併發
首先確保你有一箇中國區Azure的賬號,而且可以正常登陸預覽版的Azure門戶:負載均衡
安裝最新的Azure Powershell,目前最新的版本是2.0.1:http://aka.ms/webpi-azps
Azure提供了很是多的樣例模版供用戶使用,用戶能夠很是方便的下載,修改和應用這些模版,全部模版都在Github上,具體地址以下:
全部的模板都是json文件,能夠本身來修改,在上述地址找到模版"201-vmss-ubuntu-autoscale",並下載 azuredeploy.json 和 azuredeploy.parameters.json 文件。
首先打開azuredeploy.json文件,一個基本的ARM模板除了基本信息好比有schema和ContecntVersion外,包含3個部分:parameters,variables,resources
Parameters:定義你在外部要輸入的參數值,好比虛擬機的大小,p_w_picpath的名稱等
Variables:默認的一些變量,好比存儲類型,網絡地址,API版本等等
Resources:你所用到的系統資源和服務,好比網絡,虛擬機擴展插件,負載均衡等等
打開azuredeploy.json文件,首先須要修改一下Ubuntu的p_w_picpath,在中國最新的Ubuntu 14的版本是14.04.3-LTS
修改爲:
全部存儲的端點地址都是global的,須要修改爲中國的:
修改成:
對於Linux Diagnostics的存儲的Endpoint,這個地方要特別注意,除了須要修改存儲的Endpoint以外,還須要添加存儲metrics的table的endpoint,不然整個VMSS沒法採集到正確的數據到相應的table,也不工做:
修改成:
咱們來看一下自動擴展設置(auto scaling),在定義自動擴展的時候,首先你能夠肯定一個容量,好比最小VM數量,默認數量,最大可擴展數量:
而後咱們須要定義自動擴展的規則,在什麼狀況下增長實例,什麼狀況降低低實例,在本例子中,咱們定義了處理器的PercentUserTime,每1分鐘採集數據,每5分鐘做爲一個時間窗口,若是平均值大於60%,那麼自動擴展,每次增長一個實例:
從上面的步驟能夠看到,你在Github上拿到的template不能直接使用,由於裏面比較多的參數是針對global azure的,須要作一些修改,直接修改好的模板我已經共享到了Github上面,你也能夠到以下地址下載使用:
https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/VMSS-Linux-Autoscale
打開參數文件azuredeploy.parameters.json,這個文件裏面是你針對模板設置參數的地方,好比你要使用什麼樣的VM大小,用戶名密碼,初始要多少個VM等等:
好比個人蔘數文件以下: