مشاركة عبر


توجيه حركة مرور الويب استنادًا إلى عنوان موقع الويب باستخدام Azure PowerShell

يمكنك استخدام Azure PowerShell لجعل وجهة حركة مرور الويب إلى تجمعات خوادم محددة قابلة للتطوير استنادًا إلى عنوان URL المستخدم للوصول إلى التطبيق الخاص بك. في هذه المقالة: تُنشئ بوابة تطبيق Azure مع ثلاثة تجمعات للواجهة الخلفية باستخدام "مجموعات مقياس الجهاز الظاهري". يخدم كل تجمع من تجمعات الواجهة الخلفية غرضًا محددًا مثل البيانات الشائعة والصور والفيديو. يضمن توجيه حركة مرور الويب إلى تجمعات منفصلة حصول عملائك على المعلومات التي يحتاجونها وقتما يحتاجون إليها.

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

في هذه المقالة، ستتعرف على كيفية:

  • إعداد الشبكة
  • أنشئ وحدات الاستماع ومخطط مسار URL والقواعد
  • أنشئ تجمعات قابلة للتطوير للواجهة الخلفية

مثال على توجيه URL

يمكنك إكمال هذا الإجراء باستخدام Azure CLIأومدخل Microsoft Azure.

في حال لم يكن لديك اشتراك 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. لقطة شاشة تعرض مثالاً على Try It for Azure Cloud Shell.
انتقل إلى ⁧⁩⁧ https://shell.azure.com⁩⁧⁩، أو حدد زر ⁩تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. زر لتشغيل Azure Cloud Shell.
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. لقطة شاشة تعرض زر Cloud Shell في مدخل Microsoft Azure

لاستخدام Azure Cloud Shell:

  1. ابدأ تشغيل Cloud Shell.

  2. حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.

  3. ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.

  4. حدد Enter لتشغيل التعليمات البرمجية أو الأمر.

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

وبسبب الوقت اللازم لإنشاء الموارد، قد يستغرق الأمر 90 دقيقة لإكمال هذا الإجراء.

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

أنشئ مجموعة موارد تحتوي على كافة موارد التطبيق الخاص بك.

أنشئ مجموعة موارد Azure باستخدام New-AzResourceGroup.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

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

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

أنشئ تكوينات الشبكة الفرعية لـmyAGSubnet و myBackendSubnet باستخدام 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

$vnet = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myVNet `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $backendSubnetConfig, $agSubnetConfig
$pip = New-AzPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myAGPublicIPAddress `
  -AllocationMethod Static `
  -Sku Standard

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

في هذا القسم، تقوم بإنشاء موارد تدعم بوابة التطبيق، ثم تقوم في النهاية بإنشائها. الموارد التي تُنشئها تتضمن:

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

إنشاء تكوينات IP ومنفذ الواجهة الأمامية

اربط myAGSubnet الذي أنشأته مسبقًا ببوابة التطبيق باستخدام New-AzApplicationGatewayIPConfiguration. قم بتعيين myAGPublicIPAddress إلى بوابة التطبيق باستخدام New-AzApplicationGatewayFrontendIPConfig.

$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-AzApplicationGatewayBackendHttpSetting `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 120

إنشاء وحدة الاستماع والقاعدة الافتراضية

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

أنشئ وحدة استماع باسم myDefaultListener باستخدام New-AzApplicationGatewayHttpListener مع تكوينات الواجهة الأمامية ومنافذها التي قمت بإنشائها مسبقًا.

يلزم وجود قاعدة لوحدة الاستماع لمعرفة أي مجموعة واجهة خلفية يستخدم لنسبة استخدام الشبكة الواردة. قم بإنشاء قاعدة أساسية تسمى rule1 باستخدام New-AzApplicationGatewayRequestRoutingRule.

$defaultlistener = New-AzApplicationGatewayHttpListener `
  -Name myDefaultListener `
  -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_v2 `
  -Tier Standard_v2 `
  -Capacity 2

$appgw = New-AzApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -BackendAddressPools $defaultPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendport `
  -HttpListeners $defaultlistener `
  -RequestRoutingRules $frontendRule `
  -Sku $sku

قد يستغرق الأمر قرابة الثلاثين دقيقة لإنشاء بوابة التطبيق. انتظر حتى ينتهي التوزيع بنجاح قبل الانتقال إلى القسم التالي.

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

أضف تجمعات الواجهة الخلفية للصور والفيديو والمنفذ

أضف تجمعات الواجهة الخلفية المسماة imagesBackendPool و videoBackendPool إلى بوابة التطبيق باستخدام Add-AzApplicationGatewayBackendAddressPool. أضف منفذ الواجهة الأمامية للمجموعات باستخدام 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

Set-AzApplicationGateway -ApplicationGateway $appgw

تحديث بوابة التطبيق يمكن أن يستغرق 20 دقيقة أيضًا حتى ينتهي.

أضف وحدة استماع للواجهة الخلفية

أضف وحدة استماع الواجهة الخلفية المسماة backendListener والمطلوبة لتوجيه حركة مرور الويب باستخدام Add-AzApplicationGatewayHttpListener.

$appgw = Get-AzApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway

$backendPort = Get-AzApplicationGatewayFrontendPort `
  -ApplicationGateway $appgw `
  -Name bport

$fipconfig = Get-AzApplicationGatewayFrontendIPConfig `
  -ApplicationGateway $appgw

