Szekvenciabővítmény üzembe helyezése Virtual Machine Scale Sets

Az Azure-beli virtuálisgép-bővítmények olyan képességeket biztosítanak, mint az üzembe helyezés utáni konfiguráció és felügyelet, a monitorozás, a biztonság és egyebek. Az éles környezetek általában a virtuálisgép-példányokhoz konfigurált több bővítmény kombinációját használják a kívánt eredmények eléréséhez.

Ha több bővítményt használ egy virtuális gépen, fontos meggyőződni arról, hogy az azonos operációsrendszer-erőforrásokat igénylő bővítmények nem próbálják egyidejűleg beszerezni ezeket az erőforrásokat. Egyes bővítmények más bővítményeken is alapulnak a szükséges konfigurációk, például a környezeti beállítások és a titkos kódok biztosításához. A megfelelő sorrend és sorrend megadása nélkül a függő bővítmények üzembe helyezése meghiúsulhat.

Ez a cikk azt ismerteti, hogyan konfigurálhatók a bővítmények a virtuálisgép-példányokhoz a Virtual Machine Scale Sets.

Előfeltételek

Ez a cikk a következőket feltételezi:

Mikor érdemes bővítményszekvenálást használni?

A méretezési csoportok esetében nem kötelező a bővítmények szekvenálása, és ha nincs megadva, a bővítmények bármilyen sorrendben kiépíthetők egy méretezésicsoport-példányon.

Ha például a méretezési csoport modellje két bővítményt (ExtensionA és ExtensionB) határoz meg a modellben, akkor a következő kiépítési sorozatok valamelyike fordulhat elő:

  • ExtensionA –> ExtensionB
  • ExtensionB –> ExtensionA

Ha az alkalmazás megköveteli, hogy az A bővítmény mindig a B bővítmény előtt legyen kiépítve, akkor a bővítmények sorrendbe állítását az ebben a cikkben leírtak szerint kell használnia. A bővítmények sorrendbe állításával most csak egy sorozat fog történni:

  • ExtensionA – > ExtensionB

A definiált kiépítési sorrendben nem megadott bővítmények bármikor kiépíthatók, beleértve a megadott sorrend előtt, után vagy alatt is. A bővítmények sorrendje csak azt határozza meg, hogy egy adott bővítmény egy másik bővítmény után lesz kiépítve. Ez nem befolyásolja a modellben definiált egyéb bővítmények kiépítését.

Ha például a méretezési csoport modellje három bővítményt (A bővítmény, B bővítmény és C kiterjesztés) ad meg a modellben, és a C bővítmény az A bővítmény után lesz kiépítve, akkor az alábbi kiépítési sorozatok bármelyike történhet:

  • ExtensionA –> ExtensionC –> ExtensionB
  • ExtensionB –> ExtensionA –> ExtensionC
  • ExtensionA –> ExtensionB –> ExtensionC

Ha gondoskodnia kell arról, hogy a megadott bővítményütemezés végrehajtása közben ne legyen más bővítmény kiépítve, javasoljuk, hogy a méretezési csoport modelljében minden bővítményt szekvenáljon. A fenti példában a B bővítmény úgy állítható be, hogy a C bővítmény után legyen kiépítve, így csak egy sorozat fordulhat elő:

  • ExtensionA –> ExtensionC –> ExtensionB

Bővítmények sorrendbe állításának használata

A bővítmények kiépítésének sorrendbe állításához frissítenie kell a bővítménydefiníciót a méretezési csoport modelljében, hogy tartalmazza a "provisionAfterExtensions" tulajdonságot, amely elfogadja a bővítménynevek tömböt. A tulajdonságtömbértékben említett bővítményeket teljes mértékben definiálni kell a méretezési csoport modelljében.

Sablon üzembe helyezése

