التدريب- إنشاء بوابة التطبيق وتكوينها

مكتمل

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

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

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

Diagram showing the resources that will be deployed.

تكوين شبكة الاتصال لبوابة التطبيق

  1. لإنشاء الشبكة الفرعية الخاصة المطلوبة من بوابة التطبيق، شغّل الأمر التالي. تُسمى الشبكة الفرعية appGatewaySubnet، في vehicleAppVnet الشبكة الظاهرية التي قمت بإنشائها في التمرين السابق.

    az network vnet subnet create \
      --resource-group $RG \
      --vnet-name vehicleAppVnet  \
      --name appGatewaySubnet \
      --address-prefixes 10.0.0.0/24
    
  2. لإنشاء عنوان IP عام وتسمية DNS لبوابة التطبيق، شغّل الأمر التالي. يجب أن تكون تسمية DNS فريدة من نوعها على مستوى عالمي. لإنشاء تسمية، تستخدم التعليمات البرمجية التالية وظيفة $RANDOM.

    az network public-ip create \
      --resource-group $RG \
      --name appGatewayPublicIp \
      --sku Standard \
      --dns-name vehicleapp${RANDOM}
    

إنشاء بوابة تطبيق

  1. إنشاء بوابة تطبيق باسم vehicleAppGateway التكوين التالي:

    • تجمع خلفي يحتوي على عناوين IP للأجهزة الظاهرية لخادم الويب.
    • يمنع جدار الحماية الطلبات الضارة، مثل تلك التي تستخدمها لغة الاستعلامات المركبة (SQL Injection) وهجمات البرمجة النصية للمواقع المشتركة.
    • وحدة استماع مؤقتة للإنصات إلى المنفذ 8080، سيتم استبدال هذا في خطوة لاحقة ولكنها ضرورية لإنشاء بوابة التطبيق.
    • قاعدة تعمل على توجيه (وموازنات تحميل) تلك الطلبات إلى خوادم الويب في تجمع خلفي.
    az network application-gateway create \
    --resource-group $RG \
    --name vehicleAppGateway \
    --sku WAF_v2 \
    --capacity 2 \
    --vnet-name vehicleAppVnet \
    --subnet appGatewaySubnet \
    --public-ip-address appGatewayPublicIp \
    --http-settings-protocol Http \
    --http-settings-port 8080 \
    --private-ip-address 10.0.0.4 \
    --frontend-port 8080
    

    ملاحظة

    يمكن أن يستغرق هذا الأمر عدة دقائق لينتهي.

  2. للبحث عن عناوين IP webServer1 وwebServer2، شغّل الأوامر التالية. ستحفظ ذلك في متغيرات لاستخدامها في الأمر التالي.

    az vm list-ip-addresses \
      --resource-group $RG \
      --name webServer1 \
      --query [0].virtualMachine.network.privateIpAddresses[0] \
      --output tsv
    
    az vm list-ip-addresses \
      --resource-group $RG \
      --name webserver2 \
      --query [0].virtualMachine.network.privateIpAddresses[0] \
      --output tsv
    
  3. بعد ذلك، سنقوم بإضافة تجمعات خلفية لكل موقع ويب. أولًا، قم بإنشاء تجمع خلفي لموقع تسجيل السيارة الذي يعمل على الأجهزة الافتراضية. تأكد من أن عناوين IP في الأمر أدناه تطابق عناوين IP التي تم إخراجها من الأوامر السابقة.

    az network application-gateway address-pool create \
      --gateway-name vehicleAppGateway \
      --resource-group $RG \
      --name vmPool \
      --servers 10.0.1.4 10.0.1.5
    
  4. لإنشاء تجمع خلفي لموقع تجديد الترخيص الذي يعمل على App Service، شغّل الأمر التالي.

    az network application-gateway address-pool create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServicePool \
        --servers $APPSERVICE.azurewebsites.net
    
  5. أمّا المنفذ 80، فقم بإنشاء منفذ أمامي.

    az network application-gateway frontend-port create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name port80 \
        --port 80
    
  6. لمعالجة الطلبات على المنفذ 80، قم بإنشاء وحدة الاستماع.

    az network application-gateway http-listener create \
        --resource-group $RG \
        --name vehicleListener \
        --frontend-port port80 \
        --frontend-ip appGatewayFrontendIP \
        --gateway-name vehicleAppGateway
    

إضافة فحوصات صحية

  1. إنشاء فحص صحي لاختبار توّفر خادم ويب. يعمل الفحص الصحي كل 15 ثانية (--interval 15)، ويرسل طلب HTTP GET إلى مسار الجذر لتطبيق الويب. وإذا لم يستجيب تطبيق الويب في غضون 10 ثوانٍ (--timeout 10)، تنتهي مهلة التحقيق. ويتم وضع علامة على خادم الويب على أنه غير سليم إذا فشل التحقيق ثلاث مرات متتالية (--threshold 3).

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

    az network application-gateway probe create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name customProbe \
        --path / \
        --interval 15 \
        --threshold 3 \
        --timeout 10 \
        --protocol Http \
        --host-name-from-http-settings true
    
  2. بعد ذلك، من أجل استخدام التحقيق من الصحة التي أنشأتها، قم بإنشاء إعدادات HTTP للبوابة.

    az network application-gateway http-settings create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appGatewayBackendHttpSettings \
        --host-name-from-backend-pool true \
        --port 80 \
        --probe customProbe
    

قم بتكوين التوجيه المستند إلى المسار

نحتاج الآن إلى تكوين مسار التوجيه القائم على بوابة التطبيق لدينا. سنقوم بتوجيه طلبات / VehicleRegistration/ إلى vmPool وطلبات إلى /LicenseRenewal/ إلى appServicePool. سيتم توجيه أي طلبات من دون أي سياق URL إلى vmPool بشكل افتراضي.

  1. لإنشاء مخطط المسار من أجل vmPool، شغّل الأمر التالي.

    az network application-gateway url-path-map create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name urlPathMap \
        --paths /VehicleRegistration/* \
        --http-settings appGatewayBackendHttpSettings \
        --address-pool vmPool
    
  2. لإنشاء قاعدة خريطة المسار من أجل appServicePool، شغّل الأمر التالي.

    az network application-gateway url-path-map rule create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServiceUrlPathMap \
        --paths /LicenseRenewal/* \
        --http-settings appGatewayBackendHttpSettings \
        --address-pool appServicePool \
        --path-map-name urlPathMap
    
  3. الآن، قم بإنشاء قاعدة توجيه جديدة باستخدام مخطط المسار الذي قمت بإنشائه.

    az network application-gateway rule create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServiceRule \
        --http-listener vehicleListener \
        --rule-type PathBasedRouting \
        --address-pool appServicePool \
        --url-path-map urlPathMap
    
  4. يتمثل الجزء الأخير من التكوين في حذف القاعدة التي تم إنشاؤها عندما نشرنا بوابة التطبيق مبدئيًا. مع وجود قاعدة مخصصة بالمكان، لم تعد في حاجة إليها.

    az network application-gateway rule delete \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name rule1
    

مع كل شيء يتم إعداده، حان الوقت لاختبار ذلك.