Aracılığıyla paylaş


Azure PowerShell kullanarak URL yol tabanlı yeniden yönlendirme ile uygulama ağ geçidi oluşturma

Uygulama ağ geçidi oluştururken URL tabanlı yönlendirme kurallarını yapılandırmak için Azure PowerShell'i kullanabilirsiniz. Bu öğreticide, sanal makine ölçek kümeleri kullanarak arka uç havuzları oluşturacaksınız. Ardından, web trafiğini istek URL'si yoluna göre uygun arka uç havuzuna yönlendiren URL yönlendirme kuralları oluşturursunuz. Bir uygulama ağ geçidi oluştururken gelişmiş URL tabanlı yönlendirme kurallarını yapılandırmak için Azure PowerShell'i kullanabilirsiniz.

Bu öğreticide en iyi güvenlik uygulamaları, performans iyileştirme ve izleme kurulumu gibi üretime hazır yapılandırmalar yer alır.

Bu eğitimde şunları öğreniyorsunuz:

  • Ağ altyapısını ayarlama
  • Yol tabanlı yönlendirme ile uygulama ağ geçidi oluşturma
  • URL yeniden yönlendirmesi için dinleyiciler ve yönlendirme kuralları ekleme
  • Arka plan havuzları için sanal makine ölçek kümeleri oluşturun
  • Uygulama ağ geçidi yönlendirme ve yeniden yönlendirme işlevselliğini test edin

Aşağıdaki örnekte, 8080 ve 8081 numaralı bağlantı noktalarından gelen ve aynı arka uç havuzlarına yönlendirilmekte olan site trafiği gösterilir:

URL yönlendirme ve yeniden yönlendirme mimarisinin diyagramı.

Önkoşullar

İsterseniz, Azure CLI kullanarak bu yordamı tamamlayabilirsiniz.

Bu öğreticiye başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • Etkin bir Azure aboneliği. Hesabınız yoksa ücretsiz bir hesap oluşturun.
  • Yerel olarak yüklenen Azure PowerShell modülü sürüm 5.4.1 veya üzeri ya da Azure Cloud Shell erişimi
  • Hedef Azure aboneliğinde Katılımcı veya Sahip izinleri
  • Application Gateway kavramları ve PowerShell betiği hakkında temel bilgiler

Uyarı

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Azure Cloud Shell için Deneyin örneğini gösteren ekran görüntüsü.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Azure Cloud Shell'i başlatmak için Düğmesi.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Azure portalında Cloud Shell düğmesini gösteren ekran görüntüsü

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Kodu veya komutu Cloud Shell oturumuna yapıştırmak için Windows ve Linux'ta Ctrl+Shift+V seçeneğini veya macOS'ta Cmd+Shift+V seçeneğini kullanın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

PowerShell'i yerel olarak yükleyip kullanmayı seçerseniz, bu öğretici için Azure PowerShell modülünün 5.4.1 veya sonraki bir sürümü gerekir. Sürümü bulmak için Get-Module -ListAvailable Az komutunu çalıştırın. Yükseltmeniz gerekiyorsa bkz. Azure PowerShell modülünü yükleme. PowerShell'i yerel olarak çalıştırıyorsanız Azure ile bağlantı oluşturmak için de komutunu çalıştırmanız Connect-AzAccount gerekir.

Bir kaynak grubu oluşturun

Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. New-AzResourceGroup kullanarak bir Azure kaynak grubu oluşturun.

# Define variables for consistent naming and easier management
$resourceGroupName = "myResourceGroupAG"
$location = "eastus"

# Create the resource group
New-AzResourceGroup -Name $resourceGroupName -Location $location

# Verify the resource group creation
Write-Output "Resource group '$resourceGroupName' created successfully in '$location'"

Ağ kaynakları oluşturma

New-AzVirtualNetworkSubnetConfig komutunu kullanarak myBackendSubnet ve myAGSubnet için alt ağ yapılandırmalarını oluşturun. Alt ağ yapılandırmalarıyla New-AzVirtualNetwork komutunu kullanarak myVNet adlı sanal ağı oluşturun. Son olarak, New-AzPublicIpAddress komutunu kullanarak myAGPublicIPAddress adlı genel IP adresini oluşturun. Bu kaynaklar, uygulama ağ geçidine ve ilişkili kaynaklarına ağ bağlantısı sağlar.

Önemli

