在 Linux 上創(chuàng)建虛擬機(jī)規(guī)模集和部署高度可用的應(yīng)用

利用虛擬機(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刮萌,一起剝皮案震驚了整個(gè)濱河市驮配,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖壮锻,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琐旁,死亡現(xiàn)場離奇詭異,居然都是意外死亡猜绣,警方通過查閱死者的電腦和手機(jī)灰殴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掰邢,“玉大人牺陶,你說我怎么就攤上這事±敝” “怎么了掰伸?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怀估。 經(jīng)常有香客問我狮鸭,道長,這世上最難降的妖魔是什么多搀? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任歧蕉,我火速辦了婚禮,結(jié)果婚禮上酗昼,老公的妹妹穿的比我還像新娘廊谓。我一直安慰自己,他們只是感情好麻削,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布蒸痹。 她就那樣靜靜地躺著,像睡著了一般呛哟。 火紅的嫁衣襯著肌膚如雪叠荠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天扫责,我揣著相機(jī)與錄音榛鼎,去河邊找鬼。 笑死鳖孤,一個(gè)胖子當(dāng)著我的面吹牛者娱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苏揣,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼黄鳍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了平匈?” 一聲冷哼從身側(cè)響起框沟,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤藏古,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后忍燥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拧晕,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年梅垄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厂捞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哎甲,死狀恐怖蔫敲,靈堂內(nèi)的尸體忽然破棺而出饲嗽,到底是詐尸還是另有隱情炭玫,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布貌虾,位于F島的核電站吞加,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尽狠。R本人自食惡果不足惜衔憨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望袄膏。 院中可真熱鬧践图,春花似錦、人聲如沸沉馆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斥黑。三九已至揖盘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锌奴,已是汗流浹背兽狭。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹿蜀,地道東北人箕慧。 一個(gè)月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像茴恰,于是被迫代替她去往敵國和親颠焦。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容