Virtuálisgép-méretezési csoport módosítása
Feljegyzés
A dokumentumban felsorolt lépések nagy része egységes vezénylési módot használó virtuálisgép-méretezési csoportokra vonatkozik. Javasoljuk, hogy rugalmas vezénylést használjunk az új számítási feladatokhoz. További információ: Orchesration modes for Virtual Machine Scale Sets in Azure.
Előfordulhat, hogy az alkalmazások teljes életciklusa során módosítania vagy frissítenie kell a virtuálisgép-méretezési csoportot. Ezek a frissítések magukban foglalhatják a méretezési csoport konfigurációjának frissítését vagy az alkalmazás konfigurációjának módosítását. Ez a cikk azt ismerteti, hogyan módosíthatja a meglévő méretezési csoportokat a REST API-k, az Azure PowerShell vagy az Azure CLI használatával.
Alapfogalmak
A méretezési csoport modellje
A méretezési csoportok olyan "méretezési csoportmodellel" rendelkeznek, amely a méretezési csoport kívánt állapotát rögzíti egészként. A méretezési csoport modelljének lekérdezéséhez használhatja a
REST API számítási/virtualmachinescalesetekkel/get a következőképpen:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
Azure PowerShell Get-AzVmss használatával:
Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Az Azure CLI és az az vmss show:
az vmss show --resource-group myResourceGroup --name myScaleSet
A resources.azure.com vagy a nyelvspecifikus Azure SDK-k is használhatók.
A kimenet pontos megjelenítése a parancshoz megadott beállításoktól függ. Az alábbi példa az Azure CLI sűrített mintakimenetét mutatja be:
az vmss show --resource-group myResourceGroup --name myScaleSet
{
"location": "westus",
"overprovision": true,
"plan": null,
"singlePlacementGroup": true,
"sku": {
"additionalProperties": {},
"capacity": 1,
"name": "Standard_D2_v2",
"tier": "Standard"
},
}
Ezek a tulajdonságok a méretezési csoport egészére vonatkoznak.
A méretezési csoport példánynézete
A méretezési csoportok egy "méretezési csoport példánynézetével" is rendelkezik, amely a méretezési csoport aktuális futtatókörnyezeti állapotát rögzíti egészként. A méretezési csoport példánynézetének lekérdezéséhez a következőt használhatja:
REST API compute /virtualmachinescalesets/getinstanceview használatával az alábbiak szerint:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/instanceView?api-version={apiVersion}
Azure PowerShell Get-AzVmss használatával:
Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceView
Azure CLI az vmss get-instance-view használatával:
az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
A resources.azure.com vagy a nyelvspecifikus Azure SDK-k is használhatók
A kimenet pontos megjelenítése a parancshoz megadott beállításoktól függ. Az alábbi példa az Azure CLI sűrített mintakimenetét mutatja be:
$ az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
{
"statuses": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": null,
"time": "{time}"
}
],
"virtualMachine": {
"additionalProperties": {},
"statusesSummary": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"count": 1
}
]
}
}
Ezek a tulajdonságok összefoglalják a méretezési csoportban lévő virtuális gépek aktuális futtatókörnyezeti állapotát, például a méretezési csoportra alkalmazott bővítmények állapotát.
A méretezési csoport virtuálisgép-modell nézete
A méretezési csoport modellnézetéhez hasonlóan a méretezési csoport minden virtuálisgép-példánya saját modellnézettel rendelkezik. Ha egy méretezési csoportban egy adott virtuálisgép-példány modellnézetét szeretné lekérdezni, a következőket használhatja:
REST API számítási/virtualmachinescalesetvms/get a következőképpen:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualmachines/instanceId?api-version={apiVersion}
Azure PowerShell a Get-AzVmssVm használatával:
Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId
Az Azure CLI és az az vmss show:
az vmss show --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
A resources.azure.com vagy az Azure SDK-k is használhatók.
A kimenet pontos megjelenítése a parancshoz megadott beállításoktól függ. Az alábbi példa az Azure CLI sűrített mintakimenetét mutatja be:
$ az vmss show --resource-group myResourceGroup --name myScaleSet
{
"location": "westus",
"name": "{name}",
"sku": {
"name": "Standard_D2_v2",
"tier": "Standard"
},
}
Ezek a tulajdonságok a méretezési csoportban lévő virtuálisgép-példány konfigurációját írják le, nem pedig a méretezési csoport egészének konfigurációját. A méretezési csoport modellje például tulajdonságként van overprovision
megadva, míg a méretezési csoporton belüli virtuálisgép-példány modellje nem. Ez a különbség azért van, mert a túlterjedés a méretezési csoport egészének tulajdonsága, nem pedig a méretezési csoportban lévő egyes virtuálisgép-példányok (a túlterjedéssel kapcsolatos további információkért lásd a méretezési csoportok tervezési szempontjait).
A méretezési csoport virtuálisgép-példányának nézete
A méretezési csoport példánynézetéhez hasonlóan a méretezési csoport minden virtuálisgép-példánya saját példánynézettel rendelkezik. Ha le szeretné kérdezni egy adott virtuálisgép-példány példánynézetét egy méretezési csoportban, a következőket használhatja:
REST API számítási /virtualmachinescalesetvms/getinstanceview használatával az alábbiak szerint:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualmachines/instanceId/instanceView?api-version={apiVersion}
Azure PowerShell a Get-AzVmssVm használatával:
Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId -InstanceView
Azure CLI az vmss get-instance-view használatával
az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
A resources.azure.com vagy az Azure SDK-k is használhatók
A kimenet pontos megjelenítése a parancshoz megadott beállításoktól függ. Az alábbi példa az Azure CLI sűrített mintakimenetét mutatja be:
$ az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
{
"additionalProperties": {
"osName": "ubuntu",
"osVersion": "16.04"
},
"disks": [
{
"name": "{name}",
"statuses": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"time": "{time}"
}
]
}
],
"statuses": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"time": "{time}"
},
{
"additionalProperties": {},
"code": "PowerState/running",
"displayStatus": "VM running"
}
],
"vmAgent": {
"statuses": [
{
"additionalProperties": {},
"code": "ProvisioningState/succeeded",
"displayStatus": "Ready",
"level": "Info",
"message": "Guest Agent is running",
"time": "{time}"
}
],
"vmAgentVersion": "{version}"
},
}
Ezek a tulajdonságok egy méretezési csoportban lévő virtuálisgép-példány aktuális futtatókörnyezeti állapotát írják le, amely magában foglalja a méretezési csoportra alkalmazott bővítményeket is.
Globális méretezési csoport tulajdonságainak frissítése
A globális méretezési csoport tulajdonságának frissítéséhez frissítenie kell a tulajdonságot a méretezési csoport modelljében. Ezt a frissítést a következő módon végezheti el:
REST API számítási/virtualmachinescalesets/createorupdate használatával az alábbiak szerint:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
A globális méretezési csoport tulajdonságainak frissítéséhez a REST API-ból származó tulajdonságokat tartalmazó Resource Manager-sablont helyezhet üzembe.
Azure PowerShell az Update-AzVmss használatával:
Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -VirtualMachineScaleSet {scaleSetConfigPowershellObject}
Az Azure CLI és az az vmss update:
Tulajdonság módosítása:
az vmss update --set {propertyPath}={value}
Objektum hozzáadása egy méretezési csoport listatulajdonságához:
az vmss update --add {propertyPath} {JSONObjectToAdd}
Objektum eltávolítása egy méretezési csoport listatulajdonságából:
az vmss update --remove {propertyPath} {indexToRemove}
Ha korábban telepítette a méretezési csoportot a
az vmss create
paranccsal, újra futtathatja aaz vmss create
parancsot a méretezési csoport frissítéséhez. Győződjön meg arról, hogy aaz vmss create
parancs összes tulajdonsága megegyezik a korábbiakéval, kivéve a módosítani kívánt tulajdonságokat.
A resources.azure.com vagy az Azure SDK-k is használhatók.
A méretezési csoport modelljének frissítése után az új konfiguráció a méretezési csoportban létrehozott összes új virtuális gépre érvényes. A méretezési csoportban lévő meglévő virtuális gépek modelljeit azonban továbbra is naprakészen kell létrehozni a legújabb teljes méretezési csoport modelljével. Az egyes virtuális gépek modelljében egy logikai tulajdonság található, amelynek a neve latestModelApplied
azt jelzi, hogy a virtuális gép naprakész-e a legújabb teljes méretezési csoport modelljével (true
ez azt jelenti, hogy a virtuális gép naprakész a legújabb modellel).
Módosítási korlátozásokkal rendelkező tulajdonságok
Létrehozási idő tulajdonságai
Egyes tulajdonságok csak a méretezési csoport létrehozásakor állíthatók be. Ilyenek például a felügyelt operációsrendszer-lemez tárfióktípusa és a tartalék tartományok.
Tulajdonságok, amelyek csak az aktuális érték alapján módosíthatók
Egyes tulajdonságok módosíthatók, az aktuális értéktől függően kivételekkel. Ezek a tulajdonságok a következők:
- singlePlacementGroup
- alhálózat
- imageReferenceSku
- imageReferenceOffer
- Zónák
1. példa
Ha a méretezési csoportot egy másik operációsrendszer-verzió használatára szeretné frissíteni, egyetlen hívásban kell beállítania az összes frissített tulajdonságot. Ebben a példában az Unbuntu Server 20.04-ről 22.04-re változunk.
az vmss update \
--resource-group myResourceGroup \
--name myScaleSet \
--set virtualMachineProfile.storageProfile.imageReference.offer=0001-com-ubuntu-server-jammy \
--set virtualMachineProfile.storageProfile.imageReference.publisher=Canonical \
--set virtualMachineProfile.storageProfile.imageReference.sku=22_04-lts-gen2 \
--set virtualMachineProfile.storageProfile.imageReference.version=latest
2. példa
Ha a méretezési csoportot egy másik operációsrendszer-verzió használatára szeretné frissíteni, egyetlen hívásban kell beállítania az összes frissített tulajdonságot. Ebben a példában Windows Server 2016-ról Windows Server 2019-re váltunk.
$VMSS = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Set-AzVmssStorageProfile $vmss `
-OsDiskCreateOption "FromImage" `
-ImageReferencePublisher "MicrosoftWindowsServer" `
-ImageReferenceOffer "WindowsServer" `
-ImageReferenceSku "2019-datacenter" `
-ImageReferenceVersion "latest"
Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -VirtualMachineScaleSet $VMSS
A felszabadítást igénylő tulajdonságok módosítása
Egyes tulajdonságok csak bizonyos értékekre módosíthatók, ha a méretezési csoportban lévő virtuális gépek felszabadítva vannak. Ezek a tulajdonságok a következők:
- Termékváltozat neve – Ha az új virtuálisgép-termékváltozat nem támogatott azon a hardveren, amelyen a méretezési csoport jelenleg működik, a termékváltozat nevének módosítása előtt fel kell szabadítania a méretezési csoportban lévő virtuális gépeket. További információkért tekintse meg az Azure-beli virtuális gépek átméretezését.
Virtuálisgép-specifikus frissítések
Bizonyos módosítások bizonyos virtuális gépekre alkalmazhatók a globális méretezési csoport tulajdonságai helyett. Jelenleg az egyetlen támogatott virtuálisgép-specifikus frissítés az adatlemezek csatlakoztatása/leválasztása a méretezési csoportban lévő virtuális gépekhez vagy azokról. Ez a funkció előzetes verzióban érhető el.
Forgatókönyvek
Alkalmazásfrissítések
Ha egy alkalmazás bővítményeken keresztül van üzembe helyezve egy méretezési csoportban, a bővítménykonfiguráció frissítése miatt az alkalmazás a frissítési szabályzatnak megfelelően frissül. Ha például egy egyéni szkriptbővítményben futtatandó szkript új verziójával rendelkezik, frissítheti a fileUris tulajdonságot, hogy az az új szkriptre mutasson. Bizonyos esetekben előfordulhat, hogy a bővítménykonfiguráció változatlansága ellenére is szeretné kényszeríteni a frissítést (például a szkriptet a szkript URI-jának módosítása nélkül frissítette). Ezekben az esetekben a forceUpdateTag módosításával kényszerítheti a frissítést. Az Azure-platform nem értelmezi ezt a tulajdonságot. Ha módosítja az értéket, nincs hatással a bővítmény működésére. A módosítás egyszerűen kényszeríti a bővítmény újrafuttatását. A forceUpdateTagről további információt a bővítmények REST API-dokumentációjában talál. Vegye figyelembe, hogy a forceUpdateTag az összes bővítményhez használható, nem csak az egyéni szkriptbővítményhez.
Az is gyakori, hogy az alkalmazások egyéni rendszerképen keresztül lesznek üzembe helyezve. Ezt a forgatókönyvet a következő szakasz ismerteti.
Operációsrendszer-frissítések
Ha Azure-platformrendszerképeket használ, az imageReference módosításával frissítheti a rendszerképet (további információkért tekintse meg a REST API dokumentációját).
Feljegyzés
A platformrendszerképek esetében gyakori, hogy a rendszerkép referenciaverziójának "legújabb" elemét adja meg. A virtuális gépek létrehozása, vertikális felskálázása és újraimázásakor a rendszer a legújabb elérhető verzióval hozza létre a virtuális gépeket. Ez azonban nem jelenti azt, hogy az operációsrendszer-rendszerkép automatikusan frissül az új rendszerképverziók megjelenésekor. Egy külön funkció automatikus operációsrendszer-frissítéseket biztosít. További információkért tekintse meg az automatikus operációsrendszer-frissítések dokumentációját.
Egyéni rendszerképek használata esetén az imageReference azonosítójának frissítésével frissítheti a képet (további információ: REST API-dokumentáció).
Példák
A méretezési csoport operációsrendszer-lemezképének frissítése
Előfordulhat, hogy olyan méretezési csoport van, amely az Ubuntu LTS 16.04 régi verzióját futtatja. Frissíteni szeretne az Ubuntu LTS 16.04 újabb verziójára, például a 16.04.201801090-es verzióra. A képhivatkozás verziótulajdonsága nem része a listáknak, így közvetlenül módosíthatja ezeket a tulajdonságokat az alábbi parancsok egyikével:
Az Azure PowerShell és az Update-AzVmss az alábbiak szerint történik:
Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -ImageReferenceVersion 16.04.201801090
Az Azure CLI és az az vmss update:
az vmss update --resource-group myResourceGroup --name myScaleSet --set virtualMachineProfile.storageProfile.imageReference.version=16.04.201801090
Másik lehetőségként módosíthatja a méretezési csoport által használt képet. Előfordulhat például, hogy frissíteni vagy módosítani szeretné a méretezési csoport által használt egyéni rendszerképet. A méretezési csoport által használt lemezképet a rendszerkép referencia-azonosító tulajdonságának frissítésével módosíthatja. A képhivatkozás azonosító tulajdonsága nem része a listáknak, így közvetlenül módosíthatja ezt a tulajdonságot az alábbi parancsok egyikével:
Az Azure PowerShell és az Update-AzVmss az alábbiak szerint történik:
Update-AzVmss ` -ResourceGroupName "myResourceGroup" ` -VMScaleSetName "myScaleSet" ` -ImageReferenceId /subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
Az Azure CLI és az az vmss update:
az vmss update \ --resource-group myResourceGroup \ --name myScaleSet \ --set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
A méretezési csoport terheléselosztójának frissítése
Tegyük fel, hogy rendelkezik egy méretezési csoporttal egy Azure Load Balancerrel, és az Azure Load Balancert egy Azure-alkalmazás-átjáróra szeretné cserélni. A méretezési csoportok terheléselosztójának és Application Gateway-tulajdonságai egy lista részei, így a parancsokkal eltávolíthatja vagy hozzáadhat listaelemeket a tulajdonságok közvetlen módosítása helyett:
Azure PowerShell:
# Get the current model of the scale set and store it in a local PowerShell object named $vmss $vmss=Get-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" # Create a local PowerShell object for the new desired IP configuration, which includes the reference to the application gateway $ipconf = New-AzVmssIPConfig -ApplicationGatewayBackendAddressPoolsId /subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendAddressPoolName} -SubnetId $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Subnet.Id -Name $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Name # Replace the existing IP configuration in the local PowerShell object (which contains the references to the current Azure Load Balancer) with the new IP configuration $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0] = $ipconf # Update the model of the scale set with the new configuration in the local PowerShell object Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -virtualMachineScaleSet $vmss
Azure CLI:
# Remove the load balancer backend pool from the scale set model az vmss update --resource-group myResourceGroup --name myScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerBackendAddressPools 0 # Remove the load balancer backend pool from the scale set model; only necessary if you have NAT pools configured on the scale set az vmss update --resource-group myResourceGroup --name myScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerInboundNatPools 0 # Add the application gateway backend pool to the scale set model az vmss update --resource-group myResourceGroup --name myScaleSet --add virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].ApplicationGatewayBackendAddressPools '{"id": "/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendPoolName}"}'
Feljegyzés
Ezek a parancsok feltételezik, hogy a méretezési csoportban csak egy IP-konfiguráció és terheléselosztó található. Ha több van, előfordulhat, hogy nem 0 listaindexet kell használnia.
Következő lépések
Az Azure CLI-vel vagy az Azure PowerShell-lel közös felügyeleti feladatokat is végrehajthat méretezési csoportokon.