利用虛擬機(jī)規(guī)模集接谨,可以部署和管理一組相同的笼蛛、自動縮放的虛擬機(jī)窝爪。 可以手動縮放規(guī)模集中的 VM 數(shù)弛车,也可以定義規(guī)則,以便根據(jù)資源使用情況(如 CPU 使用率蒲每、內(nèi)存需求或網(wǎng)絡(luò)流量)進(jìn)行自動縮放纷跛。 在本教程中,將在 Azure 中部署虛擬機(jī)規(guī)模集邀杏。 你將學(xué)習(xí)如何執(zhí)行以下操作:
使用 cloud-init 創(chuàng)建可縮放的應(yīng)用
創(chuàng)建虛擬機(jī)規(guī)模集
增加或減少規(guī)模集中的實(shí)例數(shù)
查看規(guī)模集實(shí)例的連接信息
在規(guī)模集中使用數(shù)據(jù)磁盤
Note
在 Azure 中國區(qū)使用 Azure CLI 2.0 之前忽舟,請先運(yùn)行az cloud set -n AzureChinaCloud來改變云環(huán)境。如果想切回國際版 Azure淮阐,請?jiān)俅芜\(yùn)行az cloud set -n AzureCloud叮阅。
如果選擇在本地安裝并使用 CLI,本教程要求運(yùn)行 Azure CLI 2.0.4 或更高版本泣特。 運(yùn)行az --version即可查找版本浩姥。 如果需要進(jìn)行安裝或升級,請參閱安裝 Azure CLI 2.0状您。
規(guī)模集概述
利用虛擬機(jī)規(guī)模集勒叠,可以部署和管理一組相同的、自動縮放的虛擬機(jī)膏孟。 規(guī)模集中的 VM 將分布在邏輯容錯域和更新域的一個(gè)或多個(gè)放置組中眯分。 這些放置組由配置類似的 VM 組成,與可用性集相似柒桑。
可以根據(jù)需要在規(guī)模集中創(chuàng)建 VM弊决。 可以定義自動縮放規(guī)則來控制如何以及何時(shí)在規(guī)模集中添加或刪除 VM。 這些規(guī)則可以根據(jù) CPU 負(fù)載、內(nèi)存用量或網(wǎng)絡(luò)流量等指標(biāo)觸發(fā)飘诗。
使用 Azure 平臺映像時(shí)与倡,規(guī)模集最多支持 1,000 個(gè) VM。 對于有重要安裝或 VM 自定義要求的工作負(fù)荷昆稿,可能需要創(chuàng)建自定義 VM 映像纺座。 使用自定義映像時(shí),在規(guī)模集中最多可以創(chuàng)建 300 個(gè) VM溉潭。
創(chuàng)建用于縮放的應(yīng)用
對于生產(chǎn)用途净响,可能需要創(chuàng)建自定義 VM 映像,其中包含已安裝和配置的應(yīng)用程序喳瓣。 在本教程中馋贤,我們將在首次啟動時(shí)自定義 VM,以便快速了解規(guī)模集的運(yùn)作方式夫椭。
上一篇教程已介紹如何使用 cloud-init 在首次啟動時(shí)自定義 Linux 虛擬機(jī)掸掸。 可使用同一個(gè) cloud-init 配置文件安裝 NGINX 并運(yùn)行簡單的“Hello World”Node.js 應(yīng)用。 創(chuàng)建名為“cloud-init.txt”的文件并粘貼以下配置蹭秋。 請確保已正確復(fù)制整個(gè) cloud-init 文件扰付,尤其是第一行:
yaml復(fù)制
#cloud-configpackage_upgrade:truepackages:-nginx-nodejs-npmwrite_files:- owner:www-data:www-data- path:/etc/nginx/sites-available/defaultcontent:|
server {
listen 80;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}- owner:azureuser:azureuser- path:/home/azureuser/myapp/index.jscontent:|
var express = require('express')
var app = express()
var os = require('os');
app.get('/', function (req, res) {
res.send('Hello World from host ' + os.hostname() + '!')
})
app.listen(3000, function () {
console.log('Hello world app listening on port 3000!')
})runcmd:-servicenginxrestart-cd"/home/azureuser/myapp"-npminit-npminstallexpress-y-nodejsindex.js
創(chuàng)建規(guī)模集
使用az group create創(chuàng)建資源組,然后才能創(chuàng)建規(guī)模集仁讨。 以下示例在“chinaeast”位置創(chuàng)建名為“myResourceGroupScaleSet”的資源組:
Azure CLI復(fù)制
azgroupcreate--namemyResourceGroupScaleSet--locationchinaeast
現(xiàn)在羽莺,使用az vmss create創(chuàng)建虛擬機(jī)規(guī)模集。 以下示例創(chuàng)建名為“myScaleSet”的規(guī)模集洞豁,使用 cloud-int 文件自定義 VM盐固,然后生成 SSH 密鑰(如果不存在):
Azure CLI復(fù)制
azvmsscreate\--resource-groupmyResourceGroupScaleSet \--namemyScaleSet \--imageUbuntuLTS \--upgrade-policy-modeautomatic \--custom-datacloud-init.txt \--admin-usernameazureuser \--generate-ssh-keys
創(chuàng)建和配置所有的規(guī)模集資源和 VM 需要幾分鐘時(shí)間。 在 Azure CLI 返回提示之后丈挟,仍然存在繼續(xù)運(yùn)行的后臺任務(wù)刁卜。 可能還需等待幾分鐘才能訪問應(yīng)用。
允許 Web 流量
已自動創(chuàng)建一個(gè)負(fù)載均衡器曙咽,作為虛擬機(jī)規(guī)模集的一部分蛔趴。 負(fù)載均衡器使用負(fù)載均衡器規(guī)則將流量分配到一組定義的 VM。 可以在下一篇教程如何在 Azure 中實(shí)現(xiàn)虛擬機(jī)的負(fù)載均衡中詳細(xì)了解負(fù)載均衡器的概念和配置例朱。
若要允許通信流到達(dá) Web 應(yīng)用孝情,請使用az network lb rule create創(chuàng)建一個(gè)規(guī)則。 以下示例創(chuàng)建名為“myLoadBalancerRuleWeb”的規(guī)則:
Azure CLI復(fù)制
aznetworklbrulecreate\--resource-groupmyResourceGroupScaleSet \--namemyLoadBalancerRuleWeb \--lb-namemyScaleSetLB \--backend-pool-namemyScaleSetLBBEPool \--backend-port80\--frontend-ip-nameloadBalancerFrontEnd \--frontend-port80\--protocoltcp
測試應(yīng)用
若要在 Web 上查看 Node.js 應(yīng)用洒嗤,請使用az network public-ip show獲取負(fù)載均衡器的公共 IP 地址箫荡。 以下示例獲取創(chuàng)建為規(guī)模集一部分的“myScaleSetLBPublicIP”的 IP 地址:
Azure CLI復(fù)制
aznetworkpublic-ipshow\--resource-groupmyResourceGroupScaleSet \--namemyScaleSetLBPublicIP \--query[ipAddress]\--outputtsv
將公共 IP 地址輸入到 Web 瀏覽器中。 將顯示應(yīng)用渔隶,包括負(fù)載均衡器將流量分發(fā)到的 VM 的主機(jī)名:
若要查看規(guī)模集的實(shí)際運(yùn)行情況羔挡,可以強(qiáng)制刷新 Web 瀏覽器,以查看負(fù)載均衡器如何在運(yùn)行應(yīng)用的所有 VM 之間分發(fā)流量。
管理任務(wù)
在規(guī)模集的整個(gè)生命周期內(nèi)婉弹,可能需要運(yùn)行一個(gè)或多個(gè)管理任務(wù)睬魂。 此外终吼,可能還需要創(chuàng)建自動執(zhí)行各種生命周期任務(wù)的腳本镀赌。 Azure CLI 2.0 提供一種用于執(zhí)行這些任務(wù)的快速方法。 以下是一些常見任務(wù)际跪。
查看規(guī)模集中的 VM
若要查看規(guī)模集中運(yùn)行的 VM 列表商佛,請使用az vmss list-instances,如下所示:
Azure CLI復(fù)制
azvmsslist-instances \--resource-groupmyResourceGroupScaleSet \--namemyScaleSet \--outputtable
輸出類似于以下示例:
Azure CLI復(fù)制
InstanceId? LatestModelApplied? ? Location? ? Name? ? ? ? ? ProvisioningState? ? ResourceGroup? ? ? ? ? ? VmId------------------------------------------------------------------------------------------------------------------------------------1True? ? ? ? ? ? ? ? ? chinaeast? myScaleSet_1? Succeeded? ? ? ? ? ? MYRESOURCEGROUPSCALESET? c72ddc34-6c41-4a53-b89e-dd24f27b30ab3True? ? ? ? ? ? ? ? ? chinaeast? myScaleSet_3? Succeeded? ? ? ? ? ? MYRESOURCEGROUPSCALESET44266022-65c3-49c5-92dd-88ffa64f95da
增加或減少 VM 實(shí)例
若要查看規(guī)模集中當(dāng)前包含的實(shí)例數(shù)姆打,請使用az vmss show并查詢 “sku.capacity”:
Azure CLI復(fù)制
azvmssshow\--resource-groupmyResourceGroupScaleSet \--namemyScaleSet \--query[sku.capacity]\--outputtable
然后良姆,可以使用az vmss scale手動增加或減少規(guī)模集中虛擬機(jī)的數(shù)目。 以下示例將規(guī)模集中 VM 的數(shù)目設(shè)置為 5:
Azure CLI復(fù)制
azvmssscale\--resource-groupmyResourceGroupScaleSet \--namemyScaleSet \--new-capacity5
利用自動縮放規(guī)則幔戏,可以定義如何根據(jù)網(wǎng)絡(luò)流量或 CPU 使用率等需求玛追,增加或減少規(guī)模集中 VM 的數(shù)目。 目前闲延,不能在 Azure CLI 2.0 中設(shè)置這些規(guī)則痊剖。 使用Azure 門戶配置自動縮放。
獲取連接信息
若要獲取有關(guān)規(guī)模集中 VM 的連接信息垒玲,請使用az vmss list-instance-connection-info陆馁。 此命令為每個(gè)允許采用 SSH 進(jìn)行連接的 VM 輸出公共 IP 地址和端口:
Azure CLI復(fù)制
azvmsslist-instance-connection-info \--resource-groupmyResourceGroupScaleSet \--namemyScaleSet
將數(shù)據(jù)磁盤與規(guī)模集配合使用
可以創(chuàng)建數(shù)據(jù)磁盤并與規(guī)模集配合使用。 前面的教程介紹了如何管理 Azure 磁盤合愈,其中概述了在數(shù)據(jù)磁盤而非 OS 磁盤上生成應(yīng)用的最佳做法和用于實(shí)現(xiàn)此目的的性能改進(jìn)叮贩。
創(chuàng)建具有數(shù)據(jù)磁盤的規(guī)模集
若要創(chuàng)建規(guī)模集并附加數(shù)據(jù)磁盤,請將--data-disk-sizes-gb參數(shù)添加到az vmss create命令中佛析。 以下示例創(chuàng)建一個(gè)規(guī)模集益老,它具有附加到每個(gè)實(shí)例的 50 GB 數(shù)據(jù)磁盤:
Azure CLI復(fù)制
azvmsscreate\--resource-groupmyResourceGroupScaleSet \--namemyScaleSetDisks \--imageUbuntuLTS \--upgrade-policy-modeautomatic \--custom-datacloud-init.txt \--admin-usernameazureuser \--generate-ssh-keys\--data-disk-sizes-gb50
刪除規(guī)模集中的實(shí)例時(shí),也會刪除所有附加的數(shù)據(jù)磁盤寸莫。
添加數(shù)據(jù)磁盤
若要向規(guī)模集中的實(shí)例添加數(shù)據(jù)磁盤捺萌,請使用az vmss disk attach。 以下示例向每個(gè)實(shí)例添加一個(gè) 50 GB 的磁盤:
Azure CLI復(fù)制
azvmssdiskattach\--resource-groupmyResourceGroupScaleSet \--namemyScaleSet \--size-gb50\--lun2
分離數(shù)據(jù)磁盤
若要刪除附加到規(guī)模集中實(shí)例的數(shù)據(jù)磁盤储狭,請使用az vmss disk detach互婿。 以下示例在 LUN 2 刪除每個(gè)實(shí)例中的數(shù)據(jù)磁盤:
Azure CLI復(fù)制
azvmssdiskdetach\--resource-groupmyResourceGroupScaleSet \--namemyScaleSet \--lun2
后續(xù)步驟
在本教程中,你已創(chuàng)建了一個(gè)虛擬機(jī)規(guī)模集辽狈。 你已了解如何:
使用 cloud-init 創(chuàng)建可縮放的應(yīng)用
創(chuàng)建虛擬機(jī)規(guī)模集
增加或減少規(guī)模集中的實(shí)例數(shù)
查看規(guī)模集實(shí)例的連接信息
在規(guī)模集中使用數(shù)據(jù)磁盤
請繼續(xù)學(xué)習(xí)下一教程慈参,詳細(xì)了解虛擬機(jī)的負(fù)載均衡概念。
立即訪問http://market.azure.cn