日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

VMSS上用Managed Disk和Data Disk进行自动扩展(1)

發(fā)布時間:2025/7/25 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VMSS上用Managed Disk和Data Disk进行自动扩展(1) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

虛擬機(jī)自動擴(kuò)展集(VMSS)是Azure上一個非常強(qiáng)大的功能,在我之前的系列文檔中已經(jīng)做了詳細(xì)的介紹,在此就不贅述了;我同時也提到,在使用Azure傳統(tǒng)存儲賬號的時候,也存在諸多限制,比如你需要計算每個存儲賬號下虛擬機(jī)的數(shù)量以避免IOPS超過性能限制,需要考慮擴(kuò)展集中虛擬機(jī)數(shù)量限制,自定義鏡像的限制等等:

在用戶進(jìn)行大規(guī)模擴(kuò)展的設(shè)計和使用中,使用傳統(tǒng)存儲賬號非常不方便,所以我們在生產(chǎn)環(huán)境下,推薦用戶使用在中國區(qū)新上線的托管磁盤(managed disk)。托管磁盤是將虛擬機(jī)的磁盤管理集中交給后臺去做管理,用戶不需要關(guān)心磁盤的存儲, IOPS限制,擴(kuò)展等瑣碎的細(xì)節(jié),只需要指定類型,比如高級磁盤或者普通磁盤,剩下的事情交給Azure后臺服務(wù)去處理,使用托管磁盤可以讓你在一個訂閱中最大創(chuàng)建10000個磁盤,幾千個虛擬機(jī)滿足大部分?jǐn)U展性應(yīng)用的。

另外一個VMSS的限制是不能使用數(shù)據(jù)磁盤,但有些應(yīng)用設(shè)計上在做擴(kuò)展的時候,需要數(shù)據(jù)磁盤進(jìn)行數(shù)據(jù)存儲,目前在新版本的VMSS中已經(jīng)支持Data Disk。

