إنشاء بوابة تطبيق باستخدام إعادة توجيه تستند إلى مسار عنوان URL باستخدام Azure PowerShell
يمكنك استخدام Azure PowerShell لتكوين قواعد التحويل المستندة إلى عنوان URL عند إنشاء بوابة تطبيق. في هذه المقالة، يمكنك إنشاء تجمعات الواجهة الخلفية باستخدام مجموعات تحجيم الجهاز الظاهري. يمكنك بعد ذلك إنشاء قواعد توجيه URL التي تتأكد من قاعدة التحويل لحركة مرور الويب إلى تجمع الخلفية المناسب.
في هذه المقالة، ستتعرف على كيفية:
- إعداد الشبكة
- إنشاء بوابة تطبيق
- أضف المستمعين وقاعدة التحويل
- إنشاء مجموعات مقياس آلة افتراضية لمجموعات الواجهة الخلفية
يوضح المثال التالي حركة مرور الموقع القادمة من المنفذين 8080 و8081 ويتم توجيهها إلى نفس تجمعات الواجهة الخلفية:
إذا كنت تفضل ذلك، فيمكنك إكمال هذا الإجراء باستخدام Azure CLI.
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
إشعار
نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.
Azure Cloud Shell
Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.
لبدء Azure Cloud Shell:
خيار | مثال/ رابط |
---|---|
انقر فوق جربه في الزاوية العلوية اليسرى من التعليمة البرمجية أو كتلة الأمر. تحديد جربه لا يقوم بنسخ التعليمة البرمجية أو الأمر تلقائيًا إلى Cloud Shell. | |
انتقل إلى https://shell.azure.com، أو حدد زر تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. | |
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. |
لاستخدام Azure Cloud Shell:
ابدأ تشغيل Cloud Shell.
حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.
ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.
حدد Enter لتشغيل التعليمات البرمجية أو الأمر.
إذا اخترت تثبيت PowerShell واستخدامه محلياً، فإن هذا الإجراء يتطلب إصدار الوحدة النمطية Azure PowerShell 1.0.0 أو إصدار أحدث. للعثور على الإصدار، قم بتشغيل Get-Module -ListAvailable Az
. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. في حالة تشغيل PowerShell محليًا، فأنت بحاجة أيضًا إلى تشغيل Connect-AzAccount
لإنشاء اتصال مع Azure.
إنشاء مجموعة موارد
وتُعد مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها. أنشئ مجموعة موارد Azure باستخدام New-AzResourceGroup.
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
إنشاء موارد الشبكة
إنشاء تكوينات الشبكة الفرعية لـ myBackendSubnet وmyAGSubnet باستخدام New-AzVirtualNetworkSubnetConfig. إنشاء شبكة الاتصال الظاهرية myVNet باستخدام New-AzVirtualNetwork من خلال تكوينات الشبكة الفرعية. أنشئ عنوان IP عاماً باسم myPublicIPAddress باستخدام New-AzPublicIpAddress: تُستخدم هذه الموارد لتوفير اتصال الشبكة ببوابة التطبيق والموارد المرتبطة بها.
$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet `
-AddressPrefix 10.0.1.0/24
$agSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name myAGSubnet `
-AddressPrefix 10.0.2.0/24
New-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Name myVNet `
-AddressPrefix 10.0.0.0/16 `
-Subnet $backendSubnetConfig, $agSubnetConfig
New-AzPublicIpAddress `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Name myAGPublicIPAddress `
-AllocationMethod Dynamic
إنشاء بوابة تطبيق
في هذا القسم، تقوم بإنشاء موارد تدعم بوابة التطبيق، ثم تقوم في النهاية بإنشائها. تتضمن الموارد التي تقوم بإنشائها ما يلي:
- تكوينات IP ومنفذ الواجهة الأمامية - تربط الشبكة الفرعية التي قمت بإنشائها مسبقاً ببوابة التطبيق وتعين منفذ لاستخدامه للوصول إليها.
- المجموعة الافتراضية - يجب أن تحتوي جميع بوابات التطبيقات على مجموعة خوادم خلفية واحدة على الأقل.
- المستمع الافتراضي والقاعدة الافتراضية - المستمع الافتراضي يسجل نسبة استخدام الشبكة في المنفذ الذي تم تعيينه وترسل القاعدة الافتراضية نسبة استخدام الشبكة إلى المجموعة الافتراضية.
إنشاء تكوينات IP ومنفذ الواجهة الأمامية
قم بربط myAGSubnet الذي قمت بإنشائه مسبقا ببوابة التطبيق باستخدام New-AzApplicationGatewayIPConfiguration. قم بتعيين myAGPublicIPAddress إلى بوابة التطبيق باستخدام New-AzApplicationGatewayFrontendIPConfig. وبعد ذلك يمكنك إنشاء منفذ HTTP باستخدام New-AzApplicationGatewayFrontendPort.
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$subnet=$vnet.Subnets[0]
$pip = Get-AzPublicIpAddress `
-ResourceGroupName myResourceGroupAG `
-Name myAGPublicIPAddress
$gipconfig = New-AzApplicationGatewayIPConfiguration `
-Name myAGIPConfig `
-Subnet $subnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPConfig `
-PublicIPAddress $pip
$frontendport = New-AzApplicationGatewayFrontendPort `
-Name myFrontendPort `
-Port 80
إنشاء المجموعة والإعدادات الافتراضية
إنشاء مجموعة الواجهة الخلفية الافتراضية المسماة appGatewayBackendPool لبوابة التطبيق باستخدام New-AzApplicationGatewayBackendAddressPool. قم تكوين إعدادات مجموعة الواجهة الخلفية باستخدام New-AzApplicationGatewayBackendHttpSettings.
$defaultPool = New-AzApplicationGatewayBackendAddressPool `
-Name appGatewayBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSettings `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 120
إنشاء وحدة الاستماع والقاعدة الافتراضية
يلزم توفر وحدة استماع لتمكين بوابة التطبيق لتوجيه نسبة استخدام الشبكة بشكل مناسب إلى مجموعة الواجهة الخلفية. في هذه المقالة، يمكنك إنشاء عدة وحدات استماع. يتوقع المستمع الأساسي الأول حركة المرور في عنوان URL الجذر. يتوقع المستمعون الآخرون حركة المرور على عناوين URL محددة، مثل http://52.168.55.24:8080/images/
أو http://52.168.55.24:8081/video/
.
قم بإنشاء وحدة استماع باسم defaultListener باستخدام New-AzApplicationGatewayHttpListener مع تكوين الواجهة الأمامية ومنفذ الواجهة الأمامية الذي قمت بإنشائه مسبقاً. يلزم وجود قاعدة لوحدة الاستماع لمعرفة أي مجموعة واجهة خلفية يستخدم لنسبة استخدام الشبكة الواردة. قم بإنشاء قاعدة أساسية تسمى rule1 باستخدام New-AzApplicationGatewayRequestRoutingRule.
$defaultlistener = New-AzApplicationGatewayHttpListener `
-Name defaultListener `
-Protocol Http `
-FrontendIPConfiguration $fipconfig `
-FrontendPort $frontendport
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
-Name rule1 `
-RuleType Basic `
-HttpListener $defaultlistener `
-BackendAddressPool $defaultPool `
-BackendHttpSettings $poolSettings
أنشئ بوابة التطبيق
الآن بعد أن أنشأت موارد الدعم الضرورية، حدّد معلمات بوابة التطبيق المسماة myAppGateway باستخدام New-AzApplicationGatewaySku، ثم قم بإنشائها باستخدام New-AzApplicationGateway.
$sku = New-AzApplicationGatewaySku `
-Name Standard_Medium `
-Tier Standard `
-Capacity 2
New-AzApplicationGateway `
-Name myAppGateway `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-BackendAddressPools $defaultPool `
-BackendHttpSettingsCollection $poolSettings `
-FrontendIpConfigurations $fipconfig `
-GatewayIpConfigurations $gipconfig `
-FrontendPorts $frontendport `
-HttpListeners $defaultlistener `
-RequestRoutingRules $frontendRule `
-Sku $sku
أضف تجمعات ومنافذ خلفية
يمكنك إضافة مجموعة الواجهة الخلفية في بوابة التطبيق باستخدام Add-AzApplicationGatewayBackendAddressPool. في هذا المثال، يتم إنشاء imagesBackendPool وvideoBackendPool. يمكنك إضافة منفذ الواجهة الأمامية للمجموعات باستخدام Add-AzApplicationGatewayFrontendPort. ثم تقوم بإرسال التغييرات إلى بوابة التطبيق باستخدام Set-AzApplicationGateway.
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
Add-AzApplicationGatewayBackendAddressPool `
-ApplicationGateway $appgw `
-Name imagesBackendPool
Add-AzApplicationGatewayBackendAddressPool `
-ApplicationGateway $appgw `
-Name videoBackendPool
Add-AzApplicationGatewayFrontendPort `
-ApplicationGateway $appgw `
-Name bport `
-Port 8080
Add-AzApplicationGatewayFrontendPort `
-ApplicationGateway $appgw `
-Name rport `
-Port 8081
Set-AzApplicationGateway -ApplicationGateway $appgw
أضف المستمعين والقواعد
أضف مستمعين
أضف وحدتي استماع الواجهة الخلفية المسماة backendListener و redirectedListener اللازمتين لتوجيه نسبة استخدام الشبكة باستخدام Add-AzApplicationGatewayHttpListener.
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$backendPort = Get-AzApplicationGatewayFrontendPort `
-ApplicationGateway $appgw `
-Name bport
$redirectPort = Get-AzApplicationGatewayFrontendPort `
-ApplicationGateway $appgw `
-Name rport
$fipconfig = Get-AzApplicationGatewayFrontendIPConfig `
-ApplicationGateway $appgw
Add-AzApplicationGatewayHttpListener `
-ApplicationGateway $appgw `
-Name backendListener `
-Protocol Http `
-FrontendIPConfiguration $fipconfig `
-FrontendPort $backendPort
Add-AzApplicationGatewayHttpListener `
-ApplicationGateway $appgw `
-Name redirectedListener `
-Protocol Http `
-FrontendIPConfiguration $fipconfig `
-FrontendPort $redirectPort
Set-AzApplicationGateway -ApplicationGateway $appgw
أضف خريطة مسار URL الافتراضية
تتأكد خرائط مسار عنوان URL من أن عناوين URL المحددة يتم توجيهها إلى مجموعات محددة في الواجهة الخلفية. يمكنك إنشاء خرائط مسار عنوان URL المسماة imagePathRule وvideoPathRule باستخدام New-AzApplicationGatewayPathRuleConfig وAdd-AzApplicationGatewayUrlPathMapConfig.
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$poolSettings = Get-AzApplicationGatewayBackendHttpSettings `
-ApplicationGateway $appgw `
-Name myPoolSettings
$imagePool = Get-AzApplicationGatewayBackendAddressPool `
-ApplicationGateway $appgw `
-Name imagesBackendPool
$videoPool = Get-AzApplicationGatewayBackendAddressPool `
-ApplicationGateway $appgw `
-Name videoBackendPool
$defaultPool = Get-AzApplicationGatewayBackendAddressPool `
-ApplicationGateway $appgw `
-Name appGatewayBackendPool
$imagePathRule = New-AzApplicationGatewayPathRuleConfig `
-Name imagePathRule `
-Paths "/images/*" `
-BackendAddressPool $imagePool `
-BackendHttpSettings $poolSettings
$videoPathRule = New-AzApplicationGatewayPathRuleConfig `
-Name videoPathRule `
-Paths "/video/*" `
-BackendAddressPool $videoPool `
-BackendHttpSettings $poolSettings
Add-AzApplicationGatewayUrlPathMapConfig `
-ApplicationGateway $appgw `
-Name urlpathmap `
-PathRules $imagePathRule, $videoPathRule `
-DefaultBackendAddressPool $defaultPool `
-DefaultBackendHttpSettings $poolSettings
Set-AzApplicationGateway -ApplicationGateway $appgw
إضافة تكوين إعادة التوجيه
يمكنك تكوين إعادة توجيه وحدة الاستماع باستخدام Add-AzApplicationGatewayRedirectConfiguration.
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$backendListener = Get-AzApplicationGatewayHttpListener `
-ApplicationGateway $appgw `
-Name backendListener
$redirectConfig = Add-AzApplicationGatewayRedirectConfiguration `
-ApplicationGateway $appgw `
-Name redirectConfig `
-RedirectType Found `
-TargetListener $backendListener `
-IncludePath $true `
-IncludeQueryString $true
Set-AzApplicationGateway -ApplicationGateway $appgw
أضف خريطة مسار عنوان URL لإعادة التوجيه
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$poolSettings = Get-AzApplicationGatewayBackendHttpSettings `
-ApplicationGateway $appgw `
-Name myPoolSettings
$defaultPool = Get-AzApplicationGatewayBackendAddressPool `
-ApplicationGateway $appgw `
-Name appGatewayBackendPool
$redirectConfig = Get-AzApplicationGatewayRedirectConfiguration `
-ApplicationGateway $appgw `
-Name redirectConfig
$redirectPathRule = New-AzApplicationGatewayPathRuleConfig `
-Name redirectPathRule `
-Paths "/images/*" `
-RedirectConfiguration $redirectConfig
Add-AzApplicationGatewayUrlPathMapConfig `
-ApplicationGateway $appgw `
-Name redirectpathmap `
-PathRules $redirectPathRule `
-DefaultBackendAddressPool $defaultPool `
-DefaultBackendHttpSettings $poolSettings
Set-AzApplicationGateway -ApplicationGateway $appgw
أضف قواعد التحويل
تربط قواعد التحويل خرائط عنوان URL بوحدات الاستماع التي قمت بإنشائها. يمكنك إضافة القواعد المسماة defaultRule وredirectedRule باستخدام Add-AzApplicationGatewayRequestRoutingRule.
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$backendlistener = Get-AzApplicationGatewayHttpListener `
-ApplicationGateway $appgw `
-Name backendListener
$redirectlistener = Get-AzApplicationGatewayHttpListener `
-ApplicationGateway $appgw `
-Name redirectedListener
$urlPathMap = Get-AzApplicationGatewayUrlPathMapConfig `
-ApplicationGateway $appgw `
-Name urlpathmap
$redirectPathMap = Get-AzApplicationGatewayUrlPathMapConfig `
-ApplicationGateway $appgw `
-Name redirectpathmap
Add-AzApplicationGatewayRequestRoutingRule `
-ApplicationGateway $appgw `
-Name defaultRule `
-RuleType PathBasedRouting `
-HttpListener $backendlistener `
-UrlPathMap $urlPathMap
Add-AzApplicationGatewayRequestRoutingRule `
-ApplicationGateway $appgw `
-Name redirectedRule `
-RuleType PathBasedRouting `
-HttpListener $redirectlistener `
-UrlPathMap $redirectPathMap
Set-AzApplicationGateway -ApplicationGateway $appgw
إنشاء مجموعات مقياس آلة افتراضية
في هذا المثال، تقوم بإنشاء ثلاث مجموعات مقاييس آلة افتراضية تدعم تجمعات الواجهة الخلفية الثلاثة التي قمت بإنشائها. مجموعات الحجم التي تقوم بإنشائها تسمى myvmss1, myvmss2, and myvmss3. تحتوي كل مجموعة مقياس على مثيلين للجهاز الظاهري الذي تقوم بتثبيت IIS عليه. يمكنك تعيين المقياس لمجموعة الواجهة الخلفية عند تكوين إعدادات IP.
استبدل <اسم المستخدم> وكلمة <المرور> بالقيم الخاصة بك قبل تشغيل البرنامج النصي.
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$backendPool = Get-AzApplicationGatewayBackendAddressPool `
-Name appGatewayBackendPool `
-ApplicationGateway $appgw
$imagesPool = Get-AzApplicationGatewayBackendAddressPool `
-Name imagesBackendPool `
-ApplicationGateway $appgw
$videoPool = Get-AzApplicationGatewayBackendAddressPool `
-Name videoBackendPool `
-ApplicationGateway $appgw
for ($i=1; $i -le 3; $i++)
{
if ($i -eq 1)
{
$poolId = $backendPool.Id
}
if ($i -eq 2)
{
$poolId = $imagesPool.Id
}
if ($i -eq 3)
{
$poolId = $videoPool.Id
}
$ipConfig = New-AzVmssIpConfig `
-Name myVmssIPConfig$i `
-SubnetId $vnet.Subnets[1].Id `
-ApplicationGatewayBackendAddressPoolsId $poolId
$vmssConfig = New-AzVmssConfig `
-Location eastus `
-SkuCapacity 2 `
-SkuName Standard_DS2 `
-UpgradePolicyMode Automatic
Set-AzVmssStorageProfile $vmssConfig `
-ImageReferencePublisher MicrosoftWindowsServer `
-ImageReferenceOffer WindowsServer `
-ImageReferenceSku 2016-Datacenter `
-ImageReferenceVersion latest `
-OsDiskCreateOption FromImage
Set-AzVmssOsProfile $vmssConfig `
-AdminUsername <username> `
-AdminPassword "<password>" `
-ComputerNamePrefix myvmss$i
Add-AzVmssNetworkInterfaceConfiguration `
-VirtualMachineScaleSet $vmssConfig `
-Name myVmssNetConfig$i `
-Primary $true `
-IPConfiguration $ipConfig
New-AzVmss `
-ResourceGroupName myResourceGroupAG `
-Name myvmss$i `
-VirtualMachineScaleSet $vmssConfig
}
تثبيت IIS
$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/appgatewayurl.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }
for ($i=1; $i -le 3; $i++)
{
$vmss = Get-AzVmss -ResourceGroupName myResourceGroupAG -VMScaleSetName myvmss$i
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
-Name "customScript" `
-Publisher "Microsoft.Compute" `
-Type "CustomScriptExtension" `
-TypeHandlerVersion 1.8 `
-Setting $publicSettings
Update-AzVmss `
-ResourceGroupName myResourceGroupAG `
-Name myvmss$i `
-VirtualMachineScaleSet $vmss
}
اختبار بوابة التطبيق
يمكنك استخدام Get-AzPublicIPAddress للحصول على عنوان IP العام لبوابة التطبيق. نسخ عنوان IP العام، ثم ألصقه في شريط العنوان في متصفحك. مثل، http://52.168.55.24
،http://52.168.55.24:8080/images/test.htm
، http://52.168.55.24:8080/video/test.htm
، أو http://52.168.55.24:8081/images/test.htm
.
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress
قم بتغيير URL إلى http://<ip-address>:8080/images/test.htm، واستبدال عنوان IP الخاص بك لـ <ip-address>، ويجب أن ترى شيئاً مثل المثال التالي:
قم بتغيير عنوان URL إلى http://<ip-address>:8080/video/test.htm، واستبدال عنوان IP الخاص بك لـ <ip-address>، ويجب أن ترى شيئاً مثل المثال التالي:
الآن، قم بتغيير عنوان URL إلى http://<ip-address>:8081/images/test.htm، واستبدل عنوان IP الخاص بك لـ <ip-address>، وسترى إعادة توجيه نسبة استخدام الشبكة مرة أخرى في مجموعة الواجهة الخلفية للصور على http://<ip-address>:8080/images.
تنظيف الموارد
عند عدم الحاجة إلى ذلك، قم بإزالة مجموعة الموارد وبوابة التطبيق وجميع الموارد ذات الصلة باستخدام Remove-AzResourceGroup.
Remove-AzResourceGroup -Name myResourceGroupAG