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

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

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

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

Azure Cloud Shell

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

لبدء Azure Cloud Shell:

خيار مثال/ رابط
انقر فوق ⁧⁩جربه⁧⁩ في الزاوية العلوية اليسرى من التعليمة البرمجية أو كتلة الأمر. تحديد ⁧⁩جربه⁧⁩ لا يقوم بنسخ التعليمة البرمجية أو الأمر تلقائيًا إلى Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
انتقل إلى ⁧⁩⁧ https://shell.azure.com⁩⁧⁩، أو حدد زر ⁩تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. Button to launch Azure Cloud Shell.
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. Screenshot that shows the Cloud Shell button in the Azure portal

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

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -Location "EastUS" `
  -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 and apply the Custom Script Extension to the VM instances
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Name "myScaleSet" `
  -VirtualMachineScaleSet $vmss

يتم تنزيل كافة مثيلات الجهاز الافتراضي في مجموعة المقياس وتشغيل البرنامج النصي من 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 الخاصة بك، كما هو موضح في المثال التالي:

Basic web page in IIS

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

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

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

أنشئ تعريف تكوين جديد باسم 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

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

Updated web page in IIS

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

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

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

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

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

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

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