假如你有以下相對來講比較復(fù)雜的客戶需求,你該如何實現(xiàn)?

  • 虛擬機(jī)按照CPU的負(fù)載自動擴(kuò)展收縮
  • 每個虛擬機(jī)有兩塊數(shù)據(jù)磁盤,并格式化,掛載,可用
  • 可以快速的擴(kuò)展到100臺虛擬機(jī)
  • 快速全自動化部署
  • 可以部署在中國區(qū)的Azure上
  • 這個過程相對來說比較復(fù)雜,本文討論如何基于傳統(tǒng)存儲賬號的VMSS ARM模板進(jìn)行修改,使用磁盤腳本,Azure CLI 2.0進(jìn)行基于管理磁盤和數(shù)據(jù)磁盤的VMSS大規(guī)模部署。

    用于本文的之前介紹的我的Linux VMSS Autoscale 的模板地址如下:

    https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/VMSS-Linux-Autoscale

    基于該模板,我們需要做一些修改將使用傳統(tǒng)存儲賬號的VMSS轉(zhuǎn)換為使用Managed Disk和數(shù)據(jù)磁盤的VMSS 模板,然后再創(chuàng)建擴(kuò)展集合。

  • 刪除掉無用的存儲變量(variables)
  • "storageAccountType": "Standard_LRS",

    "newStorageAccountSuffix": "[concat(variables('namingInfix'), 'sa')]",

    "uniqueStringArray": [

    "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '0')))]",

    "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '1')))]",

    "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '2')))]",

    "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '3')))]",

    "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '4')))]"

    ],

    "vhdContainerName": "[concat(variables('namingInfix'), 'vhd')]",

    "osDiskName": "[concat(variables('namingInfix'), 'osdisk')]",

    "saCount": "[length(variables('uniqueStringArray'))]",

  • VMSS上支持Managed Disk是在ARM Compute資源管理器的API version 2016-04-30-preview以后才支持的,我們需要確保中國的Azure上面API的版本是可用的,首先安裝Azure CLI 2.0,登陸中國區(qū)Azure:

    ?

  • 檢查中國區(qū)Compute provider的API版本號:

    az provider show --namespace Microsoft.Compute

    ?

    ?

    可以看到虛擬機(jī)擴(kuò)展集合和虛擬機(jī)都支持"2016-04-30-preview","2016-08-30","2017-03-30"等多個版本號,而Insight provider的Autoscalesetting最高支持"2015-04-01"這個版本:

    ?

    ?

  • 然后我們來修改API的version,之前的模板API version比較老,我建議修改成相對最新的版本,我修改的版本如下:

    ?

  • 需要注意的是,我們雖然對于所有虛擬機(jī)的磁盤不再需要傳統(tǒng)存儲賬號進(jìn)行管理,但對于存儲LinuxDiag的診斷信息,我們依然需要Azure Storage Table來進(jìn)行存儲,因此上resource上的storage部分的定義只需要定義diagnostic storage account即可:

    ?

  • 刪除VMSS中虛擬機(jī)擴(kuò)展集磁盤部分對于傳統(tǒng)存儲的依賴關(guān)系:

    "type": "Microsoft.Compute/virtualMachineScaleSets",

    "name": "[variables('namingInfix')]",

    "location": "[resourceGroup().location]",

    "apiVersion": "[variables('computeApiVersion')]",

    "dependsOn": [

    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray')[0], variables('newStorageAccountSuffix'))]",

    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray')[1], variables('newStorageAccountSuffix'))]",

    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray')[2], variables('newStorageAccountSuffix'))]",

    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray')[3], variables('newStorageAccountSuffix'))]",

    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray')[4], variables('newStorageAccountSuffix'))]",

    "[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]",

    "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]"

    ?

  • 同時刪除OSDisk中有關(guān)Container的配置,這部分都會由Managed Disk來管理:

    "osDisk": {

    "vhdContainers": [

    "[concat('https://', variables('uniqueStringArray')[0], variables('newStorageAccountSuffix'), '.blob.core.chinacloudapi.cn/', variables('vhdContainerName'))]",

    "[concat('https://', variables('uniqueStringArray')[1], variables('newStorageAccountSuffix'), '.blob.core.chinacloudapi.cn/', variables('vhdContainerName'))]",

    "[concat('https://', variables('uniqueStringArray')[2], variables('newStorageAccountSuffix'), '.blob.core.chinacloudapi.cn/', variables('vhdContainerName'))]",

    "[concat('https://', variables('uniqueStringArray')[3], variables('newStorageAccountSuffix'), '.blob.core.chinacloudapi.cn/', variables('vhdContainerName'))]",

    "[concat('https://', variables('uniqueStringArray')[4], variables('newStorageAccountSuffix'), '.blob.core.chinacloudapi.cn/', variables('vhdContainerName'))]"

    ],

    "name": "[variables('osDiskName')]",

    "caching": "ReadOnly",

    "createOption": "FromImage"

    },

  • 為擴(kuò)展及中的虛擬機(jī)添加兩個書磁盤,每個1023GB,注意在一個虛擬機(jī)中l(wèi)un號必須唯一:

    ?

    ?

  • 修改模板的最后一步,也是很重要的一步,就是你在加載了數(shù)據(jù)磁盤給Linux虛擬機(jī)以后,其實是無法直接使用的, 你需要分區(qū),格式化,掛載才能使用,這部分實際是需要客戶自己寫代碼和腳本完成的,不用擔(dān)心,我已經(jīng)寫了一個腳本,來自動化完成這個工作,腳本已經(jīng)放在Github上了,需要在模板中添加定制化腳本運行部分:

    ?

    ?

    ?

  • 轉(zhuǎn)載于:https://www.cnblogs.com/cloudapps/p/7364390.html

    總結(jié)

    以上是生活随笔為你收集整理的VMSS上用Managed Disk和Data Disk进行自动扩展(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。