البدء السريع: حركة مرور الويب المباشرة باستخدام Azure Application Gateway - Azure CLI

في هذا التشغيل السريع، يمكنك استخدام Azure CLI لإنشاء بوابة تطبيق. ثم يمكنك اختباره للتأكد من أنه يعمل بصورةٍ صحيحة.

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

رسم تخطيطي تصوري لإعداد التشغيل السريع.

يمكنك أيضاً إكمال هذا التشغيل السريع باستخدام Azure PowerShell أو مدخل Azure.

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

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

  • يتطلب هذا العنصر الإصدار 2.0.4 أو أحدث من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.

إشعار

تدعم الواجهة الأمامية لبوابة التطبيق الآن عناوين IP مزدوجة المكدس (معاينة). يمكنك الآن إنشاء ما يصل إلى أربعة عناوين IP للواجهة الأمامية: عنوانان IPv4 (عام وخاصة) وعنوانين IPv6 (عام وخاصة).

إنشاء مجموعة الموارد

في Azure، تقوم بتخصيص الموارد ذات الصلة لمجموعة موارد. إنشاء مجموعة موارد باستخدام az group create.

في المثال التالي، سيتم إنشاء مجموعة موارد باسم "myResourceGroupAG" في "eastus".

az group create --name myResourceGroupAG --location eastus

إنشاء موارد الشبكة

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

إشعار

تدعم الواجهة الأمامية لبوابة التطبيق الآن عناوين IP مزدوجة المكدس (معاينة عامة). يمكنك الآن إنشاء ما يصل إلى أربعة عناوين IP للواجهة الأمامية: عنوانان IPv4 (عام وخاصة) وعنوانين IPv6 (عام وخاصة).

لإنشاء الشبكة الافتراضية والشبكة الفرعية، استخدم az network vnet create. قم بتشغيل az network public-ip create لإنشاء عنوان IP العام.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location eastus \
  --address-prefix 10.21.0.0/16 \
  --subnet-name myAGSubnet \
  --subnet-prefix 10.21.0.0/24
az network vnet subnet create \
  --name myBackendSubnet \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet   \
  --address-prefix 10.21.1.0/24
az network public-ip create \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard

إنشاء خوادم الخلفية

يمكن أن تحتوي الواجهة الخلفية على NICs ومجموعات مقياس الجهاز الظاهري وعناوين IP العامة وعناوين IP الداخلية وأسماء المجال المؤهلة بالكامل (FQDN) والخلفيات متعددة المستأجرين مثل Azure App Service. في هذا المثال، يمكنك إنشاء جهازي ظاهري لاستخدامها كخوادم خلفية لبوابة التطبيق. يمكنك أيضا تثبيت NGINX على الأجهزة الظاهرية لاختبار بوابة التطبيق.

إنشاء جهازين ظاهريين

قم بتثبيت خادم الويب NGINX على الأجهزة الظاهرية للتحقق من إنشاء بوابة التطبيق بنجاح. يمكنك استخدام ملف التكوين السحابي لتثبيت NGINX وتشغيل تطبيق "Hello World" Node.js على جهاز Linux الظاهري. لمزيد من المعلومات حول cloud-init، راجع دعم Cloud-init للأجهزة الظاهرية في Azure .

في Azure Cloud Shell، انسخ التكوين التالي والصقه في ملف باسم cloud-init.txt. أدخل editor cloud-init.txt لإنشاء الملف.

#cloud-config
package_upgrade: true
packages:
  - nginx
  - nodejs
  - npm
write_files:
  - owner: www-data:www-data
  - path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
  - path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })
runcmd:
  - service nginx restart
  - cd "/home/azureuser/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

قم بإنشاء واجهات الشبكة باستخدام az network nic create. لإنشاء الأجهزة الظاهرية، استخدم az vm create.

for i in `seq 1 2`; do
  az network nic create \
    --resource-group myResourceGroupAG \
    --name myNic$i \
    --vnet-name myVNet \
    --subnet myBackendSubnet
  az vm create \
    --resource-group myResourceGroupAG \
    --name myVM$i \
    --nics myNic$i \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt
done

أنشئ بوابة التطبيق

إنشاء بوابة التطبيق باستخدام az network application-gateway create. عند إنشاء بوابة تطبيق باستخدام Azure CLI، يمكنك تحديد معلومات التكوين، مثل السعة وSKU (على سبيل المثال: Basic) وإعدادات HTTP. يضيف Azure بعد ذلك عناوين IP الخاصة لواجهات الشبكة كخوادم في تجمع الواجهة الخلفية لبوابة التطبيق.

يتم استخدام Standard v2 SKU في هذا المثال.

address1=$(az network nic show --name myNic1 --resource-group myResourceGroupAG | grep "\"privateIPAddress\":" | grep -oE '[^ ]+$' | tr -d '",')
address2=$(az network nic show --name myNic2 --resource-group myResourceGroupAG | grep "\"privateIPAddress\":" | grep -oE '[^ ]+$' | tr -d '",')
az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --capacity 2 \
  --sku Standard_v2 \
  --public-ip-address myAGPublicIPAddress \
  --vnet-name myVNet \
  --subnet myAGSubnet \
  --servers "$address1" "$address2" \
  --priority 100

قد يستغرق Azure ما يصل إلى 30 دقيقة لإنشاء بوابة التطبيق. بعد إنشائه، يمكنك عرض الإعدادات التالية في قسم الإعدادات في صفحة بوابة التطبيق:

  • appGatewayBackendPool: موجود في صفحة تجمع الخلفية. يحدد تجمع الخلفية المطلوبة.
  • appGatewayBackendHttpSettings: موجود في صفحة إعدادات HTTP. وهي تحدد أن بوابة التطبيق تستخدم المنفذ 80 وبروتوكول HTTP للاتصال.
  • app Gateway Http Listener: موجود في صفحة المستمعين. وهي تحدد المستمع الافتراضي المرتبط بـ appGatewayBackendPool.
  • appGatewayFrontendIP: موجود في صفحة تكوينات IP للواجهة الأمامية. تقوم بتعيين myAGPublicIPAddress إلى app Gateway Http Listener.
  • rule1: توجد في صفحة القواعد. وهي تحدد قاعدة التوجيه الافتراضية المرتبطة بـ appGatewayHttpListener.

اختبار بوابة التطبيق

على الرغم من أن Azure لا يتطلب خادم ويب NGINX لإنشاء بوابة التطبيق، فقد قمت بتثبيته في هذا التشغيل السريع للتحقق مما إذا كان Azure قد أنشأ بوابة التطبيق بنجاح. للحصول على عنوان IP العام لبوابة التطبيق الجديدة، استخدم az network public-ip show.

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

انسخ والصق عنوان IP العام في شريط العنوان في متصفحك. ​ اختبار بوابة التطبيق

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

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

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

az group delete --name myResourceGroupAG

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