Az alábbi példa egy sablont határoz meg, amelyben a méretezési csoport három bővítménnyel rendelkezik ( ExtensionA, ExtensionB és ExtensionC ), hogy a bővítmények a sorrendben legyenek kiépítve:

  • ExtensionA –> ExtensionB –> ExtensionC
"virtualMachineProfile": {
  "extensionProfile": {
    "extensions": [
      {
        "name": "ExtensionA",
        "properties": {
          "publisher": "ExtensionA.Publisher",
          "settings": {},
          "typeHandlerVersion": "1.0",
          "autoUpgradeMinorVersion": true,
          "type": "ExtensionA"
        }
      },
      {
        "name": "ExtensionB",
        "properties": {
          "provisionAfterExtensions": [
            "ExtensionA"
          ],
          "publisher": "ExtensionB.Publisher",
          "settings": {},
          "typeHandlerVersion": "2.0",
          "autoUpgradeMinorVersion": true,
          "type": "ExtensionB"
        }
      }, 
      {
        "name": "ExtensionC",
        "properties": {
          "provisionAfterExtensions": [
            "ExtensionB"
          ],
          "publisher": "ExtensionC.Publisher",
          "settings": {},
          "typeHandlerVersion": "3.0",
          "autoUpgradeMinorVersion": true,
          "type": "ExtensionC"                   
        }
      }
    ]
  }
}

Mivel a "provisionAfterExtensions" tulajdonság a bővítménynevek tömböt fogad el, a fenti példa módosítható úgy, hogy az ExtensionC az ExtensionA és az ExtensionB után legyen kiépítve, de az ExtensionA és az ExtensionB között nincs szükség rendezésre. Ehhez a forgatókönyvhöz a következő sablon használható:

"virtualMachineProfile": {
  "extensionProfile": {
    "extensions": [
      {
        "name": "ExtensionA",
        "properties": {
          "publisher": "ExtensionA.Publisher",
          "settings": {},
          "typeHandlerVersion": "1.0",
          "autoUpgradeMinorVersion": true,
          "type": "ExtensionA"
        }
      },
      {
        "name": "ExtensionB",
        "properties": {
          "publisher": "ExtensionB.Publisher",
          "settings": {},
          "typeHandlerVersion": "2.0",
          "autoUpgradeMinorVersion": true,
          "type": "ExtensionB"
        }
      }, 
      {
        "name": "ExtensionC",
        "properties": {
          "provisionAfterExtensions": [
            "ExtensionA","ExtensionB"
          ],
          "publisher": "ExtensionC.Publisher",
          "settings": {},
          "typeHandlerVersion": "3.0",
          "autoUpgradeMinorVersion": true,
          "type": "ExtensionC"                   
        }
      }
    ]
  }
}

REST API

Az alábbi példa egy ExtensionC nevű új bővítményt ad hozzá egy méretezésicsoport-modellhez. Az ExtensionC függőségekkel rendelkezik az ExtensionA-ra és az ExtensionB-re, amelyek már definiálva vannak a méretezési csoport modelljében.

PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/ExtensionC?api-version=2018-10-01`
{ 
  "name": "ExtensionC",
  "properties": {
    "provisionAfterExtensions": [
      "ExtensionA","ExtensionB"
    ],
    "publisher": "ExtensionC.Publisher",
    "settings": {},
    "typeHandlerVersion": "3.0",
    "autoUpgradeMinorVersion": true,
    "type": "ExtensionC" 
  }                  
}

Ha az ExtensionC korábban lett definiálva a méretezési csoport modelljében, és most hozzá szeretné adni a függőségeit, végrehajthat egy PATCH elemet a már üzembe helyezett bővítmény tulajdonságainak szerkesztéséhez.

PATCH on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/ExtensionC?api-version=2018-10-01`
{ 
  "properties": {
    "provisionAfterExtensions": [
      "ExtensionA","ExtensionB"
    ]
  }                  
}

A meglévő méretezésicsoport-példányok módosításai a következő frissítéskor lesznek alkalmazva.