Uygulama ağ geçidi alt ağı (myAGSubnet) yalnızca uygulama ağ geçitlerini içerebilir. Bu alt ağda başka hiçbir kaynağa izin verilmiyor. New-AzVirtualNetworkSubnetConfig komutunu kullanarak myBackendSubnet ve myAGSubnet için alt ağ yapılandırmalarını oluşturun. Application Gateway, düzgün çalışma ve gelecekteki ölçeklendirme için en az /24 CIDR'ye sahip ayrılmış bir alt ağ gerektirir. Alt ağ yapılandırmalarıyla New-AzVirtualNetwork komutunu kullanarak myVNet adlı sanal ağı oluşturun. Son olarak, New-AzPublicIpAddress kullanarak gelişmiş güvenlik ve performans için Standart SKU ve statik ayırma ile genel IP adresini oluşturun.

# Create backend subnet configuration with appropriate CIDR for scale sets
$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -AddressPrefix 10.0.1.0/24

# Create Application Gateway subnet - dedicated subnet required
$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

Uygulama ağ geçidi oluşturma

Bu bölümde, uygulama ağ geçidini destekleyen kaynaklar oluşturacak ve son olarak oluşturacaksınız. Oluşturduğunuz kaynaklar şunlardır:

  • IP yapılandırmaları ve ön uç bağlantı noktası - Daha önce oluşturduğunuz alt ağı uygulama ağ geçidiyle ilişkilendirir ve bu alt ağa erişmek için kullanılacak bir bağlantı noktası atar.
  • Varsayılan havuz - Tüm uygulama ağ geçitlerinin en az bir arka uç sunucu havuzu olması gerekir.
  • Varsayılan dinleyici ve kural - Varsayılan dinleyici, atanan bağlantı noktasındaki trafiği dinler ve varsayılan kural, trafiği varsayılan havuza gönderir.

IP yapılandırmaları ve ön uç bağlantı noktası oluşturma

Daha önce oluşturduğunuz myAGSubnet'i New-AzApplicationGatewayIPConfiguration kullanarak uygulama ağ geçidiyle ilişkilendirin. New-AzApplicationGatewayFrontendIPConfig komutunu kullanarak uygulama ağ geçidine myAGPublicIPAddress atayın. Ardından New-AzApplicationGatewayFrontendPort komutunu kullanarak HTTP bağlantı noktasını oluşturun.

# Get the virtual network and subnet references
$vnet = Get-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet

$subnet=$vnet.Subnets[0]

# Get the public IP address
$pip = Get-AzPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Name myAGPublicIPAddress

# Create IP configuration for the Application Gateway
$gipconfig = New-AzApplicationGatewayIPConfiguration `
  -Name myAGIPConfig `
  -Subnet $subnet

# Create frontend IP configuration
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -PublicIPAddress $pip

# Create frontend port for HTTP traffic
$frontendport = New-AzApplicationGatewayFrontendPort `
  -Name myFrontendPort `
  -Port 80

Write-Output "Application Gateway IP configurations created successfully"

Varsayılan havuzu ve ayarları oluşturma

New-AzApplicationGatewayBackendAddressPool komutunu kullanarak uygulama ağ geçidi için appGatewayBackendPool adlı varsayılan arka uç havuzunu oluşturun. New-AzApplicationGatewayBackendHttpSettings komutunu kullanarak arka uç havuzu ayarlarını yapılandırın.

# Create default backend pool
$defaultPool = New-AzApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool

# Create backend HTTP settings with optimized configuration
$poolSettings = New-AzApplicationGatewayBackendHttpSettings `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 120

Varsayılan dinleyici ve kural oluşturma

Uygulama ağ geçidinin trafiği arka uç havuzlarına uygun şekilde yönlendirmesini sağlamak için bir dinleyici gereklidir. Bu öğreticide, farklı yönlendirme senaryoları için birden çok dinleyici oluşturacaksınız. İlk temel dinleyici kök URL'de trafik bekler. Diğer dinleyiciler, http://203.0.113.1:8080/images/ veya http://203.0.113.1:8081/video/ gibi belirli URL yollarında trafik bekler.

Daha önce oluşturduğunuz ön uç yapılandırması ve ön uç bağlantı noktasıyla New-AzApplicationGatewayHttpListener kullanarak defaultListener adlı bir dinleyici oluşturun. Dinleyicinin gelen trafik için hangi arka plan havuzunu kullanacağını belirlemesi için bir kural gerekir. New-AzApplicationGatewayRequestRoutingRule komutunu kullanarak rule1 adlı temel bir kural oluşturun.

# Create default HTTP listener
$defaultlistener = New-AzApplicationGatewayHttpListener `
  -Name defaultListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendport

