البرنامج التعليمي: إنشاء بوابة تطبيق تعمل على تحسين الوصول إلى تطبيق ويب

إذا كنت مسؤولاً في تكنولوجيا المعلومات مهتماً بتحسين الوصول إلى تطبيق الويب، فيمكنك تحسين بوابة التطبيق لتوسيع نطاقها استناداً إلى طلب العملاء وتوسيع مناطق توفر متعددة. يساعدك هذا البرنامج التعليمي على تكوين ميزات بوابة تطبيق Azure التي تقوم بذلك: القياس التلقائي، وتكرار المنطقة، وخدمة VIPs المحجوزة (IP ثابت). ستستخدم Azure PowerShell cmdlets ونموذج توزيع إدارة الموارد Azure لحل المشكلة.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء شهادة موقَّعة ذاتيًا
  • إنشاء شبكة افتراضية لمقياس تلقائي
  • قم بإنشاء IP عام محجوز
  • إعداد البنية الأساسية لبوابة التطبيق
  • تحديد مقياس تلقائي
  • أنشئ بوابة التطبيق
  • اختبار بوابة التطبيق

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

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

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

يتطلب هذا البرنامج التعليمي تشغيل جلسة عمل Azure PowerShell إدارية محلياً. يجب أن يكون لديك إصدار الوحدة النمطية Azure PowerShell 1.0.0 أو إصدار أحدث مثبتاً. قم بتشغيل Get-Module -ListAvailable Az للعثور على الإصدار. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. بعد التحقق من إصدار PowerShell، قم بتشغيل Connect-AzAccount لإنشاء اتصال مع Azure.

تسجيل الدخول إلى Azure

Connect-AzAccount
Select-AzSubscription -Subscription "<sub name>"

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

إنشاء مجموعة موارد في أحد المواقع المتوفرة.

$location = "East US 2"
$rg = "AppGW-rg"

#Create a new Resource Group
New-AzResourceGroup -Name $rg -Location $location

إنشاء شهادة موقَّعة ذاتيًا

لاستخدامات الإنتاج، يجب عليك استيراد شهادة صالحة موقعة من موفر موثوق. يمكنك أن تنشئ لهذا البرنامج التعليمي شهادة موقعة ذاتيًّا باستخدام New-SelfSignedCertificate. يمكنك استخدمExport-PfxCertificateمع بصمة الإبهام التي تم إرجاعها لتصدير ملف pfx من الشهادة.

New-SelfSignedCertificate `
  -certstorelocation cert:\localmachine\my `
  -dnsname www.contoso.com

لا بد أن ترى شيئاً مماثلاً لتلك النتيجة:

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my

Thumbprint                                Subject
----------                                -------
E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630  CN=www.contoso.com

استخدم بصمة الإبهام لإنشاء ملف pfx. استبدل <كلمة المرور> بكلمة مرور من اختيارك:

$pwd = ConvertTo-SecureString -String "<password>" -Force -AsPlainText

Export-PfxCertificate `
  -cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
  -FilePath c:\appgwcert.pfx `
  -Password $pwd

إنشاء شبكة ظاهرية

إنشاء شبكة اتصال ظاهرية مع شبكة فرعية مخصصة واحدة لبوابة تطبيق المقياس التلقائي. يمكن حالياً نشر بوابة تطبيق قياس تلقائي واحدة فقط في كل شبكة فرعية مخصصة.

#Create VNet with two subnets
$sub1 = New-AzVirtualNetworkSubnetConfig -Name "AppGwSubnet" -AddressPrefix "10.0.0.0/24"
$sub2 = New-AzVirtualNetworkSubnetConfig -Name "BackendSubnet" -AddressPrefix "10.0.1.0/24"
$vnet = New-AzvirtualNetwork -Name "AutoscaleVNet" -ResourceGroupName $rg `
       -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $sub1, $sub2

قم بإنشاء IP عام محجوز

تحديد أسلوب تخصيص PublicIPAddress باعتباره Static. يمكن أن تكون بوابة تطبيق القياس التلقائي VIP ثابتة فقط. لا يتم اعتماد IPs الديناميكية. يتم اعتماد وحدة PublicIpAddress SKU القياسية فقط.

#Create static public IP
$pip = New-AzPublicIpAddress -ResourceGroupName $rg -name "AppGwVIP" `
       -location $location -AllocationMethod Static -Sku Standard -Zone 1,2,3

استرداد التفاصيل

استرداد تفاصيل مجموعة الموارد والشبكة الفرعية وIP في كائن محلي لإنشاء تفاصيل تكوين IP لبوابة التطبيق.

$publicip = Get-AzPublicIpAddress -ResourceGroupName $rg -name "AppGwVIP"
$vnet = Get-AzvirtualNetwork -Name "AutoscaleVNet" -ResourceGroupName $rg
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "AppGwSubnet" -VirtualNetwork $vnet

