البدء السريع: حركة مرور الويب المباشرة باستخدام Azure Application Gateway - Azure CLI
في هذا التشغيل السريع، يمكنك استخدام Azure CLI لإنشاء بوابة تطبيق. ثم يمكنك اختباره للتأكد من أنه يعمل بصورةٍ صحيحة.
توجه application gateway حركة مرور الويب للتطبيق إلى موارد محددة في التجمع الخلفي. تُعين وحدات الاستماع إلى المنافذ، وتنشئ قواعد، وتضيف موارد إلى التجمع الخلفي. من أجل البساطة، تستخدم هذه المقالة إعدادا بسيطا بعنوان IP للواجهة الأمامية العامة، ومستمعا أساسيا لاستضافة موقع واحد على بوابة التطبيق، وقاعدة توجيه طلب أساسية، واثنين من الأجهزة الظاهرية في تجمع الخلفية.
يمكنك أيضاً إكمال هذا التشغيل السريع باستخدام Azure PowerShell أو مدخل Azure.
إذا لم يكن لديك اشتراك في 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، يتم تثبيت أحدث إصدار بالفعل.
إشعار
تدعم الواجهة الأمامية لبوابة التطبيق الآن عناوين 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