مشاركة عبر


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

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

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

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

Azure Cloud Shell

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

لبدء Azure Cloud Shell:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 العام لموازن التحميل في مستعرض ويب. يوزع موازن التحميل نسبة استخدام الشبكة إلى أحد مثيلات الجهاز الظاهري، كما هو موضح في المثال التالي:

صفحة ويب الأساسية في 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
  • تحديث تطبيق قيد التشغيل على مجموعة مقياس

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