إنشاء بوابة تطبيق تستضيف مواقع ويب متعددة باستخدام Azure CLI

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

في هذه المقالة، ستتعرف على كيفية:

  • إعداد الشبكة
  • إنشاء بوابة تطبيق
  • إنشاء وحدة الاستماع الخلفية
  • إنشاء قواعد التوجيه
  • إنشاء مجموعات مقياس الجهاز الظاهري مع تجمعات الواجهة الخلفية
  • إنشاء سجل CNAME في مجالك

Multi-site Application Gateway

إذا كنت تفضل ذلك، يمكنك إكمال هذا الإجراء باستخدام Azure PowerShell.

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

المتطلبات الأساسية

  • يتطلب هذا البرنامج التعليمي الإصدار 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.

Test contoso site in application gateway

غيّر العنوان إلى مجالك الآخر وسترى شيئًا مثل المثال التالي:

Test fabrikam site in application gateway

تنظيف الموارد

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

az group delete --name myResourceGroupAG

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

إنشاء بوابة تطبيق باستخدام قواعد التوجيه المستندة إلى مسار URL