إنشاء بوابة تطبيق تستضيف مواقع ويب متعددة باستخدام Azure PowerShell
يمكنك استخدام Azure PowerShell لتكوين استضافة مواقع ويب متعددة عند إنشاء بوابة تطبيق. في هذه المقالة، تقوم بتعريف قائمة العناوين الخلفية باستخدام مجموعات تغيير سعة الأجهزة الظاهرية. يمكنك بعد ذلك تكوين المستمعين والقواعد بناءً على مجالين للتأكد من وصول حركة مرور الويب إلى الخوادم المناسبة في المجمعات. تفترض هذه المقالة أنك تملك مجالات متعددة وتستخدم أمثلة على www.contoso.com
و www.fabrikam.com
.
في هذه المقالة، ستتعرف على كيفية:
- إعداد الشبكة
- إنشاء بوابة تطبيق
- إنشاء وحدة الاستماع الخلفية
- إنشاء قواعد التوجيه
- إنشاء مجموعات تغيير سعة افتراضية مع تجمعات الواجهة الخلفية
- إنشاء سجل CNAME في مجالك
في حال لم يكن لديك اشتراك 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 محليًا، فأنت بحاجة أيضًا إلى تشغيل Login-AzAccount
لإنشاء اتصال مع Azure.
إنشاء مجموعة موارد
وتُعد مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها. أنشئ مجموعة موارد Azure باستخدام New-AzResourceGroup.
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
إنشاء موارد الشبكة
أنشئ تكوين شبكة فرعية باستخدام New-AzVirtualNetworkSubnetConfig. أنشئ شبكة الاتصال الظاهرية باستخدام New-AzVirtualNetwork من خلال تكوينات الشبكة الفرعية. وأخيراً، أنشئ عنوان IP العام باستخدام 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 Dynamic
إنشاء بوابة تطبيق
إنشاء تكوينات IP ومنفذ الواجهة الأمامية
قم بربط الشبكة الفرعية التي قمت بإنشائها مسبقًا ببوابة التطبيق باستخدام New-AzApplicationGatewayIPConfiguration. قم بتعيين عنوان IP العام لبوابة التطبيق باستخدام New-AzApplicationGatewayFrontendIPConfig.
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$subnet=$vnet.Subnets[0]
$gipconfig = New-AzApplicationGatewayIPConfiguration `
-Name myAGIPConfig `
-Subnet $subnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPConfig `
-PublicIPAddress $pip
$frontendport = New-AzApplicationGatewayFrontendPort `
-Name myFrontendPort `
-Port 80
إنشاء أماكن تجميع الخلفية والإعدادات
إنشاء أول أماكن لتجميع العناوين الخلفية لبوابة التطبيق باستخدام New-AzApplicationGatewayBackendAddressPool. قم بتكوين إعدادات المجموعة باستخدام New-AzApplicationGatewayBackendHttpSetting.
$contosoPool = New-AzApplicationGatewayBackendAddressPool `
-Name contosoPool
$fabrikamPool = New-AzApplicationGatewayBackendAddressPool `
-Name fabrikamPool
$poolSettings = New-AzApplicationGatewayBackendHttpSettings `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 120
إنشاء وحدات الاستماع والقواعد
وحدات الاستماع مطلوبة لتمكين بوابة التطبيق لمسار نسبة استخدام الشبكة بشكل مناسب إلى أماكن العناوين الخلفية. في هذه المقالة، يمكنك إنشاء اثنين من وحدات الاستماع للمجاليك . يتم إنشاء وحدات الاستماع للمجالات contoso.comfabrikam.com.
قم بإنشاء وحدة استماع باستخدام New-AzApplicationGatewayHttpListener مع التكوين الأمامي ومنفذ الواجهة الأمامية الذي قمت بإنشائه مسبقاً. يلزم وجود قاعدة لوحدة الاستماع لمعرفة أي مجموعة واجهة خلفية يستخدم لنسبة استخدام الشبكة الواردة. قم بإنشاء قاعدة أساسية تسمى contosoRule باستخدام New-AzApplicationGatewayRequestRoutingRule.
إشعار
باستخدام بوابة التطبيق أو WAF v2 SKU، يمكنك أيضًا تكوين ما يصل إلى 5 أسماء مضيف لكل مستمع ويمكنك استخدام أحرف البدل في اسم المضيف. للحصول على مزيد من المعلومات، راجع أسماء مضيف حرف البدل في وحدة الاستماع .
لاستخدام أسماء مضيفين متعددة وأحرف بدل في وحدة استماع باستخدام Azure PowerShell، يجب استخدام -HostNames
بدلا من -HostName
. باستخدام اسم المضيف، يمكنك ذكر أسماء المضيفين حتى 5 كقيم مفصولة بفاصلة. على سبيل المثال، -HostNames "*.contoso.com","*.fabrikam.com"
$contosolistener = New-AzApplicationGatewayHttpListener `
-Name contosoListener `
-Protocol Http `
-FrontendIPConfiguration $fipconfig `
-FrontendPort $frontendport `
-HostName "www.contoso.com"
$fabrikamlistener = New-AzApplicationGatewayHttpListener `
-Name fabrikamListener `
-Protocol Http `
-FrontendIPConfiguration $fipconfig `
-FrontendPort $frontendport `
-HostName "www.fabrikam.com"
$contosoRule = New-AzApplicationGatewayRequestRoutingRule `
-Name contosoRule `
-RuleType Basic `
-HttpListener $contosoListener `
-BackendAddressPool $contosoPool `
-BackendHttpSettings $poolSettings
$fabrikamRule = New-AzApplicationGatewayRequestRoutingRule `
-Name fabrikamRule `
-RuleType Basic `
-HttpListener $fabrikamListener `
-BackendAddressPool $fabrikamPool `
-BackendHttpSettings $poolSettings
أضف أولوية إلى قواعد التحويل
$contosoRule = New-AzApplicationGatewayRequestRoutingRule `
-Name wccontosoRule `
-RuleType Basic `
-Priority 200 `
-HttpListener $wccontosoListener `
-BackendAddressPool $wccontosoPool `
-BackendHttpSettings $poolSettings
$fabrikamRule = New-AzApplicationGatewayRequestRoutingRule `
-Name shopcontosoRule `
-RuleType Basic `
-Priority 100 `
-HttpListener $shopcontosoListener `
-BackendAddressPool $shopcontosoPool `
-BackendHttpSettings $poolSettings
أنشئ بوابة التطبيق
الآن بعد إنشاء الموارد الداعمة الضرورية، حدّد معلمات لبوابة التطبيق المسماة باستخدام New-AzApplicationGatewaySku، ثم قم بإنشائها باستخدام New-AzApplicationGateway.
$sku = New-AzApplicationGatewaySku `
-Name Standard_Medium `
-Tier Standard `
-Capacity 2
$appgw = New-AzApplicationGateway `
-Name myAppGateway `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-BackendAddressPools $contosoPool, $fabrikamPool `
-BackendHttpSettingsCollection $poolSettings `
-FrontendIpConfigurations $fipconfig `
-GatewayIpConfigurations $gipconfig `
-FrontendPorts $frontendport `
-HttpListeners $contosoListener, $fabrikamListener `
-RequestRoutingRules $contosoRule, $fabrikamRule `
-Sku $sku
إنشاء مجموعات مقياس آلة افتراضية
في هذا المثال، تقوم بإنشاء مجموعتي تغيير سعة الجهاز الظاهري التي تدعم أماكن تجميع الواجهة الخلفية الاثنتين التي قمت بإنشائها. مجموعات تغيير السعة التي تقوم بإنشائها تسمي myvmss1 وmyvmss2. تحتوي كل مجموعة مقياس على مثيلين للجهاز الظاهري الذي تقوم بتثبيت IIS عليه. يمكنك تعيين المقياس لمجموعة الواجهة الخلفية عند تكوين إعدادات IP.
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$contosoPool = Get-AzApplicationGatewayBackendAddressPool `
-Name contosoPool `
-ApplicationGateway $appgw
$fabrikamPool = Get-AzApplicationGatewayBackendAddressPool `
-Name fabrikamPool `
-ApplicationGateway $appgw
for ($i=1; $i -le 2; $i++)
{
if ($i -eq 1)
{
$poolId = $contosoPool.Id
}
if ($i -eq 2)
{
$poolId = $fabrikamPool.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 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
$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 2; $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
}
إنشاء سجل CNAME في مجالك
بعد إنشاء بوابة التطبيق بعنوان IP العام الخاص بها، يمكنك الحصول على عنوان DNS واستخدامه لإنشاء سجل CNAME في مجالك. استخدم Get-AzPublicIPAddress للحصول على عنوانDNS العام لبوابة التطبيق. انسخ قيمة fqdn لإعدادات DNS واستخدمها كقيمة لسجل CNAME الذي تنشئه. لا ينصح باستخدام السجلات A لأن VIP قد تتغير عند إعادة تشغيل بوابة التطبيق في V1 SKU.
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress
اختبار بوابة التطبيق
أدخل اسم مجالك في شريط العنوان في متصفحك. مثل http://www.contoso.com.
غيّر العنوان إلى مجالك الآخر وسترى شيئًا مثل المثال التالي:
تنظيف الموارد
عند عدم الحاجة إلى ذلك، قم بإزالة مجموعة الموارد وبوابة التطبيق وجميع الموارد ذات الصلة باستخدام Remove-AzResourceGroup.
Remove-AzResourceGroup -Name myResourceGroupAG
الخطوات التالية
إنشاء بوابة تطبيق باستخدام قواعد التوجيه المستندة إلى مسار URL