إنشاء بوابة تطبيق تستضيف مواقع ويب متعددة باستخدام Azure CLI
يمكنك استخدام Azure CLI لتكوين استضافة مواقع ويب متعددة عند إنشاء بوابة تطبيق. في هذه المقالة، تقوم بتعريف قائمة العناوين الخلفية باستخدام مجموعات تغيير سعة الأجهزة الظاهرية. يمكنك بعد ذلك تكوين المستمعين والقواعد بناءً على مجالين للتأكد من وصول حركة مرور الويب إلى الخوادم المناسبة في المجمعات. تفترض هذه المقالة أنك تملك مجالات متعددة وتستخدم أمثلة www.contoso.com و www.fabrikam.com.
في هذه المقالة، ستتعرف على كيفية:
- إعداد الشبكة
- إنشاء بوابة تطبيق
- إنشاء وحدة الاستماع الخلفية
- إنشاء قواعد التوجيه
- إنشاء مجموعات مقياس الجهاز الظاهري مع تجمعات الواجهة الخلفية
- إنشاء سجل CNAME في مجالك
إذا كنت تفضل ذلك، يمكنك إكمال هذا الإجراء باستخدام Azure PowerShell.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
المتطلبات الأساسية
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- يتطلب هذا البرنامج التعليمي الإصدار 2.0.4 أو الأحدث من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.
إنشاء مجموعة موارد
وتُعد مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها. قم بإنشاء مجموعة موارد باستخدام az group create.
في المثال التالي، سيتم إنشاء مجموعة موارد باسم "myResourceGroupAG" في "eastus".
az group create --name myResourceGroupAG --location eastus
إنشاء موارد الشبكة
أنشئ الشبكة الظاهرية والشبكة الفرعية المسماة myAGSubnet باستخدام az network vnet create. يمكنك بعد ذلك إضافة الشبكة الفرعية التي تحتاجها خوادم الواجهة الخلفية باستخدام az network vnet subnet create. أنشئ عنوان IP العام المسمى myAGPublicIPAddress باستخدام az network public-ip create.
az network vnet create \
--name myVNet \
--resource-group myResourceGroupAG \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name myAGSubnet \
--subnet-prefix 10.0.1.0/24
az network vnet subnet create \
--name myBackendSubnet \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--address-prefix 10.0.2.0/24
az network public-ip create \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
أنشئ بوابة التطبيق
يمكنك استخدام az network application-gateway create لإنشاء بوابة التطبيق. عند إنشاء بوابة تطبيق باستخدام Azure CLI، فإنك تحدد معلومات التكوين، مثل إعدادات السعة وsku وHTTP. تم تعيين بوابة التطبيق إلى myAGSubnet وmyAGPublicIPAddress اللذين قمت بإنشائهما مسبقاً.
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--subnet myAGsubnet \
--capacity 2 \
--sku Standard_v2 \
--http-settings-cookie-based-affinity Disabled \
--frontend-port 80 \
--http-settings-port 80 \
--http-settings-protocol Http \
--public-ip-address myAGPublicIPAddress \
--priority 10
قد يستغرق إنشاء بوابة التطبيق عدة دقائق. بعد إنشاء بوابة التطبيق، يمكنك رؤية الميزات الجديدة لها:
- appGatewayBackendPool - يجب أن يكون هناك بوابة التطبيق تجمع عنوان الخلفية واحد على الأقل.
- appGatewayBackendHttpSettings - يحدد هذا المنفذ 80 وبروتوكول HTTP يستخدم للاتصال.
- appGatewayHttpListener - المستمع الافتراضية المرتبطة appGatewayBackendPool.
- appGatewayFrontendIP - المتنازل myAGPublicIPAddress إلى appGatewayHttpListener.
- rule1 - قاعدة التحويل توجيه مقترن appGatewayHttpListener.
أضف تجمعات الواجهة الخلفية
أضف تجمعات الواجهة الخلفية اللازمة لاحتواء خوادم الواجهة الخلفية باستخدام az network application-gateway address-pool create
az network application-gateway address-pool create \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name contosoPool
az network application-gateway address-pool create \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name fabrikamPool
أضف مستمعين
أضف المستمعين اللازمين لتوجيه نسبة استخدام الشبكة باستخدام az network application-gateway http-listener create.
إشعار
باستخدام بوابة التطبيق أو WAF v2 SKU، يمكنك أيضًا تكوين ما يصل إلى 5 أسماء مضيف لكل مستمع ويمكنك استخدام أحرف البدل في اسم المضيف. للحصول على مزيد من المعلومات، راجع أسماء مضيف حرف البدل في وحدة الاستماع .
لاستخدام أسماء مضيفين متعددة وأحرف بدل في وحدة استماع باستخدام Azure CLI، يجب استخدام --host-names
بدلا من --host-name
. باستخدام أسماء المضيفين، يمكنك ذكر ما يصل إلى خمسة أسماء مضيفين كقيم مفصولة بمسافات. على سبيل المثال، --host-names "*.contoso.com *.fabrikam.com"
az network application-gateway http-listener create \
--name contosoListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port appGatewayFrontendPort \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway \
--host-name www.contoso.com
az network application-gateway http-listener create \
--name fabrikamListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port appGatewayFrontendPort \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway \
--host-name www.fabrikam.com
أضف قواعد التحويل
تتم معالجة القواعد بالترتيب الذي تم سرده إذا لم يتم استخدام حقل أولوية القاعدة. يتم توجيه نسبة استخدام الشبكة باستخدام القاعدة الأولى المطابقة بغض النظر عن الخصوصية. على سبيل المثال، إذا كانت لديك قاعدة تستخدم مستمعاً أساسيّاً، وقاعدة تستخدم مستمعاً متعدد المواقع على نفس المنفذ، فيجب إدراج القاعدة مع مستمع متعدد المواقع قبل القاعدة مع المستمع الأساسي من أجل متعدد -قاعدة الموقع لتعمل كما هو متوقع.
في هذا المثال، ستنشئ قاعدتين جديدتين وتحذف القاعدة الافتراضية التي تم إنشاؤها عند نشر بوابة التطبيق. يمكنك إضافة القاعدة باستخدام az network application-gateway rule create.
az network application-gateway rule create \
--gateway-name myAppGateway \
--name contosoRule \
--resource-group myResourceGroupAG \
--http-listener contosoListener \
--rule-type Basic \
--address-pool contosoPool \
--priority 200
az network application-gateway rule create \
--gateway-name myAppGateway \
--name fabrikamRule \
--resource-group myResourceGroupAG \
--http-listener fabrikamListener \
--rule-type Basic \
--address-pool fabrikamPool \
--priority 100
az network application-gateway rule delete \
--gateway-name myAppGateway \
--name rule1 \
--resource-group myResourceGroupAG
أضف أولوية إلى قواعد التحويل
لضمان معالجة قواعد أكثر تحديدًا أولًا، استخدم حقل أولوية القاعدة لضمان تمتعها بأولوية أعلى. يجب تعيين حقل أولوية القاعدة لجميع قواعد تحويل الطلب الحالية وأي قاعدة جديدة يتم إنشاؤها لاحقًا يجب أن يكون لها أيضًا قيمة أولوية للقاعدة.
az network application-gateway rule create \
--gateway-name myAppGateway \
--name contosoRule \
--resource-group myResourceGroupAG \
--http-listener contosoListener \
--rule-type Basic \
--priority 200 \
--address-pool contosoPool
az network application-gateway rule create \
--gateway-name myAppGateway \
--name fabrikamRule \
--resource-group myResourceGroupAG \
--http-listener fabrikamListener \
--rule-type Basic \
--priority 100 \
--address-pool fabrikamPool
إنشاء مجموعات مقياس الجهاز الظاهري
في هذا المثال، يمكنك إنشاء ثلاث مجموعات مقياس الجهاز الظاهري التي تدعم تجمعات الواجهة الخلفية الثلاثة في بوابة التطبيق. مجموعات الحجم التي تقوم بإنشائها تسمى myvmss1, myvmss2, and myvmss3. تحتوي كل مجموعة مقياس على مثيلين للجهاز الظاهري الذي تقوم بتثبيت IIS عليه.
for i in `seq 1 2`; do
if [ $i -eq 1 ]
then
poolName="contosoPool"
fi
if [ $i -eq 2 ]
then
poolName="fabrikamPool"
fi
az vmss create \
--name myvmss$i \
--resource-group myResourceGroupAG \
--image Ubuntu2204 \
--admin-username azureuser \
--admin-password Azure123456! \
--instance-count 2 \
--vnet-name myVNet \
--subnet myBackendSubnet \
--vm-sku Standard_D1_v2 \
--upgrade-policy-mode Automatic \
--app-gateway myAppGateway \
--backend-pool-name $poolName
done
قم بتثبيت NGINX
for i in `seq 1 2`; do
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroupAG \
--vmss-name myvmss$i \
--settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"],
"commandToExecute": "./install_nginx.sh" }'
done
إنشاء سجل CNAME في مجالك
بعد إنشاء بوابة التطبيق بعنوان IP العام الخاص بها، يمكنك الحصول على عنوان DNS واستخدامه لإنشاء سجل CNAME في مجالك. يمكنك استخدام az network public-ip show للحصول على عنوان DNS لبوابة التطبيق. انسخ قيمة fqdn لإعدادات DNS واستخدمها كقيمة لسجل CNAME الذي تنشئه.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [dnsSettings.fqdn] \
--output tsv
لا يوصى باستخدام سجلات A لأن VIP قد يتغير عند إعادة تشغيل بوابة التطبيق.
اختبار بوابة التطبيق
أدخل اسم مجالك في شريط العنوان في متصفحك. مثل http://www.contoso.com.
غيّر العنوان إلى مجالك الآخر وسترى شيئًا مثل المثال التالي:
تنظيف الموارد
عند عدم الحاجة إلى ذلك، قم بإزالة مجموعة الموارد، وبوابة التطبيق، وجميع الموارد ذات الصلة.
az group delete --name myResourceGroupAG
الخطوات التالية
إنشاء بوابة تطبيق باستخدام قواعد التوجيه المستندة إلى مسار URL
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