البرنامج التعليمي: تثبيت التطبيقات في مجموعات مقياس الجهاز الظاهري باستخدام Azure PowerShell

لتشغيل التطبيقات على حالات الجهاز الافتراضي (VM) في مجموعة مقياس، تحتاج أولًا إلى تثبيت مكونات التطبيق والملفات المطلوبة. في برنامج تعليمي سابق، تعلمت كيفية إنشاء صورة جهاز افتراضي مخصصة واستخدامها لنشر حالات الجهاز الافتراضي الخاصة بك. وشملت هذه الصورة المخصصة تثبيتات التطبيق اليدوي والتكوينات. يمكنك أيضا أتمتة تثبيت التطبيقات إلى مقياس تم تعيينه بعد نشر كل حالة جهاز افتراضي، أو تحديث تطبيق يعمل بالفعل على مجموعة مقياس. في هذا البرنامج التعليمي، ستتعرف على كيفية القيام بما يلي:

  • تثبيت التطبيقات تلقائيًّا على مجموعة المقياس
  • استخدام ملحق البرنامج النصي المخصص Azure
  • تحديث تطبيق قيد التشغيل على مجموعة مقياس

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

Azure Cloud Shell

Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.

لبدء Azure Cloud Shell:

خيار مثال/ رابط
انقر فوق ⁧⁩جربه⁧⁩ في الزاوية العلوية اليسرى من التعليمة البرمجية أو كتلة الأمر. تحديد ⁧⁩جربه⁧⁩ لا يقوم بنسخ التعليمة البرمجية أو الأمر تلقائيًا إلى Cloud Shell. لقطة شاشة تعرض مثالاً على Try It for Azure Cloud Shell.
انتقل إلى ⁧⁩⁧ https://shell.azure.com⁩⁧⁩، أو حدد زر ⁩تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. زر لتشغيل Azure Cloud Shell.
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. لقطة شاشة تعرض زر Cloud Shell في مدخل Microsoft Azure

لاستخدام Azure Cloud Shell:

  1. ابدأ تشغيل Cloud Shell.

  2. حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.

  3. ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.

  4. حدد Enter لتشغيل التعليمات البرمجية أو الأمر.

ما هو ملحق البرنامج النصي المخصص لAzure؟

يقوم ملحق البرنامج النصي المخصص بتنزيل البرامج النصية وتنفيذها على أجهزة Azure الافتراضية. هذا الملحق مفيد لتكوين ما بعد النشر أو تثبيت البرنامج أو أي مهمة تكوين / إدارة أخرى. يمكن تنزيل البرامج النصية من مساحة تخزين Azure أو GitHub، أو توفيرها إلى مدخل Azure في وقت تشغيل الملحق.

يتكامل ملحق البرنامج النصي المخصص مع قوالب Azure Resource Manager. يمكن استخدامه أيضاً مع Azure CLI أو Azure PowerShell أو مدخل Azure أو REST API. لمزيد من المعلومات، راجع نظرة عامة على إضافة البرنامج النصي المخصص.

لمشاهدة ملحق البرنامج النصي المخصص قيد التشغيل، أنشئ مجموعة مقياس تقوم بتثبيت خادم ويب IIS وإخراج اسم المضيف لمثيل الجهاز الظاهري لمجموعة المقاييس. يقوم تعريف ملحق البرنامج النصي المخصص بتنزيل نموذج نصي من GitHub، وتثبيت الحزم المطلوبة، ثم كتابة اسم مضيف مثيل الجهاز الظاهري في صفحة HTML الأساسية.

إنشاء مجموعة تحجيم

قم بإنشاء مجموعة موارد باستخدام New-AzResourceGroup. ينشئ المثال التالي مجموعة موارد تسمى myResourceGroup في موقع شرق الولايات المتحدة :

New-AzResourceGroup -Name myResourceGroup -Location "East US"

