Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W całym cyklu życia aplikacji może być konieczne zmodyfikowanie lub zaktualizowanie zestawu skalowania maszyn wirtualnych. Te aktualizacje mogą obejmować sposób aktualizowania konfiguracji zestawu skalowania lub zmiany konfiguracji aplikacji. W tym artykule opisano sposób modyfikowania istniejącego zestawu skalowania przy użyciu interfejsu wiersza polecenia platformy Azure.
Poniżej deklarujemy zmienne środowiskowe, które będą używane w tym dokumencie. Sufiks losowy jest dołączany do nazw zasobów, które muszą być unikatowe dla każdego wdrożenia. Parametr REGION
ma wartość WestUS2.
Konfigurowanie grupy zasobów
Przed kontynuowaniem upewnij się, że grupa zasobów istnieje. Ten krok tworzy grupę zasobów, jeśli jeszcze nie istnieje.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_SUFFIX"
export REGION="WestUS2"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx",
"location": "WestUS2",
"managedBy": null,
"name": "myResourceGroupxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Tworzenie zestawu skalowania maszyn wirtualnych
Aby zapewnić, że kolejne polecenia aktualizacji i zapytań mają prawidłowy zasób do działania, utwórz skalowalny zestaw maszyn wirtualnych. W tym kroku wdrożymy podstawowy zestaw skalowania używając właściwego obrazu (Ubuntu2204) i ustawimy liczbę wystąpień na 5, aby aktualizacje dotyczące konkretnego wystąpienia mogły być przeznaczone dla istniejącego identyfikatora wystąpienia.
export SCALE_SET_NAME="myScaleSet$RANDOM_SUFFIX"
az vmss create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--image Ubuntu2204 \
--upgrade-policy-mode manual \
--instance-count 5 \
--admin-username azureuser \
--generate-ssh-keys
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSetxxx",
"location": "WestUS2",
"name": "myScaleSetxxx",
"provisioningState": "Succeeded"
}
Aktualizowanie modelu zestawu skalowania
Zestaw skalowania ma "model zestawu skalowania", który odzwierciedla żądany stan zestawu skalowania jako całości. Aby wykonać zapytanie do modelu dla zestawu skalowania, użyj az vmss show:
az vmss show --resource-group $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME
Dokładna prezentacja danych wyjściowych zależy od opcji, które podajesz do polecenia. W poniższym przykładzie przedstawiono skrócone przykładowe dane wyjściowe z interfejsu wiersza polecenia platformy Azure:
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSetxxx",
"location": "WestUS2",
"name": "myScaleSetxxx",
"orchestrationMode": "Flexible",
"platformFaultDomainCount": 1,
"resourceGroup": "myResourceGroupxxx",
"sku": {
"capacity": 5,
"name": "Standard_DS1_v2",
"tier": "Standard"
},
"timeCreated": "2022-11-29T22:16:43.250912+00:00",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"networkProfile": {
"networkApiVersion": "2020-11-01",
"networkInterfaceConfigurations": [
{
"deleteOption": "Delete",
"disableTcpStateTracking": false,
"dnsSettings": {
"dnsServers": []
},
"enableIpForwarding": false,
"ipConfigurations": [
{
"applicationGatewayBackendAddressPools": [],
"applicationSecurityGroups": [],
"loadBalancerBackendAddressPools": [
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/loadBalancers/myScaleSetLB/backendAddressPools/myScaleSetLBBEPool",
"resourceGroup": "myResourceGroupxxx"
}
],
"name": "mysca2215IPConfig",
"privateIpAddressVersion": "IPv4",
"subnet": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/virtualNetworks/myScaleSetVNET/subnets/myScaleSetSubnet",
"resourceGroup": "myResourceGroupxxx"
}
}
],
"name": "mysca2215Nic",
"networkSecurityGroup": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/networkSecurityGroups/myScaleSetNSG",
"resourceGroup": "myResourceGroupxxx"
},
"primary": true
}
]
},
"osProfile": {
"allowExtensionOperations": true,
"computerNamePrefix": "myScaleS",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"enableVmAgentPlatformUpdates": false,
"patchSettings": {
"assessmentMode": "ImageDefault",
"patchMode": "ImageDefault"
},
"provisionVmAgent": true
}
},
"storageProfile": {
"imageReference": {
"offer": "UbuntuServer",
"publisher": "Canonical",
"sku": "22_04-lts",
"version": "latest"
},
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"deleteOption": "Delete",
"diskSizeGb": 30,
"managedDisk": {
"storageAccountType": "Premium_LRS"
},
"osType": "Linux"
}
}
}
Możesz użyć az vmss update do zaktualizowania różnych właściwości zestawu skalowania. Na przykład uaktualnianie typu licencji lub zasad zabezpieczeń wystąpienia VM. Należy pamiętać, że dozwolona wartość typu licencji jest RHEL_BYOS, a nie Windows_Server.
az vmss update --name $SCALE_SET_NAME --resource-group $MY_RESOURCE_GROUP_NAME --license-type RHEL_BYOS
export INSTANCE_ID=$(az vmss list-instances \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--query "[0].instanceId" \
-o tsv)
az vmss update \
--name $SCALE_SET_NAME \
--resource-group $MY_RESOURCE_GROUP_NAME \
--instance-id "$INSTANCE_ID" \
--protect-from-scale-set-actions False \
--protect-from-scale-in
Ponadto jeśli wcześniej wdrożono zestaw skalowania za pomocą az vmss create
polecenia , możesz uruchomić az vmss create
polecenie ponownie, aby zaktualizować zestaw skalowania. Upewnij się, że wszystkie właściwości w poleceniu są takie same jak poprzednio, z wyjątkiem właściwości, które chcesz zmodyfikować. Na przykład poniżej zwiększamy liczbę wystąpień do pięciu.
Ważne
Od listopada 2023 r. zestawy skalowania maszyn wirtualnych utworzone przy użyciu programu PowerShell i interfejsu wiersza polecenia platformy Azure będą domyślnie ustawiać tryb elastycznej orkiestracji, jeśli nie określono trybu aranżacji. Aby uzyskać więcej informacji na temat tej zmiany i działań, które należy wykonać, odwiedź Istotna zmiana dla klientów PowerShell/CLI usługi VMSS — Microsoft Community Hub
az vmss create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--orchestration-mode flexible \
--image RHELRaw8LVMGen2 \
--admin-username azureuser \
--generate-ssh-keys \
--instance-count 5 \
--os-disk-size-gb 64
Aktualizowanie poszczególnych wystąpień maszyn wirtualnych w zestawie skalowania
Podobnie jak w przypadku widoku modelu zestaw skalowania, każde wystąpienie maszyny wirtualnej w zestawie skalowania ma własny widok modelu. Aby wykonać zapytanie dotyczące widoku modelu dla określonego wystąpienia maszyny wirtualnej w zbiorze skalowania, możesz użyć az vm show.
export INSTANCE_NAME=$(az vmss list-instances \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--query "[0].name" \
-o tsv)
az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $INSTANCE_NAME
Dokładna prezentacja danych wyjściowych zależy od opcji, które podajesz do polecenia. W poniższym przykładzie przedstawiono skrócone przykładowe dane wyjściowe z interfejsu wiersza polecenia platformy Azure:
{
"hardwareProfile": {
"vmSize": "Standard_DS1_v2"
},
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachines/myScaleSet_Instance1",
"location": "WestUS2",
"name": "myScaleSet_Instance1",
"networkProfile": {
"networkInterfaces": [
{
"deleteOption": "Delete",
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-5cf164f7",
"primary": true,
"resourceGroup": "myResourceGroupxxx"
}
]
},
"osProfile": {
"allowExtensionOperations": true,
"computerName": "myScaleset_Computer1",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"enableVmAgentPlatformUpdates": false,
"patchSettings": {
"assessmentMode": "ImageDefault",
"patchMode": "ImageDefault"
},
"provisionVmAgent": true
}
},
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroupxxx",
"storageProfile": {
"dataDisks": [],
"imageReference": {
"exactVersion": "22.04.202204200",
"offer": "0001-com-ubuntu-server-jammy",
"publisher": "Canonical",
"sku": "22_04-lts",
"version": "latest"
},
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"deleteOption": "Delete",
"diskSizeGb": 30,
"managedDisk": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/disks/myScaleSet_Instance1_disk1_xxx",
"resourceGroup": "myResourceGroupxxx",
"storageAccountType": "Premium_LRS"
},
"name": "myScaleSet_Instance1_disk1_xxx",
"osType": "Linux"
}
},
"timeCreated": "2022-11-29T22:16:44.500895+00:00",
"type": "Microsoft.Compute/virtualMachines",
"virtualMachineScaleSet": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSetxxx",
"resourceGroup": "myResourceGroupxxx"
}
}
Te właściwości opisują konfigurację wystąpienia maszyny wirtualnej w zestawie skalowania, a nie konfigurację zestawu skalowania jako całości.
Aktualizacje poszczególnych wystąpień maszyn wirtualnych można wykonywać w zestawie skalowania tak samo jak w przypadku samodzielnej maszyny wirtualnej. Na przykład dołączenie nowego dysku danych do wystąpienia 1:
az vm disk attach --resource-group $MY_RESOURCE_GROUP_NAME --vm-name $INSTANCE_NAME --name disk_name1 --new
Po ponownym uruchomieniu polecenia az vm show widać, że instancja maszyny wirtualnej ma dołączony nowy dysk.
{
"storageProfile": {
"dataDisks": [
{
"caching": "None",
"createOption": "Empty",
"deleteOption": "Detach",
"diskSizeGb": 1023,
"lun": 0,
"managedDisk": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/disks/disk_name1",
"resourceGroup": "myResourceGroupxxx",
"storageAccountType": "Premium_LRS"
},
"name": "disk_name1",
"toBeDetached": false
}
]
}
}
Dodawanie wystąpienia do zestawu skalowania
Czasami możesz dodać nową maszynę wirtualną do zestawu skalowania, ale chcesz użyć różnych opcji konfiguracji niż te wymienione w modelu zestawu skalowania. Maszyny wirtualne można dodać do zestawu skalowania podczas tworzenia za pomocą polecenia az vm create i określić nazwę zestawu skalowania, do którego ma zostać dodane wystąpienie.
export NEW_INSTANCE_NAME="myNewInstance$RANDOM_SUFFIX"
az vm create --name $NEW_INSTANCE_NAME --resource-group $MY_RESOURCE_GROUP_NAME --vmss $SCALE_SET_NAME --image RHELRaw8LVMGen2
{
"fqdns": "",
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachines/myNewInstancexxx",
"location": "WestUS2",
"macAddress": "60-45-BD-D7-13-DD",
"powerState": "VM running",
"privateIpAddress": "10.0.0.6",
"publicIpAddress": "20.172.144.96",
"resourceGroup": "myResourceGroupxxx",
"zones": ""
}
Jeśli sprawdzimy nasz zestaw skalowania, zobaczymy dodane nowe wystąpienie.
az vm list --resource-group $MY_RESOURCE_GROUP_NAME --output table
Name ResourceGroup Location
-------------------- --------------- ----------
myNewInstancexxx myResourceGroupxxx WestUS2
myScaleSet_Instance1 myResourceGroupxxx WestUS2
myScaleSet_Instance1 myResourceGroupxxx WestUS2
Uaktualnij maszyny wirtualne up-todo najnowszego modelu zestawu skalowania.
Uwaga / Notatka
Tryby uaktualniania nie są obecnie obsługiwane w zestawach skalowania maszyn wirtualnych przy użyciu elastycznego trybu orkiestracji.
Zestawy skalowania mają "zasady uaktualniania", które określają, w jaki sposób maszyny wirtualne są wprowadzane up-to-date z najnowszym modelem zestawu skalowania. Trzy tryby zasad uaktualniania to:
- Automatyczne — Ten tryb nie gwarantuje, w jakiej kolejności zestaw skalowania będzie wyłączał maszyny wirtualne. Zestaw skalowania może jednocześnie wyłączyć wszystkie maszyny wirtualne.
- Stopniowe — w tym trybie zestaw skalowania wdraża aktualizację w partiach z opcjonalnym czasem wstrzymania między partiami.
- Ręczne — w tym trybie po zaktualizowaniu modelu zestawu skalowania nic się nie dzieje z istniejącymi maszynami wirtualnymi, dopóki nie zostanie wywołana ręczna aktualizacja.
Jeśli zestaw skalowania jest ustawiony na uaktualnienia ręczne, możesz wyzwolić uaktualnienie ręczne przy użyciu polecenia az vmss update.
az vmss update --resource-group $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME
Uwaga / Notatka
Klastry usługi Service Fabric mogą używać tylko trybu automatycznego , ale aktualizacja jest obsługiwana inaczej. Aby uzyskać więcej informacji, zobacz Uaktualnianie aplikacji usługi Service Fabric.
Ponowne tworzenie obrazu zestawu skalowania
Zestawy skalowania maszyn wirtualnych wygenerują unikatową nazwę dla każdej maszyny wirtualnej w zestawie skalowania. Konwencja nazewnictwa różni się w zależności od trybu aranżacji:
- Tryb elastycznej orkiestracji: {scale-set-name}_{8-char-guid}
- Tryb orkiestracji jednolitej: {scale-set-name}_{instance-id}
W przypadkach, w których trzeba odtworzyć określone wystąpienie, użyj polecenia az vmss reimage i określ identyfikator wystąpienia. Inną opcją jest użycie polecenia az vm redeploy w celu bezpośredniego odtworzenia maszyny wirtualnej. To polecenie jest przydatne, jeśli chcesz odtworzyć obraz maszyny wirtualnej bez konieczności określania identyfikatora wystąpienia.
# Get the VM name first
VM_NAME=$(az vmss list-instances \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--query "[0].name" \
-o tsv)
# Reimage the VM directly
az vm redeploy \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $VM_NAME
Zaktualizuj obraz systemu operacyjnego dla zestawu skalowania
Być może masz zestaw skalowania z starą wersją systemu Ubuntu. Chcesz zaktualizować do nowszej wersji systemu Ubuntu, takiej jak najnowsza wersja. Właściwość wersji odwołania do obrazu nie jest częścią listy, więc można bezpośrednio modyfikować te właściwości przy użyciu polecenia az vmss update.
az vmss update --resource-group $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME --set virtualMachineProfile.storageProfile.imageReference.version=latest
Alternatywnie możesz zmienić obraz używany przez zestaw skalowania. Na przykład możesz zaktualizować lub zmienić obraz niestandardowy używany przez zestaw skalowania. Obraz używany przez zestaw skalowania można zmienić, aktualizując właściwość identyfikatora odwołania do obrazu. Właściwość identyfikatora odwołania do obrazu nie jest częścią listy, więc możesz bezpośrednio zmodyfikować tę właściwość przy użyciu polecenia az vmss update.
Jeśli używasz obrazów platformy Azure, możesz zaktualizować obraz, modyfikując obrazReference (więcej informacji można znaleźć w dokumentacji interfejsu API REST).
Uwaga / Notatka
W przypadku obrazów platformy często określa się "najnowszą" wersję referencyjną obrazu. Podczas tworzenia, ponownego obrazu systemu operacyjnego i skalowania w poziomie maszyny wirtualne są tworzone z najnowszą dostępną wersją. Nie oznacza to jednak, że obraz systemu operacyjnego jest automatycznie aktualizowany wraz z pojawianiem się nowych wersji obrazów. Osobna funkcja zapewnia automatyczne uaktualnienia systemu operacyjnego. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dotyczącą automatycznych aktualizacji systemu operacyjnego.
Jeśli używasz niestandardowych obrazów, możesz zaktualizować obraz, aktualizując identyfikator imageReference (więcej informacji znajduje się w dokumentacji API REST).
Aktualizowanie modułu równoważenia obciążenia dla zestawu skalowania
Załóżmy, że masz zestaw skalujący z Azure Load Balancer i chcesz zamienić go na Bramę aplikacyjną Azure. Właściwości modułu równoważenia obciążenia i usługi Application Gateway dla zestawu skalowania są częścią listy, dlatego możesz użyć poleceń do usunięcia lub dodania elementów listy zamiast bezpośrednio modyfikować właściwości.
# Remove the load balancer backend pool from the scale set model
az vmss update --resource-group $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME --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 $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME --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 $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME --add virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].ApplicationGatewayBackendAddressPools '{"id": "/subscriptions/xxxxx/resourceGroups/'$MY_RESOURCE_GROUP_NAME'/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendPoolName}"}'
Uwaga / Notatka
Te polecenia zakładają, że w zestawie skalowania istnieje tylko jedna konfiguracja adresu IP i moduł równoważenia obciążenia. Jeśli jest ich wiele, może być konieczne użycie indeksu listy innego niż 0.
Dalsze kroki
W tym samouczku przedstawiono sposób modyfikowania różnych aspektów zestawu skalowania i poszczególnych wystąpień.
- Aktualizowanie modelu zestawu skalowania
- Aktualizowanie pojedynczego wystąpienia maszyny wirtualnej w zestawie skalowania
- Dodaj wystąpienie do zestawu skalowania
- Uaktualnij maszyny wirtualne up-todo najnowszego modelu zestawu skalowania.
- Ponowne tworzenie obrazu zestawu skalowania
- Zaktualizuj obraz systemu operacyjnego dla zestawu skalowania
- Aktualizowanie modułu równoważenia obciążenia dla zestawu skalowania