⁧⁩⁧برنامج تعليمي: Windows موازن التحميل للأجهزة الظاهرية في Azure لإنشاء تطبيق عالي الوصول مع Azure PowerShell⁩

ينطبق على: ✔️ أجهزة ظاهرية بنظام التشغيل Windows ✔️ مجموعات مقياس موحدة

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

  • إنشاء موازن تحميل Azure
  • إنشاء برنامج اختبار صحة موازن التحميل
  • إنشاء قواعد حركة بيانات موازن التحميل
  • استخدام ملحق البرنامج النصي المخصص لإنشاء موقع IIS أساسي
  • إنشاء أجهزة ظاهرية وإرفاقها لموازن التحميل
  • عرض موازن التحميل في العمل
  • إضافة أجهزة افتراضية وإزالتها من موازن التحميل

نظرة عامة حول موازن تحميل Azure

موازن تحميل Azure هو موازن تحميل الطبقة-4 (TCP, UDP) الذي يوفر إتاحة عالية عن طريق توزيع حركة البيانات الواردة بين الأجهزة الظاهرية الصحية. يراقب برنامج اختبار صحة موازن التحميل منفذًا على كل جهاز ظاهري ويوزع حركة البيانات فقط على جهاز ظاهري قيد التشغيل.

يمكنك تعريف تكوين IP الأمامي الذي يحتوي على عنوان IP عمومي واحد أو أكثر. يسمح تكوين IP الأمامي هذا بموازن التحميل والتطبيقات الخاصة بك للوصول عبر الإنترنت.

تتصل الأجهزة الظاهرية بموازن التحميل باستخدام بطاقة واجهة الشبكة الظاهرية الخاصة بها (NIC). لتوزيع حركة البيانات على الأجهزة الظاهرية، يحتوي تجمع عناوين النهاية الخلفية على عناوين IP الخاصة ببطاقة واجهة الشبكة الافتراضية المتصلة بموازنة التحميل.

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

تشغيل Azure Cloud Shell

Azure Cloud Shell عبارة عن واجهة تفاعلية مجانية يُمكنك استخدامها لتنفيذ الخطوات الواردة في هذه المقالة. يحتوي على أدوات Azure الشائعة والمثبتة مسبقاً والتي تم تكوينها للاستخدام مع حسابك.

لفتح Cloud Shell، ما عليك سوى تحديد "Try it" من الزاوية العليا اليسرى لكتلة التعليمة البرمجية. يمكنك أيضاً تشغيل Cloud Shell في علامة تبويب مستعرض منفصلة بالانتقال إلى https://shell.azure.com/powershell. حدد نسخ لنسخ مجموعة التعليمات البرمجية، ولصقها في Cloud Shell، واضغط على "إدخال" لتشغيلها.

إنشاء موازن تحميل Azure

يوضح هذا القسم بالتفصيل كيفية إنشاء وتكوين كل مكون من مكونات موازن التحميل. قبل أن تتمكن من إنشاء موازن التحميل، قم بإنشاء مجموعة موارد باستخدام New-AzResourceGroup. في المثال التالي، سيتم إنشاء مجموعة موارد باسم myResourceGroupLoadBalancer في موقع EastUS:

New-AzResourceGroup `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS"

إنشاء عنوان IP عام

للوصول إلى التطبيق الخاص بك على الإنترنت، تحتاج إلى عنوان IP عام لموازن التحميل. استخدم ⁧⁩New-AzPublicIpAddress⁧⁩ لإنشاء عنوان IP عام. المثال التالي بإنشاء عنوان IP عام المسمى myPublicIP في مجموعة موارد myResourceGroupLoadBalancer:

$publicIP = New-AzPublicIpAddress `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS" `
  -AllocationMethod "Static" `
  -Name "myPublicIP"

إنشاء موازنة التحميل

قم بإنشاء تكوين IP للواجهة الأمامية باستخدام New-AzLoadBalancerFrontendIpConfig. يقوم المثال التالي بإنشاء تجمع IP واجهة أمامية المسماة myFrontEndPool وترفق عنوان myPublicIP:

$frontendIP = New-AzLoadBalancerFrontendIpConfig `
  -Name "myFrontEndPool" `
  -PublicIpAddress $publicIP

إنشاء مجموعة عناوين خلفية باستخدام Add-AzLoadBalancerBackendAddressPoolConfig . إرفاق VMs إلى تجمع الخلفية هذا في الخطوات المتبقية. ينشئ المثال التالي مجموعة عناوين خلفية باسم myBackEndPool:

$backendPool = New-AzLoadBalancerBackendAddressPoolConfig `
  -Name "myBackEndPool"

الآن، إنشاء موازن التحميل مع New-AzLoadBalancer. المثال التالي بإنشاء موازن تحميل المسمى myLoadBalancer باستخدام تجمعات IP الأمامية والواجهة الخلفية التي تم إنشاؤها في الخطوات السابقة:

$lb = New-AzLoadBalancer `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myLoadBalancer" `
  -Location "EastUS" `
  -FrontendIpConfiguration $frontendIP `
  -BackendAddressPool $backendPool

