البرنامج التعليمي: إنشاء بوابة تطبيق تعمل على تحسين الوصول إلى تطبيق ويب
إذا كنت مسؤولاً في تكنولوجيا المعلومات مهتماً بتحسين الوصول إلى تطبيق الويب، فيمكنك تحسين بوابة التطبيق لتوسيع نطاقها استناداً إلى طلب العملاء وتوسيع مناطق توفر متعددة. يساعدك هذا البرنامج التعليمي على تكوين ميزات بوابة تطبيق 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