Sanal Makine Ölçek Kümesini Değiştirme
Not
Bu belgede listelenen adımların çoğu, Tekdüzen Düzenleme modunu kullanan Sanal Makine Ölçek Kümeleri için geçerlidir. Yeni iş yükleri için Esnek Düzenleme'nin kullanılmasını öneririz. Daha fazla bilgi için bkz. Azure'da Sanal Makine Ölçek Kümeleri için Orchesration modları.
Uygulamalarınızın yaşam döngüsü boyunca Sanal Makine Ölçek Kümenizi değiştirmeniz veya güncelleştirmeniz gerekebilir. Bu güncelleştirmeler, ölçek kümesinin yapılandırmasını güncelleştirmeyi veya uygulama yapılandırmasını değiştirmeyi içerebilir. Bu makalede REST API'leri, Azure PowerShell veya Azure CLI ile mevcut bir ölçek kümesinin nasıl değiştirileceği açıklanır.
Temel kavramlar
Ölçek kümesi modeli
Ölçek kümesinin, ölçek kümesinin istenen durumunu bir bütün olarak yakalayan bir "ölçek kümesi modeli" vardır. Bir ölçek kümesinin modelini sorgulamak için
İşlem/virtualmachinescalesets/get ile REST API aşağıdaki gibi:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
Get-AzVmss ile Azure PowerShell:
Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
az vmss ile Azure CLI şu değerleri gösterir:
az vmss show --resource-group myResourceGroup --name myScaleSet
resources.azure.com veya dile özgü Azure SDK'larını da kullanabilirsiniz.
Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:
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"
},
}
Bu özellikler ölçek kümesine bir bütün olarak uygulanır.
Ölçek kümesi örneği görünümü
Ölçek kümesinin, ölçek kümesinin geçerli çalışma zamanı durumunu bir bütün olarak yakalayan bir "ölçek kümesi örnek görünümü" de vardır. Ölçek kümesinin örnek görünümünü sorgulamak için şunları kullanabilirsiniz:
İşlem/virtualmachinescalesets/getinstanceview ile REST API aşağıdaki gibi:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/instanceView?api-version={apiVersion}
Get-AzVmss ile Azure PowerShell:
Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceView
az vmss get-instance-view ile Azure CLI:
az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
resources.azure.com veya dile özgü Azure SDK'larını da kullanabilirsiniz
Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:
$ 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
}
]
}
}
Bu özellikler ölçek kümesindeki VM'lerin geçerli çalışma zamanı durumunun bir özetini sağlar; örneğin ölçek kümesine uygulanan uzantıların durumu.
Ölçek kümesi VM modeli görünümü
Ölçek kümesinin model görünümüne sahip olmasına benzer şekilde, ölçek kümesindeki her VM örneğinin kendi model görünümü vardır. Ölçek kümesindeki belirli bir VM örneğinin model görünümünü sorgulamak için şunları kullanabilirsiniz:
İşlem/virtualmachinescalesetvms/get ile REST API aşağıdaki gibi:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualmachines/instanceId?api-version={apiVersion}
Get-AzVmssVm ile Azure PowerShell:
Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId
az vmss ile Azure CLI şu değerleri gösterir:
az vmss show --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
resources.azure.com veya Azure SDK'larını da kullanabilirsiniz.
Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:
$ az vmss show --resource-group myResourceGroup --name myScaleSet
{
"location": "westus",
"name": "{name}",
"sku": {
"name": "Standard_D2_v2",
"tier": "Standard"
},
}
Bu özellikler, ölçek kümesinin bir bütün olarak yapılandırılmasını değil, ölçek kümesi içindeki bir VM örneğinin yapılandırmasını açıklar. Örneğin, ölçek kümesi modelinin bir özelliği vardır overprovision
, ancak ölçek kümesi içindeki bir VM örneğinin modeli özelliği yoktur. Bu farkın nedeni, fazla sağlamanın ölçek kümesindeki tek tek VM örnekleri için değil ölçek kümesinin bir bütün olarak bir özelliği olmasıdır (fazla sağlama hakkında daha fazla bilgi için bkz . Ölçek kümeleri için tasarım konuları).
Ölçek kümesi VM örneği görünümü
Ölçek kümesinin örnek görünümüne sahip olmasına benzer şekilde, ölçek kümesindeki her VM örneğinin kendi örnek görünümü vardır. Ölçek kümesi içindeki belirli bir VM örneğinin örnek görünümünü sorgulamak için şunları kullanabilirsiniz:
İşlem/virtualmachinescalesetvms/getinstanceview ile REST API aşağıdaki gibi:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualmachines/instanceId/instanceView?api-version={apiVersion}
Get-AzVmssVm ile Azure PowerShell:
Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId -InstanceView
az vmss get-instance-view ile Azure CLI
az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
resources.azure.com veya Azure SDK'larını da kullanabilirsiniz
Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:
$ 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}"
},
}
Bu özellikler, ölçek kümesine uygulanan uzantıları içeren bir ölçek kümesi içindeki vm örneğinin geçerli çalışma zamanı durumunu açıklar.
Genel ölçek kümesi özelliklerini güncelleştirme
Genel ölçek kümesi özelliğini güncelleştirmek için ölçek kümesi modelindeki özelliği güncelleştirmeniz gerekir. Bu güncelleştirmeyi şu şekilde yapabilirsiniz:
İşlem/virtualmachinescalesets/createorupdate ile REST API aşağıdaki gibi:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
Genel ölçek kümesi özelliklerini güncelleştirmek için REST API'den özellikleri içeren bir Resource Manager şablonu dağıtabilirsiniz.
Update-AzVmss ile Azure PowerShell:
Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -VirtualMachineScaleSet {scaleSetConfigPowershellObject}
az vmss update ile Azure CLI:
Bir özelliği değiştirmek için:
az vmss update --set {propertyPath}={value}
Ölçek kümesindeki bir liste özelliğine nesne eklemek için:
az vmss update --add {propertyPath} {JSONObjectToAdd}
Ölçek kümesindeki bir liste özelliğinden nesne kaldırmak için:
az vmss update --remove {propertyPath} {indexToRemove}
Daha önce ölçek kümesini komutuyla
az vmss create
dağıttıysanız, ölçek kümesini güncelleştirmek için komutunu yeniden çalıştırabilirsinizaz vmss create
. Değiştirmek istediğiniz özellikler dışında, komuttakiaz vmss create
tüm özelliklerin öncekiyle aynı olduğundan emin olun.
resources.azure.com veya Azure SDK'larını da kullanabilirsiniz.
Ölçek kümesi modeli güncelleştirildikten sonra, yeni yapılandırma ölçek kümesinde oluşturulan tüm yeni VM'ler için geçerlidir. Ancak ölçek kümesindeki mevcut VM'lerin modelleri yine de en son genel ölçek kümesi modeliyle güncel hale getirilmelidir. Her VM'nin modelinde, VM'nin en son genel ölçek kümesi modeliyle güncel olup olmadığını belirten adlı latestModelApplied
boole özelliği vardır (true
VM'nin en son modelle güncel olduğu anlamına gelir).
Değişiklik kısıtlamaları olan özellikler
Oluşturma zamanı özellikleri
Bazı özellikler yalnızca ölçek kümesini oluşturduğunuzda ayarlanabilir. Bazı örnekler yönetilen işletim sistemi disk depolama hesabı türü ve hata etki alanlarıdır.
Yalnızca geçerli değere göre değiştirilebilen özellikler
Bazı özellikler, geçerli değere bağlı olarak özel durumlar ile değiştirilebilir. Bu özellikler şunlardır:
- singlePlacementGroup
- alt ağ
- imageReferenceSku
- imageReferenceOffer
- Bölge
Örnek 1
Ölçek kümenizi farklı bir işletim sistemi sürümü kullanacak şekilde güncelleştirmek için tüm güncelleştirilmiş özellikleri tek bir çağrıda ayarlamanız gerekir. Bu örnekte Unbuntu Server 20.04'ten 22.04'e geçiş yapıyoruz.
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
Örnek 2
Ölçek kümenizi farklı bir işletim sistemi sürümü kullanacak şekilde güncelleştirmek için tüm güncelleştirilmiş özellikleri tek bir çağrıda ayarlamanız gerekir. Bu örnekte, Windows Server 2016'dan Windows Server 2019'a geçiş yapıyoruz.
$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
Değiştirilmesi için serbest bırakma gerektiren özellikler
Bazı özellikler yalnızca ölçek kümesindeki VM'ler serbest bırakıldığında belirli değerlerle değiştirilebilir. Bu özellikler şunlardır:
- SKU Adı- Ölçek kümesinin şu anda açık olduğu donanımda yeni VM SKU'su desteklenmiyorsa, SKU adını değiştirmeden önce ölçek kümesindeki VM'leri serbest bırakmanız gerekir. Daha fazla bilgi için bkz . Azure VM'yi yeniden boyutlandırma.
VM'ye özgü güncelleştirmeler
Bazı değişiklikler genel ölçek kümesi özellikleri yerine belirli VM'lere uygulanabilir. Şu anda desteklenen VM'ye özgü tek güncelleştirme, ölçek kümesindeki VM'lere veri diskleri eklemek/kaldırmaktır. Bu özellik, önizleme aşamasındadır.
Senaryolar
Uygulama güncelleştirmeleri
Bir uygulama uzantılar aracılığıyla bir ölçek kümesine dağıtılırsa, uzantı yapılandırmasına yönelik bir güncelleştirme, uygulamanın yükseltme ilkesine uygun olarak güncelleştirilebilir. Örneğin, Özel Betik Uzantısında çalıştırılacak yeni bir betik sürümünüz varsa fileUris özelliğini yeni betiği işaret eden şekilde güncelleştirebilirsiniz. Bazı durumlarda, uzantı yapılandırması değişmemiş olsa bile bir güncelleştirmeyi zorlamak isteyebilirsiniz (örneğin, betiğin URI'sinde değişiklik yapmadan betiği güncelleştirmiş olabilirsiniz). Bu gibi durumlarda, forceUpdateTag'ı güncelleştirmeyi zorlamak için değiştirebilirsiniz. Azure platformu bu özelliği yorumlamaz. Değeri değiştirirseniz, uzantının nasıl çalıştığı üzerinde hiçbir etkisi olmaz. Değişiklik basitçe uzantıyı yeniden çalıştırmaya zorlar. forceUpdateTag hakkında daha fazla bilgi için uzantılar için REST API belgelerine bakın. forceUpdateTag öğesinin yalnızca özel betik uzantısıyla değil tüm uzantılarla kullanılabileceğini unutmayın.
Uygulamaların özel görüntü aracılığıyla dağıtılması da yaygındır. Bu senaryo aşağıdaki bölümde ele alınmıştır.
İşletim Sistemi Güncelleştirmeleri
Azure platform görüntülerini kullanıyorsanız imageReference dosyasını değiştirerek görüntüyü güncelleştirebilirsiniz (daha fazla bilgi için REST API belgelerine bakın).
Not
Platform görüntüleriyle, görüntü başvuru sürümü için "en son" belirtmek yaygın bir durumdur. Vm'leri oluşturduğunuzda, ölçeği genişlettiğiniz ve yeniden oluşturduğunuz zaman en son kullanılabilir sürümle oluşturulur. Ancak, yeni görüntü sürümleri yayımlandıkçe işletim sistemi görüntüsünün zaman içinde otomatik olarak güncelleştirildiği anlamına gelmez . Ayrı bir özellik otomatik işletim sistemi yükseltmeleri sağlar. Daha fazla bilgi için Otomatik İşletim Sistemi Yükseltmeleri belgelerine bakın.
Özel görüntüler kullanıyorsanız imageReference Kimliğini güncelleştirerek görüntüyü güncelleştirebilirsiniz (daha fazla bilgi için REST API belgelerine bakın).
Örnekler
Ölçek kümeniz için işletim sistemi görüntüsünü güncelleştirme
Ubuntu LTS 16.04'ün eski bir sürümünü çalıştıran bir ölçek kümeniz olabilir. Ubuntu LTS 16.04'ün 16.04.201801090 gibi daha yeni bir sürümüne güncelleştirmek istiyorsunuz. Görüntü başvuru sürümü özelliği listenin bir parçası olmadığından, bu özellikleri aşağıdaki komutlardan biriyle doğrudan değiştirebilirsiniz:
Update-AzVmss ile Azure PowerShell aşağıdaki gibi:
Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -ImageReferenceVersion 16.04.201801090
az vmss update ile Azure CLI:
az vmss update --resource-group myResourceGroup --name myScaleSet --set virtualMachineProfile.storageProfile.imageReference.version=16.04.201801090
Alternatif olarak, ölçek kümenizin kullandığı görüntüyü değiştirmek isteyebilirsiniz. Örneğin, ölçek kümeniz tarafından kullanılan özel bir görüntüyü güncelleştirmek veya değiştirmek isteyebilirsiniz. Görüntü başvuru kimliği özelliğini güncelleştirerek ölçek kümenizin kullandığı görüntüyü değiştirebilirsiniz. Görüntü başvuru kimliği özelliği listenin bir parçası olmadığından, bu özelliği aşağıdaki komutlardan biriyle doğrudan değiştirebilirsiniz:
Update-AzVmss ile Azure PowerShell aşağıdaki gibi:
Update-AzVmss ` -ResourceGroupName "myResourceGroup" ` -VMScaleSetName "myScaleSet" ` -ImageReferenceId /subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
az vmss update ile Azure CLI:
az vmss update \ --resource-group myResourceGroup \ --name myScaleSet \ --set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
Ölçek kümeniz için yük dengeleyiciyi güncelleştirme
Azure Load Balancer ile bir ölçek kümeniz olduğunu ve Azure Load Balancer'ı Azure Uygulaması lication Gateway ile değiştirmek istediğinizi varsayalım. Ölçek kümesinin yük dengeleyici ve Application Gateway özellikleri listenin bir parçasıdır, bu nedenle komutları kullanarak özellikleri doğrudan değiştirmek yerine liste öğelerini kaldırabilir veya ekleyebilirsiniz:
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}"}'
Not
Bu komutlar, ölçek kümesinde yalnızca bir IP yapılandırması ve yük dengeleyici olduğunu varsayar. Birden çok tane varsa, 0 dışında bir liste dizini kullanmanız gerekebilir.
Sonraki adımlar
Azure CLI veya Azure PowerShell ile ölçek kümelerinde ortak yönetim görevleri de gerçekleştirebilirsiniz.