إنشاء فحوصات السلامة

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

يُنشئ المثال التالي برنامج اختبار TCP. يمكنك أيضاً إنشاء برنامج اختبار HTTP مخصص لمزيد من الفحوصات الصحية الدقيقة. عند استخدام برنامج اختبار HTTP مخصص، يجب إنشاء صفحة التحقق من الصحة، مثل healthcheck.aspx. يجب أن يقوم برنامج الاختبار بإرجاع استجابة HTTP 200 OK لموازن التحميل لإبقاء المضيف في حالة دوران.

لإنشاء اختبار صحة TCP، يمكنك استخدام Add-AzLoadBalancerProbeConfig. ينشئ المثال التالي برنامج اختبار صحة يسمى myHealthProbe الذي يراقب كل جهاز افتراضي على منفذ TCP80:

Add-AzLoadBalancerProbeConfig `
  -Name "myHealthProbe" `
  -LoadBalancer $lb `
  -Protocol tcp `
  -Port 80 `
  -IntervalInSeconds 15 `
  -ProbeCount 2

لتطبيق برنامج اختبار صحي، وتحديث موازن التحميل مع Set-AzLoadBalancer:

Set-AzLoadBalancer -LoadBalancer $lb

إنشاء قاعدة موازن التحميل

تُستخدم قاعدة موازن التحميل لتعريف كيفية توزيع نسبة استخدام الشبكة على الأجهزة الظاهرية. يمكنك تحديد تكوين IP للواجهة الأمامية لنسبة استخدام الشبكة الواردة ومجوعة IP الخلفية لتلقي نسبة استخدام الشبكة، مع المصدر المطلوب ومنفذ الوجهة. للتأكد من تلقي الأجهزة الظاهرية السليمة فقط لنسبة استخدام الشبكة، يمكنك أيضًا تحديد فحص سلامة لاستخدامها.

قم بإنشاء قاعدة موازن التحميل باستخدام Add-AzLoadBalancerRuleConfig. ينشئ المثال التالي قاعدة باسم myLoadBalancerRuleWeb تسمح بحركة البيانات إلى منفذ TCP80:

$probe = Get-AzLoadBalancerProbeConfig -LoadBalancer $lb -Name "myHealthProbe"

Add-AzLoadBalancerRuleConfig `
  -Name "myLoadBalancerRule" `
  -LoadBalancer $lb `
  -FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
  -BackendAddressPool $lb.BackendAddressPools[0] `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80 `
  -Probe $probe

تحديث موازن التحميل مع Set-AzLoadBalancer:

Set-AzLoadBalancer -LoadBalancer $lb

تكوين الشبكة الافتراضية

قبل أن تقوم بنشر الأجهزة الظاهرية ونشر موازن التحميل الخاص بك، أنشئ موارد شبكة الاتصال الظاهرية الداعمة. لمزيد من المعلومات حول الشبكات الظاهرية، راجع البرنامج التعليمي إدارة شبكات Azure الظاهرية.

إنشاء موارد شبكة الاتصال

أنشئ شبكة افتراضية باستخدام New-AzVirtualNetwork. ينشئ المثال التالي شبكة اتصال افتراضية باسم myVnet مع mySubnet:

# Create subnet config
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name "mySubnet" `
  -AddressPrefix 192.168.1.0/24

# Create the virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS" `
  -Name "myVnet" `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

يتم إنشاء بطاقات واجهة الشبكة الافتراضية مع New-AzNetworkInterface. ينشئ المثال التالي ثلاثة بطاقات واجهة الشبكة الافتراضية. (بطاقة واجهة شبكة ظاهرية واحدة لكل جهاز ظاهري تقوم بإنشائه للتطبيق الخاص بك في الخطوات التالية). يمكنك إنشاء طاقات واجهة الشبكة الافتراضية إضافية وأجهزة افتراضية في أي وقت وإضافتها إلى موازن التحميل:

for ($i=1; $i -le 3; $i++)
{
   New-AzNetworkInterface `
     -ResourceGroupName "myResourceGroupLoadBalancer" `
     -Name myVM$i `
     -Location "EastUS" `
     -Subnet $vnet.Subnets[0] `
     -LoadBalancerBackendAddressPool $lb.BackendAddressPools[0]
}

أنشئ الأجهزة الظاهرية

لتحسين التوفر العالي لتطبيقك، ضع أجهزة افتراضية في مجموعة توفر.

إنشاء مجموعة توفر مع New-AzAvailabilitySet. ينشئ المثال التالي مجموعة توفر المسماة myAvailabilitySet:

$availabilitySet = New-AzAvailabilitySet `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myAvailabilitySet" `
  -Location "EastUS" `
  -Sku aligned `
  -PlatformFaultDomainCount 2 `
  -PlatformUpdateDomainCount 2

قم بتعيين اسم المستخدم وكلمة مرور المسؤول للجهاز الافتراضي باستخدام ⁧⁩Get-Credential⁧⁩:

$cred = Get-Credential

يمكنك الآن إنشاء الجهاز الافتراضي باستخدام New-AzVM. ينشئ المثال التالي ثلاثة أجهزة افتراضية ومكونات شبكة الاتصال الظاهرية المطلوبة إذا لم تكن موجودة مسبقاً:

for ($i=1; $i -le 3; $i++)
{
    New-AzVm `
        -ResourceGroupName "myResourceGroupLoadBalancer" `
        -Name "myVM$i" `
        -Location "East US" `
        -VirtualNetworkName "myVnet" `
        -SubnetName "mySubnet" `
        -SecurityGroupName "myNetworkSecurityGroup" `
        -OpenPorts 80 `
        -AvailabilitySetName "myAvailabilitySet" `
        -Credential $cred `
        -AsJob
}

-AsJobينشئ المعلمة الجهاز الظاهري كمهمة خلفية، لذلك يطالب PowerShell العودة إليك. يمكنك عرض تفاصيل وظائف الخلفية مع Job cmdlet. يستغرق الأمر بضع دقائق لإنشاء وتكوين جميع الاجهزة الافتراضية الثلاثة.

تثبيت IIS مع ملحق البرنامج النصي المخصص

في برنامج تعليمي سابق حول كيفية تخصيص جهاز ظاهري يعمل بنظام التشغيل Windows ، تعلمت كيفية أتمتة تخصيص الجهاز الافتراضي باستخدام ملحق البرنامج النصي المخصص لنظام التشغيل Windows. يمكنك استخدام نفس الأسلوب لتثبيت وتكوين IIS على الأجهزة الافتراضية.

استخدم Set-AzVMExtension لتثبيت ملحق البرنامج النصي المخصص. يتم تشغيل الملحق powershell Add-WindowsFeature Web-Server لتثبيت خادم ويب IIS ثم يقوم بتحديث صفحة Default.htm لإظهار اسم مضيف الجهاز الافتراضي:

for ($i=1; $i -le 3; $i++)
{
   Set-AzVMExtension `
     -ResourceGroupName "myResourceGroupLoadBalancer" `
     -ExtensionName "IIS" `
     -VMName myVM$i `
     -Publisher Microsoft.Compute `
     -ExtensionType CustomScriptExtension `
     -TypeHandlerVersion 1.8 `
     -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
     -Location EastUS
}

موازن التحميل التجريبي

احصل على عنوان IP العام الخاص بموازن التحميل باستخدام Get-AzPublicIPAddress. يحصل المثال التالي على عنوان IP لـ myPublicIPAddress الذي تم إنشاؤه مسبقاً:

Get-AzPublicIPAddress `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myPublicIP" | select IpAddress

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

تشغيل موقع IIS على الويب

لرؤية موازن التحميل يوزع حركة البيانات عبر جميع الأجهزة الظاهرية الثلاثة التي تُشغّل تطبيقك، يمكنك فرض تحديث مستعرض الويب الخاص بك.

إضافة الأجهزة الظاهرية وإزالتها

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

إزالة أجهزة افتراضية من موازن التحميل

الحصول على بطاقة واجهة الشبكة مع Get-AzNetworkInterface، ثم تعيين الخاصية LoadBalancerBackendAddressPoolsبطاقة واجهة الشبكة الافتراضيةإلى $null. أخيراً، تحديث بطاقة واجهة الشبكة الافتراضية.:

$nic = Get-AzNetworkInterface `
    -ResourceGroupName "myResourceGroupLoadBalancer" `
    -Name "myVM2"
$nic.Ipconfigurations[0].LoadBalancerBackendAddressPools=$null
Set-AzNetworkInterface -NetworkInterface $nic

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

إضافة جهاز افتراضي إلى موازن التحميل

بعد إجراء صيانة الأجهزة الافتراضية أو إذا كنت بحاجة إلى توسيع السعة تعيين الخاصية LoadBalancerBackendAddressPools من بطاقة واجهة الشبكة الافتراضي إلى BackendAddressPool من Get-AzLoadBalancer:

الحصول على موازن التحميل:

$lb = Get-AzLoadBalancer `
    -ResourceGroupName myResourceGroupLoadBalancer `
    -Name myLoadBalancer 
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$lb.BackendAddressPools[0]
Set-AzNetworkInterface -NetworkInterface $nic

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

في هذا البرنامج التعليمي، أنشأت موازن تحميل وأجهزة ظاهرية مرفقة به. تعلمت كيفية القيام بالتالي:

  • إنشاء موازن تحميل Azure
  • إنشاء برنامج اختبار صحة موازن التحميل
  • إنشاء قواعد حركة بيانات موازن التحميل
  • استخدام ملحق البرنامج النصي المخصص لإنشاء موقع IIS أساسي
  • إنشاء أجهزة ظاهرية وإرفاقها لموازن التحميل
  • عرض موازن التحميل في العمل
  • إضافة أجهزة افتراضية وإزالتها من موازن التحميل

تقدم إلى البرنامج التعليمي التالي لمعرفة كيفية إدارة شبكات الأجهزة الافتراضية.