تمرين - تكوين موازنة التحميل العامة

مكتمل

يمكنك تكوين Azure Load Balancer باستخدام مدخل Microsoft Azure أو PowerShell أو CLI Azure.

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

هنا، إنشاء مورد موزّع حِمل واستخدامه لتوزيع الحِمل عبر الأجهزة الظاهرية.

توزيع تطبيق ويب بمدخل المريض

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

  • إنشاء شبكة ظاهرية وبنية أساسية للشبكة للأجهزة الظاهرية.
  • إنشاء اثنين من الأجهزة الظاهرية في هذه الشبكة الظاهرية.

لتوزيع تطبيق ويب مدخل المريض:

  1. تشغيل الأمر git clone التالي في Azure Cloud Shell. ينسخ الأمر المستودع الذي يحتوي على المصدر للتطبيق ويشغل إعداد البرنامج النصي من GitHub. ثم تغير بعد ذلك إلى دليل المستودع الذي تم نسخه.

    git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git
    cd mslearn-improve-app-scalability-resiliency-with-load-balancer
    
  2. كما يتضح من اسمه، هذا البرنامج النصي يُنشئ جهازين ظاهريين في مجموعة توفّر واحدة. يستغرق تشغيل البرنامج النصي حوالي دقيقتين لكي يعمل.

    bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
    
  3. عند انتهاء البرنامج النصي، في القائمة مدخل Microsoft Azure أو من الصفحة الرئيسيةالصفحةحددمجموعة الموارد، ثم اختيار [اسم مجموعة الموارد لبيئة الاختبار المعزولة]مجموعة المورد. مراجعة الموارد التي أُنشئت بواسطة البرنامج النصي.

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

الآن، دعونا ننشئ موازنة التحميل.

  1. في قائمة مدخل Azure أو من صفحة Home، ضمن Azure services، حدد Create a resource. يظهر جزء Create a resource.

  2. في مربع البحث Search Services and Marketplace، أدخل Load Balancer، ثم اضغط على Enter.

  3. من القائمة التي تلت ذلك، حدد Load Balancer - Microsoft. ثم، قم بتحديد إنشاء.

    Create a Load Balancer instance in the Azure portal.

  4. في علامة التبويب Basics، أدخل القِيم التالية لكل إعداد:

    إعداد القيمة
    تفاصيل المشروع
    الاشتراك Concierge
    مجموعة الموارد ⁩[اسم مجموعة موارد بيئة الاختبار المعزولة]⁧
    تفاصيل المثيل
    الاسم أدخل اسمًا فريدًا. مثال، Pub-LB-patientsPortal.
    المنطقة حدد الموقع الذي تنشئ الأجهزة الظاهرية فيه.
    النوع عام
    وحدة حفظ المخزون SKU أساسي

إضافة تكوين IP أمامي

  1. حدد Next : Frontend IP configuration.

  2. أدخل القيم التالية لكل إعداد.

    الإعداد القيمة
    حدد Add a frontend IP. يظهر جزء Add frontend IP address.
    الاسم أدخل اسمًا فريدًا لعنوان IP الأمامي.
    إصدار IP IPv4
    عنوان IP العام حدد Create newlink. في مربع الحوار Add a public IP address، أدخل اسمًا مميزًا لعنوان IP العام. على سبيل المثال، Pub-LB-PatientsPortal.
    المهمة ⁩Static⁦
  3. لإغلاق مربع الحوار، حدد OK. يظهر جزء Add frontend IP address. حدد ⁧⁩إضافة⁧⁩.

    Enter details on the Create load balancer page.

  4. حدد Review + create.

  5. بعد تجاوز التحقق من الصحة، حدد Create.

إضافة مجموعة خلفية

  1. حدد التالي : Backend pools.

  2. أدخل القيم التالية لكل إعداد.

    الإعداد القيمة
    حدد Add a backend pool. يظهر جزء Add backend pool.
    الاسم أدخل اسمًا فريدًا لمجموعة الواجهة الخلفية. مثال، bepool-http.
    شبكة ظاهرية bePortalVnet
    المقترن بـ الأجهزة الظاهرية
    إصدارIP IPv4
  3. اختر ⁧⁩«إضافة»⁧⁩ يظهر جزء Create load balancer مرة أخرى.

  4. في قسم Virtual Machines حدد Add. يظهر جزء Add virtual machines to backend pool الخلفية.

    Add a new back-end pool.

  5. حدد الأجهزة الظاهرية webVM1و webVM2 وعناوين IP ipconfig1 لكلا الجهازين الظاهريين.

  6. اختر ⁧⁩«إضافة»⁧⁩ يظهر جزء bepool-http مرة أخرى.

  7. حدد ⁧⁩«Save»⁧⁩.

إضافة قاعدة موازنة التحميل