الآن قم بإنشاء مجموعة مقياس الجهاز الظاهري باستخدام New-AzVmss. يُنشأ موازن تحميل أيضاً لتوزيع النقل على مثيلات أجهزة ظاهرية متعددة. يتضمن موازن التحميل قواعد لتوزيع حركة المرور على منفذ TCP 80. كما يسمح أيضاً بحركة مرور سطح المكتب البعيد على منفذ TCP 3389 وPowerShell عن بُعد على منفذ TCP 5985. عند المطالبة، يمكنك تعيين بيانات الاعتماد الإدارية الخاصة بك لمثيلات VM في تعيين المقياس:

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -Location "EastUS" `
  -UpgradePolicyMode "Manual" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" 

يستغرق الأمر بضع دقائق لإنشاء وتكوين جميع موارد مجموعة المقياس والأجهزة الافتراضية.

إنشاء تعريف ملحق البرنامج النصي المخصص

يستخدم Azure PowerShell جدول تجزئة لتخزين الملف المراد تنزيله والأمر المطلوب تنفيذه. في المثال التالي، يتم استخدام نموذج برنامج نصي من GitHub. أولاً، إنشاء كائن التكوين هذا على النحو التالي:

$customConfig = @{
  "fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}

الآن، قم بتطبيق ملحق البرنامج النصي المخصص مع Add-AzVmssExtension . يتم تمرير كائن التكوين المحدد مسبقاً إلى الملحق. تحديث الملحق على مثيلات ملف تعريف مجموعة التحجيم باستخدام Update-AzVmss.

# Get information about the scale set
$vmss = Get-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet"

# Add the Custom Script Extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
  -VirtualMachineScaleSet $vmss `
  -Name "customScript" `
  -Publisher "Microsoft.Compute" `
  -Type "CustomScriptExtension" `
  -TypeHandlerVersion 1.9 `
  -Setting $customConfig

# Update the scale set
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Name "myScaleSet" `
  -VirtualMachineScaleSet $vmss

إضافة الملحق إلى مثيلات مجموعة المقياس الموجودة

قم بإجراء ترقية يدوية لتطبيق الملحق المحدث على جميع مثيلات مجموعة المقياس الموجودة. قد يستغرق إكمال التحديث بضع دقائق.

Update-AzVmssInstance -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "*"

يتم تنزيل كافة مثيلات الجهاز الافتراضي في مجموعة المقياس وتشغيل البرنامج النصي من GitHub. في مثال أكثر تعقيداً، يمكن تثبيت مكونات وملفات متعددة للتطبيقات. إذا تم توسيع نطاق مجموعة المقياس، فإن مثيلات الجهاز الظاهري الجديدة تطبق تلقائياً نفس تعريف ملحق البرنامج النصي المخصص وتثبيت التطبيق المطلوب.

السماح لحركة المرور بالتطبيق

للسماح بالوصول إلى تطبيق الويب الأساسي، قم بإنشاء مجموعة أمان شبكة باستخدام New-AzNetworkSecurityRuleConfig وNew-AzNetworkSecurityGroup. لمزيد من المعلومات، راجع إنشاء شبكات لمجموعات تحجيم الجهاز الظاهري في Azure.

#Create a rule to allow traffic over port 80
$nsgFrontendRule = New-AzNetworkSecurityRuleConfig `
  -Name myFrontendNSGRule `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 200 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access Allow

#Create a network security group and associate it with the rule
$nsgFrontend = New-AzNetworkSecurityGroup `
  -ResourceGroupName  "myResourceGroup" `
  -Location EastUS `
  -Name myFrontendNSG `
  -SecurityRules $nsgFrontendRule

$vnet = Get-AzVirtualNetwork `
  -ResourceGroupName  "myResourceGroup" `
  -Name myVnet

$frontendSubnet = $vnet.Subnets[0]

$frontendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $vnet `
  -Name mySubnet `
  -AddressPrefix $frontendSubnet.AddressPrefix `
  -NetworkSecurityGroup $nsgFrontend

Set-AzVirtualNetwork -VirtualNetwork $vnet

اختبار مجموعة المقياس لديك

