Aracılığıyla paylaş


Sanal Makine Ölçek Kümeleri'da sıralı uzantı sağlama

Azure sanal makine uzantıları dağıtım sonrası yapılandırma ve yönetim, izleme, güvenlik ve daha fazlası gibi özellikler sağlar. Üretim dağıtımları genellikle istenen sonuçları elde etmek için VM örnekleri için yapılandırılmış birden çok uzantının birleşimini kullanır.

Bir sanal makinede birden çok uzantı kullanırken, aynı işletim sistemi kaynaklarını gerektiren uzantıların bu kaynakları aynı anda almaya çalışmadığından emin olmak önemlidir. Bazı uzantılar, ortam ayarları ve gizli diziler gibi gerekli yapılandırmaları sağlamak için diğer uzantılara da bağlıdır. Doğru sıralama ve sıralama yapılmadan bağımlı uzantı dağıtımları başarısız olabilir.

Bu makalede, Sanal Makine Ölçek Kümeleri'daki VM örnekleri için yapılandırılacak uzantıları nasıl sıralayabileceğiniz ayrıntılı olarak anlatılır.

Önkoşullar

Bu makalede şunları bildiğiniz varsayılır:

Uzantı sıralaması ne zaman kullanılır?

uzantıların ölçek kümeleri için sıralanması zorunlu değildir ve belirtilmediği sürece uzantılar herhangi bir sırada ölçek kümesi örneğinde sağlanabilir.

Örneğin, ölçek kümesi modelinizde modelde belirtilen iki uzantı (ExtensionA ve ExtensionB) varsa, aşağıdaki sağlama dizilerinden biri oluşabilir:

  • ExtensionA -> ExtensionB
  • ExtensionB -> ExtensionA

Uygulamanız, Uzantı B'den önce her zaman Uzantı A'nın sağlanmasını gerektiriyorsa, bu makalede açıklandığı gibi uzantı sıralamasını kullanmanız gerekir. Uzantı sıralaması ile artık yalnızca bir dizi gerçekleşir:

  • ExtensionA - > ExtensionB

Tanımlı bir sağlama dizisinde belirtilmeyen tüm uzantılar, önceden, sonra veya tanımlı bir dizi sırasında dahil olmak üzere herhangi bir zamanda sağlanabilir. Uzantı sıralaması yalnızca belirli bir uzantının başka bir belirli uzantıdan sonra sağlandığını belirtir. Modelde tanımlanan diğer uzantıların sağlanmasını etkilemez.

Örneğin, ölçek kümesi modelinizde modelde belirtilen üç uzantı (Uzantı A, Uzantı B ve Uzantı C) varsa ve Uzantı C, Uzantı A'nın ardından sağlanacak şekilde ayarlandıysa, aşağıdaki sağlama dizilerinden biri oluşabilir:

  • ExtensionA -> ExtensionC -> ExtensionB
  • ExtensionB -> ExtensionA -> ExtensionC
  • ExtensionA -> ExtensionB -> ExtensionC

Tanımlı uzantı dizisi yürütülürken başka bir uzantının sağlanmadığından emin olmanız gerekiyorsa, ölçek kümesi modelinizdeki tüm uzantıları sıralamanızı öneririz. Yukarıdaki örnekte, Uzantı B, Uzantı C'nin ardından sağlanacak şekilde ayarlanabilir, böylece yalnızca bir sıra gerçekleşebilir:

  • ExtensionA -> ExtensionC -> ExtensionB

Uzantı sıralamayı kullanma

Uzantı sağlamayı sıralamak için ölçek kümesi modelindeki uzantı tanımını, bir uzantı adları dizisini kabul eden "provisionAfterExtensions" özelliğini içerecek şekilde güncelleştirmeniz gerekir. Özellik dizisi değerinde belirtilen uzantılar ölçek kümesi modelinde tam olarak tanımlanmalıdır.

Şablon Dağıtımı

Aşağıdaki örnek, ölçek kümesinin üç uzantısının (ExtensionA, ExtensionB ve ExtensionC) bulunduğu bir şablon tanımlar; bu şekilde uzantılar sırayla sağlanır:

  • 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"                   
        }
      }
    ]
  }
}

"provisionAfterExtensions" özelliği bir uzantı adları dizisini kabul ettiğinden, yukarıdaki örnek ExtensionA ve ExtensionB'den sonra ExtensionC sağlanacak şekilde değiştirilebilir, ancak ExtensionA ile ExtensionB arasında sıralama gerekmez. Bu senaryoya ulaşmak için aşağıdaki şablon kullanılabilir:

"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

Aşağıdaki örnek, ölçek kümesi modeline ExtensionC adlı yeni bir uzantı ekler. ExtensionC'nin, ölçek kümesi modelinde önceden tanımlanmış olan ExtensionA ve ExtensionB bağımlılıkları vardır.

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" 
  }                  
}

ExtensionC ölçek kümesi modelinde daha önce tanımlandıysa ve şimdi bağımlılıklarını eklemek istiyorsanız, zaten dağıtılan uzantının özelliklerini düzenlemek için bir PATCH yürütebilirsiniz.

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

Mevcut ölçek kümesi örneklerinde yapılan değişiklikler bir sonraki yükseltmede uygulanır.

Azure PowerShell

Uygulama Durumu uzantısını ölçek kümesi model tanımına eklemek için Add-AzVmssExtension cmdlet'ini kullanın. Uzantı sıralaması, Az PowerShell 1.2.0 veya üstünün kullanılmasını gerektirir.

Aşağıdaki örnek , Uygulama Durumu uzantısınıextensionProfile Windows tabanlı bir ölçek kümesinin ölçek kümesi modeline ekler. Uygulama Durumu uzantısı, ölçek kümesinde önceden tanımlanmış olan Özel Betik Uzantısı sağlandıktan sonra sağlanacaktır.

# 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

Uygulama Durumu uzantısını ölçek kümesi model tanımına eklemek için az vmss extension set komutunu kullanın. Uzantı sıralaması için Azure CLI 2.0.55 veya üzerinin kullanılması gerekir.

Aşağıdaki örnek , Uygulama Durumu uzantısını Windows tabanlı bir ölçek kümesinin ölçek kümesi modeline ekler. Uygulama Durumu uzantısı, ölçek kümesinde önceden tanımlanmış olan Özel Betik Uzantısı sağlandıktan sonra sağlanacaktır.

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

Sorun giderme

Bağımlılıklarla uzantı ekleyemiyor musunuz?

  1. provisionAfterExtensions içinde belirtilen uzantıların ölçek kümesi modelinde tanımlandığından emin olun.
  2. Döngüsel bağımlılıkların kullanılmadığından emin olun. Örneğin, şu diziye izin verilmez: ExtensionA -> ExtensionB -> ExtensionC -> ExtensionA
  3. Bağımlılıkları kullandığınız uzantıların "properties" uzantısı altında bir "settings" özelliğine sahip olduğundan emin olun. Örneğin, ExtensionA'nın ardından ExtentionB sağlanması gerekiyorsa, ExtensionA "properties" altında "ayarlar" alanına sahip olmalıdır. Uzantı gerekli ayarları zorunlu görmüyorsa boş bir "ayarlar" özelliği belirtebilirsiniz.

Uzantılar kaldırılamadı mı?

Kaldırılan uzantıların diğer uzantılar için provisionAfterExtensions altında listelenmediğinden emin olun.

Sonraki adımlar

Uygulamanızı Sanal Makine Ölçek Kümeleri'de dağıtmayı öğrenin.