Add-AzApplicationGatewayHttpListener `
  -ApplicationGateway $appgw `
  -Name backendListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $backendPort

Set-AzApplicationGateway -ApplicationGateway $appgw

أضف مخطط مسار عنوان URL

مخططات مسار عنوان URL، تأكد من توجيه عناوين URL المرسلة إلى التطبيق الخاص بك إلى تجمعات محددة للواجهة الخلفية. أنشئ مخططات مسار عنوان URL باسم imagePathRule وvideoPathRule باستخدام New-AzApplicationGatewayPathRuleConfig وAdd-AzApplicationGatewayUrlPathMapConfig.

$appgw = Get-AzApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway

$poolSettings = Get-AzApplicationGatewayBackendHttpSetting `
  -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

أضف قاعدة التحويل

قاعدة التحويل تربط مخطط URL بوحدة الاستماع التي قمت بإنشائها. أضف قاعدة باسم rule2 باستخدام Add-AzApplicationغيتوايRequestRoutingRule.

$appgw = Get-AzApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway

$backendlistener = Get-AzApplicationGatewayHttpListener `
  -ApplicationGateway $appgw `
  -Name backendListener

$urlPathMap = Get-AzApplicationGatewayUrlPathMapConfig `
  -ApplicationGateway $appgw `
  -Name urlpathmap

Add-AzApplicationGatewayRequestRoutingRule `
  -ApplicationGateway $appgw `
  -Name rule2 `
  -RuleType PathBasedRouting `
  -HttpListener $backendlistener `
  -UrlPathMap $urlPathMap

Set-AzApplicationGateway -ApplicationGateway $appgw

إنشاء مجموعات مقياس آلة افتراضية

في هذا المثال، تقوم بإنشاء ثلاث مجموعات مقاييس آلة افتراضية تدعم تجمعات الواجهة الخلفية الثلاثة التي قمت بإنشائها. مجموعات الحجم التي تقوم بإنشائها تسمى myvmss1, myvmss2, and myvmss3. يمكنك تعيين المقياس لمجموعة الواجهة الخلفية عند تكوين إعدادات 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_v2 `
    -UpgradePolicyMode Automatic

  Set-AzVmssStorageProfile $vmssConfig `
    -ImageReferencePublisher MicrosoftWindowsServer `
    -ImageReferenceOffer WindowsServer `
    -ImageReferenceSku 2016-Datacenter `
    -ImageReferenceVersion latest `
    -OsDiskCreateOption FromImage

  Set-AzVmssOsProfile $vmssConfig `
    -AdminUsername azureuser `
    -AdminPassword "Azure123456!" `
    -ComputerNamePrefix myvmss$i

  Add-AzVmssNetworkInterfaceConfiguration `
    -VirtualMachineScaleSet $vmssConfig `
    -Name myVmssNetConfig$i `
    -Primary $true `
    -IPConfiguration $ipConfig

  New-AzVmss `
    -ResourceGroupName myResourceGroupAG `
    -Name myvmss$i `
    -VirtualMachineScaleSet $vmssConfig
}

تثبيت IIS

تحتوي كل مجموعة مقياس على مثيلين للجهاز الظاهري الذي تقوم بتثبيت 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.

Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

اختبر عنوان URL الأساسي في مدخل التطبيق

غير عنوان URL إلى http://<ip-address> :8080/images/test.htm، واستبدال عنوان IP الخاص بك < ip-address>، ويجب أن تشاهد شيئًا مثل المثال التالي:

اختبار URL للصور في مدخل التطبيق

تغيير URL إلى http://<ip-address>:8080/video/test.htm، واستبدال عنوان IP الخاص بك لـ ⁦ip-address< ⁩ >⁩، ويجب أن ترى شيئًا مثل المثال التالي:

اختبار عنوان URL للفيديو في بوابة التطبيق

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

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

Remove-AzResourceGroup -Name myResourceGroupAG

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

إعادة توجيه حركة مرور الويب استنادًا إلى عنوان URL