لمشاهدة خادم الويب الخاص بك أثناء العمل، احصل على عنوان IP العام لموازن التحميل باستخدام Get-AzPublicIpAddress. يعرض المثال التالي عنوان IP الذي تم إنشاؤه في مجموعة موارد myResourceGroup:

Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress

أدخل عنوان IP العام لموازن التحميل في متصفح الويب. يوزع موازن التحميل حركة المرور إلى إحدى مثيلات VM الخاصة بك، كما هو موضح في المثال التالي:

صفحة ويب أساسية في IIS

اترك مستعرض الويب مفتوحًا حتى تتمكن من مشاهدة إصدار محدث في الخطوة التالية.

تغيير نهج الترقية

في القسم السابق، من أجل تطبيق التطبيق المحدث على جميع مثيلات مجموعة التحجيم، كانت هناك حاجة إلى ترقية يدوية. لتمكين تطبيق التحديثات تلقائيا على جميع مثيلات مجموعة التحجيم الموجودة، قم بتحديث نهج الترقية من يدوي إلى تلقائي. لمزيد من المعلومات حول نهج الترقية، راجع نهج الترقية لمجموعات مقياس الجهاز الظاهري.

$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Update-Azvmss `
    -ResourceGroupName "myResourceGroup" `
    -Name "myScaleSet" `
    -UpgradePolicyMode "Automatic" `
    -VirtualMachineScaleSet $vmss

تحديث نشر التطبيق

خلال دورة حياة مجموعة المقياس، قد تحتاج إلى نشر إصدار محدث من التطبيق الخاص بك. باستخدام ملحق البرنامج النصي المخصص، يمكنك الرجوع إلى برنامج نصي محدث للنشر ومن ثم إعادة تطبيق الملحق على مجموعة المقياس لديك.

أنشئ تعريف تكوين جديد باسم customConfigv2. يقوم هذا التعريف بتشغيل إصدار v2 محدث من البرنامج النصي لتثبيت التطبيق:

$customConfigv2 = @{
  "fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis-v2.ps1");
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis-v2.ps1"
}

قم بتحديث تكوين ملحق البرنامج النصي المخصص إلى مثيلات الجهاز الظاهري في مجموعة المقياس لديك. يتم استخدام تعريف customConfigv2 لتطبيق الإصدار المحدث من التطبيق على مجموعة المقياس:

$vmss = Get-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet"
 
$vmss.VirtualMachineProfile.ExtensionProfile[0].Extensions[0].Settings = $customConfigv2
 
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Name "myScaleSet" `
  -VirtualMachineScaleSet $vmss

نظرا لأن مجموعة التحجيم تستخدم الآن نهج ترقية تلقائيا، سيتم تطبيق التطبيق المحدث تلقائيا على مثيلات مجموعة التحجيم الموجودة. قم بتحديث مستعرض الويب الخاص بك لمشاهدة التطبيق المحدث. للاطلاع على الإصدار المحدث، قم بتحديث موقع ويب في المستعرض:

صفحة ويب محدثة في IIS

تنظيف الموارد

لإزالة مجموعة المقياس والموارد الإضافية، احذف مجموعة الموارد وكافة مواردها باستخدام Remove-AzResourceGroup. المعلمة -Force تؤكد رغبتك في حذف الموارد دون مطالبة إضافية للقيام بذلك. تُعيد المعلمة -AsJob التحكم إلى الموجه دون انتظار إكمال العملية.

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

الخطوات التالية

في هذا البرنامج التعليمي، تعلمت كيفية تثبيت التطبيقات وتحديثها تلقائيا على مجموعة مقياس باستخدام Azure PowerShell:

  • تثبيت التطبيقات تلقائيًّا على مجموعة المقياس
  • استخدام ملحق البرنامج النصي المخصص Azure
  • تحديث تطبيق قيد التشغيل على مجموعة مقياس

انتقل إلى البرنامج التعليمي التالي لمعرفة كيفية قياس مجموعة المقاييس تلقائيًّا.