# Create basic routing rule that directs traffic to default pool
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
  -Name rule1 `
  -RuleType Basic `
  -HttpListener $defaultlistener `
  -BackendAddressPool $defaultPool `
  -BackendHttpSettings $poolSettings `
  -Priority 100

Write-Output "Default listener and routing rule created successfully"

Uygulama ağ geçidi oluşturma

Gerekli destekleyici kaynakları oluşturduğunuza göre, New-AzApplicationGatewaySku kullanarak myAppGateway adlı uygulama ağ geçidi için parametreleri belirtin ve ardından New-AzApplicationGateway kullanarak oluşturun.

# Create SKU configuration for Application Gateway v2
$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

Backend havuzları ve portlar ekleme

Add-AzApplicationGatewayBackendAddressPool komutunu kullanarak uygulama ağ geçidinize arka uç havuzları ekleyebilirsiniz. Bu örnekte imagesBackendPool ve videoBackendPool , belirli içerik türlerini yönlendirmek için oluşturulur. Add-AzApplicationGatewayFrontendPort komutunu kullanarak havuzlar için ön uç bağlantı noktaları eklersiniz. Set-AzApplicationGateway komutunu kullanarak değişiklikleri uygulama ağ geçidine gönderin.

# Get the current Application Gateway configuration
$appgw = Get-AzApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway

# Add specialized backend pools for different content types
Add-AzApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name imagesBackendPool

Add-AzApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name videoBackendPool

# Add frontend ports for specialized listeners
Add-AzApplicationGatewayFrontendPort `
  -ApplicationGateway $appgw `
  -Name bport `
  -Port 8080

Add-AzApplicationGatewayFrontendPort `
  -ApplicationGateway $appgw `
  -Name rport `
  -Port 8081

# Apply the configuration changes
Set-AzApplicationGateway -ApplicationGateway $appgw

Dinleyiciler ve kurallar ekleme

Dinleyiciler ekleme

Add-AzApplicationGatewayHttpListener kullanarak trafiği yönlendirmek için gereken backendListener ve redirectedListener adlı dinleyicileri ekleyin.

# Get the current Application Gateway configuration
$appgw = Get-AzApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway

# Get frontend port references
$backendPort = Get-AzApplicationGatewayFrontendPort `
  -ApplicationGateway $appgw `
  -Name bport

$redirectPort = Get-AzApplicationGatewayFrontendPort `
  -ApplicationGateway $appgw `
  -Name rport

# Get frontend IP configuration
$fipconfig = Get-AzApplicationGatewayFrontendIPConfig `
  -ApplicationGateway $appgw

# Add listeners for different ports
Add-AzApplicationGatewayHttpListener `
  -ApplicationGateway $appgw `
  -Name backendListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $backendPort

Add-AzApplicationGatewayHttpListener `
  -ApplicationGateway $appgw `
  -Name redirectedListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $redirectPort

# Apply the configuration changes
Set-AzApplicationGateway -ApplicationGateway $appgw

Varsayılan URL yolu eşlemesini ekle

URL yolu eşlemeleri, belirli URL'lerin belirli arka uç havuzlarına yönlendirilmesini sağlar. New-AzApplicationGatewayPathRuleConfig ve Add-AzApplicationGatewayUrlPathMapConfig kullanarak imagePathRule ve videoPathRule adlı URL yol eşlemeleri oluşturabilirsiniz.

# Get the current Application Gateway configuration
$appgw = Get-AzApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway

# Get backend HTTP settings
$poolSettings = Get-AzApplicationGatewayBackendHttpSettings `
  -ApplicationGateway $appgw `
  -Name myPoolSettings

# Get backend address pools
$imagePool = Get-AzApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name imagesBackendPool

$videoPool = Get-AzApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name videoBackendPool

$defaultPool = Get-AzApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name appGatewayBackendPool

# Create path rules for different content types
$imagePathRule = New-AzApplicationGatewayPathRuleConfig `
  -Name imagePathRule `
  -Paths "/images/*" `
  -BackendAddressPool $imagePool `
  -BackendHttpSettings $poolSettings

$videoPathRule = New-AzApplicationGatewayPathRuleConfig `
  -Name videoPathRule `
  -Paths "/video/*" `
  -BackendAddressPool $videoPool `
  -BackendHttpSettings $poolSettings