وأخيرًا، دعنا ننشئ قاعدة لموازنة التحميل.

  1. حدد Next : Inbound rules.

  2. في المقطع Load balancing rule حدد Add a load balancing rule. يظهر جزء Add load balancing rule.

  3. أدخل القيم التالية لكل إعداد.

    الإعداد القيمة
    الاسم اسم لقاعدة موازنة التحميل. مثال، lbrule-http.
    إصدارIP IPv4
    عنوان IP للواجهة الأمامية حدد عنوان IP العام الموجود في موازنة التحميل.
    البروتوكول بروتوكول تحكم الإرسال
    المنفذ أدخل 80 (افتراضي).
    منفذ خلفي أدخل 80 (افتراضي).
    مجموعة خلفية حدد المجموعة الخلفية الحالية.
    فحص سلامة حدد Create new link. يظهر مربع الحوار Add health probe.
  4. أدخل القيم التالية لكل إعداد.

    الإعداد القيمة
    الاسم اسم للـ health probe. على سبيل المثال، healthprobe-http.
    البروتوكول بروتوكول تحكم الإرسال
    المنفذ أدخل 80 (افتراضي).
    ‏‏الفاصل الزمني أدخل 5 (افتراضي). هذه القيمة هي مقدار الوقت بين الفحوصات.
    حد غير سليم أدخل 2 (افتراضي). هذه القيمة هي عدد مرات حالات فشل الفحص المتتالي التي يجب أن تحدث قبل اعتبار الأجهزة الظاهرية غير صحية.
  5. لإغلاق مربع الحوار، حدد OK. يظهر جزء Add load balancing rule.

  6. أدخل القيم التالية لكل إعداد.

    إعداد القيمة
    استمرار الجلسة* ⁧⁧⁩⁩لا يوجد⁧⁧⁩⁩
    مهلة الخمول (دقائق) حدد 4 (افتراضي). تعتبر هذه القيمة هي الوقت للاحتفاظ باتصال TCP أوHTTP مفتوحًا دون الاعتماد على العملاء لإرسال رسائل مستمرة.
    IP عائم Disabled (افتراضي).

    Add a new load balancer rule.

  7. حدد Addلإكمال تكوين موازنة التحميل.

  8. ارجع إلى صفحة نظرة عامة. نسخ عنوان IP العاممن أجل موازنة التحميل.

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

أولاً، نحن بحاجة إلى عنوان IP عام من أجل موازنة التحميل.

  1. في Cloud Shell، ابدأ PowerShell بتشغيل هذا الأمر.

    pwsh
    
  2. في PowerShell، قم بإنشاء عنوان IP عام جديد.

    $Location = $(Get-AzureRmResourceGroup -ResourceGroupName <rgn>[sandbox resource group name]</rgn>).Location
    
    $publicIP = New-AzPublicIpAddress `
      -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
      -Location $Location `
      -AllocationMethod "Static" `
      -Name "myPublicIP"
    
  3. إنشاء IP لواجهة أمامية باستخدام New-AzLoadBalancerFrontendIpConfig cmdlet. المثال التالي ينشئ تكوين IP لواجهة أمامية تسمى myFrontEnd وترفق بعنوان myPublicIP.

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

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

عند استخدام PowerShell لتكوين موازنة التحميل، يجب إنشاء قائمة العناوين الخلفية، وفحص السلامة والقاعدة قبل إنشاء الموازنة نفسها.

  1. إنشاء قائمة العناوين الخلفية بتشغيل New-AzLoadBalancerBackendAddressPoolConfigcmdlet. إرفاق الأجهزة الظاهرية إلى المجموعة الخلفية في الخطوات النهائية. ينشئ المثال التالي قائمة العناوين الخلفية المُسماة myBackEndPool.

    $backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
    
  2. للسماح لموازنة التحميل بمراقبة حالة مدخل الرعاية الصحية، قم بإنشاء فحص سلامة. يضيف فحص السلامة الأجهزة الظاهرية بشكل حيوي أو يزيلها من تدوير موازنة التحميل بناءً على استجابتها لفحوصات السلامة.

    $probe = New-AzLoadBalancerProbeConfig `
      -Name "myHealthProbe" `
      -Protocol http `
      -Port 80 `
      -IntervalInSeconds 5 `
      -ProbeCount 2 `
      -RequestPath "/"
    
  3. تحتاج الآن إلى قاعدة موزّع حِمل التي تستخدم لتعريف كيفية توزيع الحركة المرورية على الأجهزة الافتراضية. يمكنك تحديد تكوين IP للواجهة الأمامية لنسبة استخدام الشبكة الواردة ومجوعة IP الخلفية لتلقي نسبة استخدام الشبكة، مع المصدر المطلوب ومنفذ الوجهة. للتأكد من تلقي الأجهزة الظاهرية السليمة فقط لنسبة استخدام الشبكة، يمكنك أيضًا تحديد فحص سلامة لاستخدامها.

    $lbrule = New-AzLoadBalancerRuleConfig `
      -Name "myLoadBalancerRule" `
      -FrontendIpConfiguration $frontendIP `
      -BackendAddressPool $backendPool `
      -Protocol Tcp `
      -FrontendPort 80 `
      -BackendPort 80 `
      -Probe $probe
    
  4. الآن يمكنك إنشاء موازنة التحميل الأساسية بتشغيل New-AzLoadBalancer cmdlet.

    $lb = New-AzLoadBalancer `
      -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
      -Name 'MyLoadBalancer' `
      -Location $Location `
      -FrontendIpConfiguration $frontendIP `
      -BackendAddressPool $backendPool `
      -Probe $probe `
      -LoadBalancingRule $lbrule
    
  5. توصيل الأجهزة الظاهرية بالمجموعة الخلفية عن طريق تحديث واجهات الشبكة التي أنشأها البرنامج النصي لاستخدام معلومات المجموعة الخلفية.

    $nic1 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic1"
    $nic2 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic2"
    
    $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool
    $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool
    
    Set-AzNetworkInterface -NetworkInterface $nic1 -AsJob
    Set-AzNetworkInterface -NetworkInterface $nic2 -AsJob
    
  6. تشغيل الأمر التالي للحصول على عنوان IP العام لموازنة التحميل وعنوان URL لموقع الويب الخاص بك.

    Write-Host http://$($(Get-AzPublicIPAddress `
      -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
      -Name "myPublicIP").IpAddress)
    

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

