التدريب- إنشاء بوابة التطبيق وتكوينها
تنصت بوابة التطبيق إلى نقطة طرفية للطلبات الواردة، ويحيل هذه الطلبات إلى أحد خوادم الويب في تجمعها الخلفي. يمكنك توفير التكوين الذي يصف كيفية توجيه بوابة التطبيق لنسبة استخدام الشبكة، وكيفية تحميل طلبات التوازن عبر خوادم ويب.
في نظام قسم السيارات، تحتاج إلى تكوين بوابة التطبيق لتحمل موازنة الطلبات الواردة عبر خوادم الويب التي تستضيف تطبيق ويب لتسجيل السيارة. تحتاج أيضًا إلى تكوين بوابة التطبيق للكشف عن تعطل أحد خوادم الويب، بحيث يمكن إعادة توجيه نسبة استخدام الشبكة إلى خادم عامل. إضافة إلى ذلك، تحتاج إلى تكوين مسار التوجيه لإرسال طلبات تسجيل السيارة ومواقع تجديد الترخيص إلى خدمات ويب خلفية مناسبة.
في هذا التمرين، ستقوم بإنشاء مثيل لبوابة التطبيقات مع تجمع خلفية لخوادم الويب. عليك التحقق من تكوين بوابة التطبيق مع وحدة الإصغاء الصحيحة لمعالجة طلبات HTTP الواردة، ثم توجيه تلك الطلبات إلى خادم ويب ذي وظيفة.
تكوين شبكة الاتصال لبوابة التطبيق
لإنشاء الشبكة الفرعية الخاصة المطلوبة من بوابة التطبيق، شغّل الأمر التالي. تُسمى الشبكة الفرعية
appGatewaySubnet، فيvehicleAppVnetالشبكة الظاهرية التي قمت بإنشائها في التمرين السابق.az network vnet subnet create \ --resource-group $RG \ --vnet-name vehicleAppVnet \ --name appGatewaySubnet \ --address-prefixes 10.0.0.0/24لإنشاء عنوان IP عام وتسمية DNS لبوابة التطبيق، شغّل الأمر التالي. يجب أن تكون تسمية DNS فريدة من نوعها على مستوى عالمي. لإنشاء تسمية، تستخدم التعليمات البرمجية التالية وظيفة
$RANDOM.az network public-ip create \ --resource-group $RG \ --name appGatewayPublicIp \ --sku Standard \ --dns-name vehicleapp${RANDOM}
إنشاء بوابة تطبيق
إنشاء بوابة تطبيق باسم
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ملاحظة
يمكن أن يستغرق هذا الأمر عدة دقائق لينتهي.
للبحث عن عناوين IP
webServer1وwebServer2، شغّل الأوامر التالية. ستحفظ ذلك في متغيرات لاستخدامها في الأمر التالي.az vm list-ip-addresses \ --resource-group $RG \ --name webServer1 \ --query [0].virtualMachine.network.privateIpAddresses[0] \ --output tsvaz vm list-ip-addresses \ --resource-group $RG \ --name webserver2 \ --query [0].virtualMachine.network.privateIpAddresses[0] \ --output tsvبعد ذلك، سنقوم بإضافة تجمعات خلفية لكل موقع ويب. أولًا، قم بإنشاء تجمع خلفي لموقع تسجيل السيارة الذي يعمل على الأجهزة الافتراضية. تأكد من أن عناوين 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لإنشاء تجمع خلفي لموقع تجديد الترخيص الذي يعمل على App Service، شغّل الأمر التالي.
az network application-gateway address-pool create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServicePool \ --servers $APPSERVICE.azurewebsites.netأمّا المنفذ 80، فقم بإنشاء منفذ أمامي.
az network application-gateway frontend-port create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name port80 \ --port 80لمعالجة الطلبات على المنفذ 80، قم بإنشاء وحدة الاستماع.
az network application-gateway http-listener create \ --resource-group $RG \ --name vehicleListener \ --frontend-port port80 \ --frontend-ip appGatewayFrontendIP \ --gateway-name vehicleAppGateway
إضافة فحوصات صحية
إنشاء فحص صحي لاختبار توّفر خادم ويب. يعمل الفحص الصحي كل 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بعد ذلك، من أجل استخدام التحقيق من الصحة التي أنشأتها، قم بإنشاء إعدادات 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 بشكل افتراضي.
لإنشاء مخطط المسار من أجل 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لإنشاء قاعدة خريطة المسار من أجل 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الآن، قم بإنشاء قاعدة توجيه جديدة باستخدام مخطط المسار الذي قمت بإنشائه.
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يتمثل الجزء الأخير من التكوين في حذف القاعدة التي تم إنشاؤها عندما نشرنا بوابة التطبيق مبدئيًا. مع وجود قاعدة مخصصة بالمكان، لم تعد في حاجة إليها.
az network application-gateway rule delete \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name rule1
مع كل شيء يتم إعداده، حان الوقت لاختبار ذلك.
هل تحتاج إلى مساعدة؟ راجع دليل استكشاف الأخطاء وإصلاحها الذي نقدمه أو يمكنك توفير ملاحظات معينة عبر الإبلاغ عن مشكلة.