Etablering av sekvenstillägg i Virtual Machine Scale Sets
Tillägg för virtuella Azure-datorer ger funktioner som konfiguration och hantering efter distributionen, övervakning, säkerhet med mera. Produktionsdistributioner använder vanligtvis en kombination av flera tillägg som konfigurerats för de virtuella datorinstanserna för att uppnå önskat resultat.
När du använder flera tillägg på en virtuell dator är det viktigt att se till att tillägg som kräver samma OS-resurser inte försöker hämta dessa resurser samtidigt. Vissa tillägg är också beroende av andra tillägg för att tillhandahålla nödvändiga konfigurationer, till exempel miljöinställningar och hemligheter. Utan rätt ordning och sekvensering på plats kan beroende tilläggsdistributioner misslyckas.
Den här artikeln beskriver hur du kan sekvenstillägg som ska konfigureras för de virtuella datorinstanserna i Virtual Machine Scale Sets.
Förutsättningar
Den här artikeln förutsätter att du är bekant med:
- Tillägg för virtuella Azure-datorer
- Ändra Virtual Machine Scale Sets
När tilläggssekvensering ska användas
Sekvenseringstillägg i inte obligatoriskt för skalningsuppsättningar, och om inget annat anges kan tillägg etableras på en skalningsuppsättningsinstans i valfri ordning.
Om din skalningsuppsättningsmodell till exempel har två tillägg – ExtensionA och ExtensionB – angivna i modellen kan någon av följande etableringssekvenser inträffa:
- ExtensionA –> ExtensionB
- ExtensionB –> ExtensionA
Om programmet kräver att tillägg A alltid etableras före tillägg B bör du använda tilläggssekvensering enligt beskrivningen i den här artikeln. Med tilläggssekvensering sker nu bara en sekvens:
- ExtensionA – > ExtensionB
Tillägg som inte anges i en definierad etableringssekvens kan etableras när som helst, inklusive före, efter eller under en definierad sekvens. Tilläggssekvensering anger bara att ett specifikt tillägg etableras efter ett annat specifikt tillägg. Det påverkar inte etableringen av något annat tillägg som definierats i modellen.
Om din skalningsuppsättningsmodell till exempel har tre tillägg – tillägg A, tillägg B och tillägg C – som anges i modellen och tillägg C är inställt på att etableras efter tillägg A, kan någon av följande etableringssekvenser inträffa:
- ExtensionA –> ExtensionC –> ExtensionB
- ExtensionB –> ExtensionA –> ExtensionC
- ExtensionA –> ExtensionB –> ExtensionC
Om du behöver se till att inget annat tillägg etableras medan den definierade tilläggssekvensen körs rekommenderar vi att du sekvenserar alla tillägg i skalningsuppsättningsmodellen. I exemplet ovan kan tillägg B ställas in så att det etableras efter tillägg C så att endast en sekvens kan inträffa:
- ExtensionA –> ExtensionC –> ExtensionB
Så här använder du tilläggssekvensering
Om du vill etablera sekvenstillägg måste du uppdatera tilläggsdefinitionen i skalningsuppsättningsmodellen så att den innehåller egenskapen "provisionAfterExtensions", som accepterar en matris med tilläggsnamn. Tilläggen som anges i egenskapsmatrisvärdet måste vara helt definierade i skalningsuppsättningsmodellen.
Malldistribution
I följande exempel definieras en mall där skalningsuppsättningen har tre tillägg – ExtensionA, ExtensionB och ExtensionC – så att tillägg etableras i följande ordning:
- 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"
}
}
]
}
}
Eftersom egenskapen "provisionAfterExtensions" accepterar en matris med tilläggsnamn kan exemplet ovan ändras så att ExtensionC etableras efter ExtensionA och ExtensionB, men ingen ordning krävs mellan ExtensionA och ExtensionB. Följande mall kan användas för att uppnå det här scenariot:
"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
I följande exempel läggs ett nytt tillägg med namnet ExtensionC till en skalningsuppsättningsmodell. ExtensionC har beroenden för ExtensionA och ExtensionB, som redan har definierats i skalningsuppsättningsmodellen.
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"
}
}
Om ExtensionC definierades tidigare i skalningsuppsättningsmodellen och du nu vill lägga till dess beroenden kan du köra en PATCH
för att redigera egenskaperna för det redan distribuerade tillägget.
PATCH on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/ExtensionC?api-version=2018-10-01`
{
"properties": {
"provisionAfterExtensions": [
"ExtensionA","ExtensionB"
]
}
}
Ändringar i befintliga skalningsuppsättningsinstanser tillämpas vid nästa uppgradering.
Azure PowerShell
Använd cmdleten Add-AzVmssExtension för att lägga till Application Health-tillägget i skalningsuppsättningsmodelldefinitionen. Tilläggssekvensering kräver användning av Az PowerShell 1.2.0 eller senare.
I följande exempel läggs tillägget Application Health till extensionProfile
i en skalningsuppsättningsmodell för en Windows-baserad skalningsuppsättning. Application Health-tillägget etableras när det anpassade skripttillägget har etablerats, som redan har definierats i skalningsuppsättningen.
# 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
Använd az vmss extension set för att lägga till Application Health-tillägget i skalningsuppsättningsmodelldefinitionen. Tilläggssekvensering kräver användning av Azure CLI 2.0.55 eller senare.
I följande exempel läggs tillägget Application Health till skalningsuppsättningsmodellen för en Windows-baserad skalningsuppsättning. Application Health-tillägget etableras när det anpassade skripttillägget har etablerats, som redan har definierats i skalningsuppsättningen.
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
Felsöka
Kan du inte lägga till tillägg med beroenden?
- Kontrollera att tilläggen som anges i provisionAfterExtensions definieras i skalningsuppsättningsmodellen.
- Se till att det inte finns några cirkulära beroenden som introduceras. Följande sekvens är till exempel inte tillåten: ExtensionA –> ExtensionB –> ExtensionC –> ExtensionA
- Se till att alla tillägg som du använder beroenden på har egenskapen "inställningar" under tillägget "properties". Om Till exempel ExtentionB måste etableras efter ExtensionA måste ExtensionA ha fältet "inställningar" under ExtensionA "properties". Du kan ange en tom egenskap för "inställningar" om tillägget inte kräver några nödvändiga inställningar.
Kan du inte ta bort tillägg?
Se till att tilläggen som tas bort inte visas under provisionAfterExtensions för andra tillägg.
Nästa steg
Lär dig hur du distribuerar ditt program på Virtual Machine Scale Sets.