دعنا نستخدم CLI Azure لإنشاء موازنة التحميل والموارد المقترنة به.

  1. أنشئ عنوان IP عام جديد.

    az network public-ip create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --allocation-method Static \
      --name myPublicIP
    
  2. إنشاء موازنة التحميل.

    az network lb create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --name myLoadBalancer \
      --public-ip-address myPublicIP \
      --frontend-ip-name myFrontEndPool \
      --backend-pool-name myBackEndPool
    
  3. للسماح لموازنة التحميل بمراقبة حالة مدخل الرعاية الصحية، قم بإنشاء فحص سلامة. يضيف فحص السلامة الأجهزة الظاهرية بشكل حيوي أو يزيلها من تدوير موازنة التحميل بناءً على استجابتها لفحوصات السلامة.

    az network lb probe create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --lb-name myLoadBalancer \
      --name myHealthProbe \
      --protocol tcp \
      --port 80  
    
  4. تحتاج الآن إلى قاعدة موزّع حِمل التي تستخدم لتعريف كيفية توزيع الحركة المرورية على الأجهزة الافتراضية. يمكنك تحديد تكوين IP للواجهة الأمامية لنسبة استخدام الشبكة الواردة ومجوعة IP الخلفية لتلقي نسبة استخدام الشبكة، مع المصدر المطلوب ومنفذ الوجهة. للتأكد من تلقي الأجهزة الظاهرية السليمة فقط لنسبة استخدام الشبكة، يمكنك أيضًا تحديد فحص سلامة لاستخدامها.

    az network lb rule create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --lb-name myLoadBalancer \
      --name myHTTPRule \
      --protocol tcp \
      --frontend-port 80 \
      --backend-port 80 \
      --frontend-ip-name myFrontEndPool \
      --backend-pool-name myBackEndPool \
      --probe-name myHealthProbe
    
  5. توصل الأجهزة الظاهرية بالمجموعة الخلفية عن طريق تحديث واجهات شبكة الاتصال التي أنشأتها في البرنامج النصي لاستخدام معلومات المجموعة الخلفية.

    az network nic ip-config update \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --nic-name webNic1 \
      --name ipconfig1 \
      --lb-name myLoadBalancer \
      --lb-address-pools myBackEndPool
    
    az network nic ip-config update \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --nic-name webNic2 \
      --name ipconfig1 \
      --lb-name myLoadBalancer \
      --lb-address-pools myBackEndPool
    
  6. تشغيل الأمر التالي للحصول على عنوان IP العام لموازنة التحميل وعنوان URL لموقع الويب الخاص بك.

    echo http://$(az network public-ip show \
                    --resource-group <rgn>[sandbox resource group name]</rgn> \
                    --name myPublicIP \
                    --query ipAddress \
                    --output tsv)
    

اختبار تكوين موازنة التحميل

دعونا نختبر إعداد موازنة التحميل لإظهار كيف يمكن التعامل مع مشاكل التوفّر والسلامة بشكل ديناميكي.

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

  2. حاول "فرض التحديث" عن طريق الضغط على Ctrl+F5عدة مرات لنرى أن الاستجابة تُسترجع بشكل عشوائي من كلا الجهازين الظاهريين.

  3. في قائمة مدخل Microsoft Azure أو من صفحة الصفحة الرئيسية، حدد كل الموارد. ثم حدد إيقاف>webVM1.

  4. ارجع إلى علامة التبويب التي تعرض موقع ويب وقم بفرض تحديثًا لصفحة الويب. تُسترجع كافة الطلبات من webVM2.