日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

在用戶進行大規模擴展的設計和使用中,使用傳統存儲賬號非常不方便,所以我們在生產環境下,推薦用戶使用在中國區新上線的托管磁盤(managed disk)。托管磁盤是將虛擬機的磁盤管理集中交給后臺去做管理,用戶不需要關心磁盤的存儲, IOPS限制,擴展等瑣碎的細節,只需要指定類型,比如高級磁盤或者普通磁盤,剩下的事情交給Azure后臺服務去處理,使用托管磁盤可以讓你在一個訂閱中最大創建10000個磁盤,幾千個虛擬機滿足大部分擴展性應用的。

另外一個VMSS的限制是不能使用數據磁盤,但有些應用設計上在做擴展的時候,需要數據磁盤進行數據存儲,目前在新版本的VMSS中已經支持Data Disk。

假如你有以下相對來講比較復雜的客戶需求,你該如何實現?

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

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

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

    基于該模板,我們需要做一些修改將使用傳統存儲賬號的VMSS轉換為使用Managed Disk和數據磁盤的VMSS 模板,然后再創建擴展集合。

  • 刪除掉無用的存儲變量(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,登陸中國區Azure:

    ?

  • 檢查中國區Compute provider的API版本號:

    az provider show --namespace Microsoft.Compute

    ?

    ?

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

    ?

    ?

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

    ?

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

    ?

  • 刪除VMSS中虛擬機擴展集磁盤部分對于傳統存儲的依賴關系:

    "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中有關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"

    },

  • 為擴展及中的虛擬機添加兩個書磁盤,每個1023GB,注意在一個虛擬機中lun號必須唯一:

    ?

    ?

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

    ?

    ?

    ?

  • 轉載于:https://www.cnblogs.com/cloudapps/p/7364390.html

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。