# Add URL path map configuration
Add-AzApplicationGatewayUrlPathMapConfig `
  -ApplicationGateway $appgw `
  -Name urlpathmap `
  -PathRules $imagePathRule, $videoPathRule `
  -DefaultBackendAddressPool $defaultPool `
  -DefaultBackendHttpSettings $poolSettings

# Apply the configuration changes
Set-AzApplicationGateway -ApplicationGateway $appgw

Yeniden yönlendirme yapılandırması ekleme

Add-AzApplicationGatewayRedirectConfiguration komutunu kullanarak dinleyici için yeniden yönlendirmeyi yapılandırabilirsiniz.

# Get the current Application Gateway configuration
$appgw = Get-AzApplicationGateway `
  -ResourceGroupName $resourceGroupName `
  -Name myAppGateway

# Get the target listener for redirection
$backendListener = Get-AzApplicationGatewayHttpListener `
  -ApplicationGateway $appgw `
  -Name backendListener

# Add redirection configuration with query string and path preservation
$redirectConfig = Add-AzApplicationGatewayRedirectConfiguration `
  -ApplicationGateway $appgw `
  -Name redirectConfig `
  -RedirectType Found `
  -TargetListener $backendListener `
  -IncludePath $true `
  -IncludeQueryString $true

# Apply the configuration changes
Set-AzApplicationGateway -ApplicationGateway $appgw

Write-Output "Redirection configuration added successfully"
Write-Output "Redirect type: HTTP 302 Found"
Write-Output "Target: backendListener (Port 8080)"
Write-Output "Preserves: Path and Query String"

Yeniden yönlendirme URL yolu eşlemesi ekleme

Yeniden yönlendirme senaryoları için ayrı bir URL yol haritası oluşturun. Bu harita 8081 numaralı bağlantı noktasındaki trafiği işler ve belirli yolları 8080 numaralı bağlantı noktasında uygun dinleyiciye yönlendirir.

# Get the current Application Gateway configuration
$appgw = Get-AzApplicationGateway `
  -ResourceGroupName $resourceGroupName `
  -Name myAppGateway

# Get references to existing configurations
$poolSettings = Get-AzApplicationGatewayBackendHttpSettings `
  -ApplicationGateway $appgw `
  -Name myPoolSettings

$defaultPool = Get-AzApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name appGatewayBackendPool

$redirectConfig = Get-AzApplicationGatewayRedirectConfiguration `
  -ApplicationGateway $appgw `
  -Name redirectConfig

# Create path rule for redirection - images traffic will be redirected
$redirectPathRule = New-AzApplicationGatewayPathRuleConfig `
  -Name redirectPathRule `
  -Paths "/images/*" `
  -RedirectConfiguration $redirectConfig

# Add redirection path map configuration
Add-AzApplicationGatewayUrlPathMapConfig `
  -ApplicationGateway $appgw `
  -Name redirectpathmap `
  -PathRules $redirectPathRule `
  -DefaultBackendAddressPool $defaultPool `
  -DefaultBackendHttpSettings $poolSettings

# Apply the configuration changes
Set-AzApplicationGateway -ApplicationGateway $appgw

Write-Output "Redirection URL path map added successfully"
Write-Output "Redirection rule: /images/* on port 8081 -> port 8080"

Yönlendirme kuralları ekleme

Yönlendirme kuralları, URL eşlemelerini oluşturduğunuz dinleyicilerle ilişkilendirir. DefaultRule ve redirectedRule adlı kuralları Add-AzApplicationGatewayRequestRoutingRule kullanarak ekleyebilirsiniz.

$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

Sanal makine ölçek kümeleri oluştur

Bu örnekte, oluşturduğunuz üç arka uç havuzunu destekleyen üç sanal makine ölçek kümesi oluşturacaksınız. Ölçek kümeleri myvmss1, myvmss2 ve myvmss3 olarak adlandırılır. Her bir ölçek kümesi IIS yükleyeceğiniz iki sanal makine örneği içerir. IP ayarlarını yapılandırırken ölçek kümesini arka uç havuzuna atayın.

Önemli

<username> ve <password> değerlerini betiği çalıştırmadan önce kendi değerlerinizle değiştirin. Azure'ın güvenlik gereksinimlerini karşılayan güçlü bir parola kullanın. Güvenlik Notu: <username> ve <password> öğelerini güvenli kimlik bilgileriyle değiştirin. Üretim senaryolarında kimlik bilgileri yönetimi için Azure Key Vault kullanmayı göz önünde bulundurun.

# Get network and Application Gateway references
$vnet = Get-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet

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

# Get backend pool references
$backendPool = Get-AzApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool `
  -ApplicationGateway $appgw

