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ına ihtiyaç duyan 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ıralama ne zaman kullanılır?

Ölçek kümeleri için uzantıları sıralama zorunlu değildir ve belirtilmedikçe, 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 -> UzantıB
  • 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ıralama ile artık yalnızca bir dizi gerçekleşir:

  • ExtensionA - > UzantıB

Tanımlı sağlama dizisinde belirtilmeyen tüm uzantılar, önce, sonra veya tanımlı bir dizi sırasında da dahil olmak üzere herhangi bir zamanda sağlanabilir. Uzantı sıralaması yalnızca belirli bir uzantının başka bir uzantıdan sonra sağlandığını belirtir. Modelde tanımlanan başka bir uzantını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 oluşabilir:

  • ExtensionA -> ExtensionC -> ExtensionB

Uzantı sıralamasını 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ılar sırayla sağlandığı üç uzantıya (ExtensionA, ExtensionB ve ExtensionC) sahip olduğu bir şablonu tanımlar:

  • 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 ExtensionC UzantıA ve UzantıB'den sonra 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 ExtensionA ve ExtensionB'ye bağımlılıkları vardır ve bu bağımlılıklar ölçek kümesi modelinde zaten tanımlanmıştı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 daha önce ölçek kümesi modelinde tanımlanmışsa ve şimdi bağımlılıklarını eklemek istiyorsanız, zaten dağıtılmış 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ıralama için Az PowerShell 1.2.0 veya üzerinin kullanılması gerekir.

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 zaten 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ıralama 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 zaten 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. Kullanıma sunulan döngüsel bağımlılık olmadığından emin olun. Örneğin, aşağıdaki diziye izin verilmez: ExtensionA -> ExtensionB -> ExtensionC -> ExtensionA
  3. Bağımlılıklarını 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, UzantıA'nın ExtensionA "özellikler" altında "ayarlar" alanına sahip olması gerekir. Uzantı gerekli ayarları zorunlu kılınmı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 dağıtmayı öğrenin.