Azure PowerShell

Az Add-AzVmssExtension parancsmaggal adja hozzá az Application Health bővítményt a méretezési csoport modelldefiníciójához. A bővítmények szekvenálásához az Az PowerShell 1.2.0-s vagy újabb verziója szükséges.

Az alábbi példa hozzáadja az Application Health bővítményt egy extensionProfile Windows-alapú méretezési csoport méretezési csoportjának modelljéhez. Az Application Health bővítmény a méretezési csoportban már definiált egyéni szkriptbővítmény kiépítése után lesz kiépítve.

# Define the scale set variables
$vmScaleSetName = "myVMScaleSet"
$vmScaleSetResourceGroup = "myVMScaleSetResourceGroup"

# Define the Application Health extension properties
$publicConfig = @{"protocol" = "http"; "port" = 80; "requestPath" = "/healthEndpoint"};
$extensionName = "myHealthExtension"
$extensionType = "ApplicationHealthWindows"
$publisher = "Microsoft.ManagedServices"

# Get the scale set object
$vmScaleSet = Get-AzVmss `
  -ResourceGroupName $vmScaleSetResourceGroup `
  -VMScaleSetName $vmScaleSetName

# Add the Application Health extension to the scale set model
Add-AzVmssExtension -VirtualMachineScaleSet $vmScaleSet `
  -Name $extensionName `
  -Publisher $publisher `
  -Setting $publicConfig `
  -Type $extensionType `
  -TypeHandlerVersion "1.0" `
  -ProvisionAfterExtension "CustomScriptExtension" `
  -AutoUpgradeMinorVersion $True

# Update the scale set
Update-AzVmss -ResourceGroupName $vmScaleSetResourceGroup `
  -Name $vmScaleSetName `
  -VirtualMachineScaleSet $vmScaleSet

Azure CLI 2.0

Az az vmss extension set használatával adja hozzá az Application Health bővítményt a méretezési csoport modelldefinícióhoz. A bővítmények sorrendbe állításához az Azure CLI 2.0.55-ös vagy újabb verziója szükséges.

Az alábbi példa hozzáadja az Application Health bővítményt egy Windows-alapú méretezési csoport méretezésicsoport-modelljéhez. Az Application Health bővítmény a méretezési csoportban már definiált egyéni szkriptbővítmény kiépítése után lesz kiépítve.

az vmss extension set \
  --name ApplicationHealthWindows \
  --publisher Microsoft.ManagedServices \
  --version 1.0 \
  --resource-group <myVMScaleSetResourceGroup> \
  --vmss-name <myVMScaleSet> \
  --provision-after-extensions CustomScriptExtension \
  --settings ./extension.json

Hibaelhárítás

Nem tud bővítményt hozzáadni függőségekkel?

  1. Győződjön meg arról, hogy a provisionAfterExtensions paraméterben megadott bővítmények definiálva vannak a méretezési csoport modelljében.
  2. Győződjön meg arról, hogy nincsenek körkörös függőségek. Például a következő sorozat nem engedélyezett: ExtensionA –> ExtensionB –> ExtensionC –> ExtensionA
  3. Győződjön meg arról, hogy a függőségeket használó bővítmények "settings" tulajdonsággal rendelkeznek a "properties" bővítmény alatt. Ha például a ExtentionB-t az ExtensionA után kell kiépíteni, akkor az ExtensionA -nak a "tulajdonságok" területen a "settings" mezővel kell rendelkeznie. Üres "beállítások" tulajdonságot is megadhat, ha a bővítmény nem írja elő a szükséges beállításokat.

Nem tudja eltávolítani a bővítményeket?

Győződjön meg arról, hogy az eltávolított bővítmények nem szerepelnek a provisionAfterExtensions listában más bővítmények esetében.

Következő lépések

Megtudhatja, hogyan helyezheti üzembe alkalmazását Virtual Machine Scale Sets.