إنشاء تطبيقات ويب

تكوين اثنين من تطبيقات الويب لتجمع الواجهة الخلفية. استبدل <site1-name> و< site-2-name> بأسماء فريدة في azurewebsites.net المجال.

New-AzAppServicePlan -ResourceGroupName $rg -Name "ASP-01"  -Location $location -Tier Basic `
   -NumberofWorkers 2 -WorkerSize Small
New-AzWebApp -ResourceGroupName $rg -Name <site1-name> -Location $location -AppServicePlan ASP-01
New-AzWebApp -ResourceGroupName $rg -Name <site2-name> -Location $location -AppServicePlan ASP-01

تكوين البنية الأساسية

قم بتكوين تكوين IP وتكوين IP للواجهة الأمامية وتجمع الواجهة الخلفية وإعدادات HTTP والشهادة والمنفذ والمستمع والقاعدة بتنسيق متطابق مع بوابة التطبيق القياسية الموجودة. يتبع SKU الجديد طراز الكائن نفسه كوحدة SKU قياسية.

استبدل تطبيقي الويب FQDNs (على سبيل المثال: mywebapp.azurewebsites.net) في تعريف المتغير $pool.

$ipconfig = New-AzApplicationGatewayIPConfiguration -Name "IPConfig" -Subnet $gwSubnet
$fip = New-AzApplicationGatewayFrontendIPConfig -Name "FrontendIPCOnfig" -PublicIPAddress $publicip
$pool = New-AzApplicationGatewayBackendAddressPool -Name "Pool1" `
       -BackendIPAddresses <your first web app FQDN>, <your second web app FQDN>
$fp01 = New-AzApplicationGatewayFrontendPort -Name "SSLPort" -Port 443
$fp02 = New-AzApplicationGatewayFrontendPort -Name "HTTPPort" -Port 80

$securepfxpwd = ConvertTo-SecureString -String "Azure123456!" -AsPlainText -Force
$sslCert01 = New-AzApplicationGatewaySslCertificate -Name "SSLCert" -Password $securepfxpwd `
            -CertificateFile "c:\appgwcert.pfx"
$listener01 = New-AzApplicationGatewayHttpListener -Name "SSLListener" `
             -Protocol Https -FrontendIPConfiguration $fip -FrontendPort $fp01 -SslCertificate $sslCert01
$listener02 = New-AzApplicationGatewayHttpListener -Name "HTTPListener" `
             -Protocol Http -FrontendIPConfiguration $fip -FrontendPort $fp02

$setting = New-AzApplicationGatewayBackendHttpSettings -Name "BackendHttpSetting1" `
          -Port 80 -Protocol Http -CookieBasedAffinity Disabled -PickHostNameFromBackendAddress
$rule01 = New-AzApplicationGatewayRequestRoutingRule -Name "Rule1" -RuleType basic `
         -BackendHttpSettings $setting -HttpListener $listener01 -BackendAddressPool $pool
$rule02 = New-AzApplicationGatewayRequestRoutingRule -Name "Rule2" -RuleType basic `
         -BackendHttpSettings $setting -HttpListener $listener02 -BackendAddressPool $pool

تحديد مقياس تلقائي

يمكنك الآن تحديد تكوين مقياس تلقائي لبوابة التطبيق.

$autoscaleConfig = New-AzApplicationGatewayAutoscaleConfiguration -MinCapacity 2
$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2

في هذا الوضع، يتم قياس بوابة التطبيق تلقائياً استناداً إلى نمط حركة مرور التطبيق.

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

إنشاء بوابة التطبيق وتضمين مناطق التكرار وتكوين التدرج التلقائي.

$appgw = New-AzApplicationGateway -Name "AutoscalingAppGw" -Zone 1,2,3 `
  -ResourceGroupName $rg -Location $location -BackendAddressPools $pool `
  -BackendHttpSettingsCollection $setting -GatewayIpConfigurations $ipconfig `
  -FrontendIpConfigurations $fip -FrontendPorts $fp01, $fp02 `
  -HttpListeners $listener01, $listener02 -RequestRoutingRules $rule01, $rule02 `
  -Sku $sku -sslCertificates $sslCert01 -AutoscaleConfiguration $autoscaleConfig

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

استخدم Get-AzPublicIPAddress للحصول على عنوان IP العام لبوابة التطبيق. نسخ عنوان IP العام أو اسم DNS، ثم ألصقه في شريط العنوان في متصفحك.

$pip = Get-AzPublicIPAddress -ResourceGroupName $rg -Name AppGwVIP
$pip.IpAddress

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

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

Remove-AzResourceGroup -Name $rg

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