$imagesPool = Get-AzApplicationGatewayBackendAddressPool `
  -Name imagesBackendPool `
  -ApplicationGateway $appgw

$videoPool = Get-AzApplicationGatewayBackendAddressPool `
  -Name videoBackendPool `
  -ApplicationGateway $appgw

# Create three scale sets with improved configuration
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

  # Create scale set configuration with modern VM size and settings
  $vmssConfig = New-AzVmssConfig `
    -Location eastus `
    -SkuCapacity 2 `
    -SkuName Standard_DS2 `
    -UpgradePolicyMode Automatic

  # Configure storage profile with Windows Server 2022
  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 network interface configuration
  Add-AzVmssNetworkInterfaceConfiguration `
    -VirtualMachineScaleSet $vmssConfig `
    -Name myVmssNetConfig$i `
    -Primary $true `
    -IPConfiguration $ipConfig

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

  Write-Output "Virtual Machine Scale Set myvmss$i created successfully"
}

Write-Output "All Virtual Machine Scale Sets created successfully"

IIS yükleme

Aşağıdaki betik, her ölçek kümesindeki sanal makinelere IIS yükler ve bunları hizmet verdikleri arka uç havuzuna göre farklı içerik görüntüleyecek şekilde yapılandırmaktadır.

$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/appgatewayurl.ps1"); 
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }

# Install IIS on all scale sets
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
}

Uygulama ağ geçidini test edin

Uygulama ağ geçidini oluşturmak için IIS gerekli olmasa da, Azure'ın uygulama ağ geçidini başarıyla oluşturup oluşturmadığını doğrulamak için bu öğreticide yüklemişsinizdir. Uygulama ağ geçidini test etmek için IIS kullanın:

  1. Uygulama ağ geçidinin genel IP adresini almak için Get-AzPublicIPAddress komutunu çalıştırın:

    Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress
    
  2. Genel IP adresini kopyalayıp tarayıcınızın adres çubuğuna yapıştırın. Örneğin:

    • http://203.0.113.1 (temel URL)
    • http://203.0.113.1:8080/images/test.htm (görüntü yolu)
    • http://203.0.113.1:8080/video/test.htm (video dosya yolu)
    • http://203.0.113.1:8081/images/test.htm (yeniden yönlendirme testi)

Uygulama ağ geçidinin temel URL'sini test ederken varsayılan IIS karşılama sayfasını gösteren ekran görüntüsü.

URL'yi http://<ip-address>:8080/images/test.htmolarak değiştirin ve ip adresinizi <ip-address>yazın ve aşağıdaki örneğe benzer bir şey görmeniz gerekir:

Uygulama ağ geçidinde /images yoluna erişildiğinde, arka uç havuzunun test sayfasını gösteren bir ekran görüntüsü.

URL'yi http://<ip-address>:8080/video/test.htmolarak değiştirin ve ip adresinizi <ip-address>yazın ve aşağıdaki örneğe benzer bir şey görmeniz gerekir:

Uygulama ağ geçidinde /video yoluna erişilirken video arka uç havuzu test sayfasını gösteren ekran görüntüsü.

URL'yi http://<ip-address>:8081/images/test.htm olarak değiştirin, IP adresinizi <ip-address> ile değiştirin ve trafiğin http://<ip-address>:8080/images konumundaki görüntüler backend havuzuna yeniden yönlendirildiğini görün.

Performans izleme

En iyi performans için önemli Application Gateway ölçümlerini izleyin:

  • İstek Sayısı: İşlenen isteklerin toplam sayısı
  • Yanıt Süresi: İstekler için ortalama yanıt süresi
  • İyi Durumda Olmayan Konak Sayısı: İyi durumda olmayan arka uç sunucularının sayısı
  • Aktarım hızı: Application Gateway üzerinden veri aktarım hızı

Kaynakları temizle

Artık gerekli olmadığında Remove-AzResourceGroup kullanarak kaynak grubunu, uygulama ağ geçidini ve tüm ilgili kaynakları kaldırın.

Remove-AzResourceGroup -Name myResourceGroupAG

Sonraki Adımlar

Application Gateway ile URL yolu tabanlı yeniden yönlendirmeyi öğrendiğinize göre şu gelişmiş senaryoları keşfedin:

Daha fazla kaynak