Rutekan lalu lintas web berdasarkan URL menggunakan Azure PowerShell

Gunakan Azure PowerShell untuk mengkonfigurasi perutean lalu lintas web ke kluster server tertentu yang dapat diskalakan berdasarkan URL yang digunakan untuk mengakses aplikasi Anda. Dalam artikel ini, Anda membuat Azure Application Gateway dengan tiga kumpulan ujung belakang menggunakan Virtual Machine Scale Sets. Setiap kumpulan ujung belakang memiliki tujuan khusus seperti data umum, gambar, dan video. Perutean lalu lintas untuk memisahkan kumpulan akan memastikan bahwa pelanggan Anda mendapatkan informasi yang mereka butuhkan.

Untuk mengaktifkan perutean lalu lintas, Anda membuat aturan perutean yang ditetapkan untuk pendengar yang mendengarkan port tertentu untuk memastikan lalu lintas web tiba di server yang sesuai di kumpulan.

Dalam artikel ini, Anda akan mempelajari cara:

  • Siapkan jaringan
  • Membuat pendengar, peta jalur URL, dan aturan
  • Membuat kumpulan ujung belakang yang dapat diskalakan

URL routing example

Anda juga dapat menyelesaikan prosedur ini menggunakan Azure CLI atau portal Microsoft Azure.

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Azure Cloud Shell

Azure meng-hosting Azure Cloud Shell, lingkungan shell interaktif yang dapat Anda gunakan melalui browser. Anda dapat menggunakan Bash atau PowerShell dengan Cloud Shell untuk bekerja dengan layanan Azure. Anda dapat menggunakan perintah Cloud Shell yang telah diinstal sebelumnya untuk menjalankan kode dalam artikel ini tanpa harus menginstal apa-apa di lingkungan lokal Anda.

Untuk memulai Azure Cloud Shell:

Opsi Contoh/Tautan
Pilih Coba di pojok kanan atas blok kode atau perintah. Memilih Coba tidak otomatis menyalin kode atau perintah ke Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Buka https://shell.azure.com, atau pilih tombol Luncurkan Cloud Shell untuk membuka Cloud Shell di browser Anda. Button to launch Azure Cloud Shell.
Pilih tombol Cloud Shell pada bilah menu di kanan atas di portal Microsoft Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Untuk menggunakan Azure Cloud Shell:

  1. Mulai Cloud Shell.

  2. Pilih tombol Salin pada blok kode (atau blok perintah) untuk menyalin kode atau perintah.

  3. Tempel kode atau perintah ke dalam sesi Cloud Shell dengan memilih Ctrl+Shift+V di Windows dan Linux, atau dengan memilih Cmd+Shift+V di macOS.

  4. Pilih Masukkan untuk menjalankan kode atau perintah.

Jika Anda memilih untuk menginstal dan menggunakan PowerShell secara lokal, artikel ini memerlukan modul Azure PowerShell versi 1.0.0 atau yang lebih baru. Jalankan Get-Module -ListAvailable Az untuk mencari tahu versinya. Jika Anda perlu peningkatan, lihat Instal modul Azure PowerShell. Jika Anda menjalankan PowerShell secara lokal, Anda juga harus menjalankan Login-AzAccount untuk membuat koneksi dengan Azure.

Dibutuhkan waktu sampai 90 menit hingga prosedur selesai untuk membuat sumber daya ini.

Buat grup sumber daya

Buat grup sumber daya yang berisi semua sumber daya untuk aplikasi Anda.

Buat grup sumber daya Azure menggunakan New-AzResourceGroup.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

Membuat sumber daya jaringan

Jaringan virtual yang sudah ada atau pun buat baru, Anda perlu memastikan bahwa jaringan tersebut berisi subnet yang hanya digunakan untuk gateway aplikasi. Dalam artikel ini, Anda membuat subnet untuk gateway aplikasi dan subnet untuk set skala. Anda membuat alamat IP publik untuk mengaktifkan akses ke sumber daya di gateway aplikasi.

Buat konfigurasi subnet untuk myAGSubnet dan myBackendSubnet menggunakan New-AzVirtualNetworkSubnetConfig. Buat jaringan virtual bernama myVNet menggunakan New-AzVirtualNetwork dengan konfigurasi subnet. Terakhir, buat alamat IP publik bernama myAGPublicIPAddress menggunakan New-AzPublicIpAddress. Sumber daya ini digunakan untuk menyediakan konektivitas jaringan ke gateway aplikasi dan sumber daya terkait.

$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

Membuat gateway aplikasi

Di bagian ini, Anda membuat sumber daya yang mendukung gateway aplikasi terlebih dulu, lalu buat gateway aplikasinya. Sumber daya yang Anda buat meliputi:

  • Konfigurasi IP dan port frontend - Menghubungkan subnet yang sebelumnya Anda buat ke gateway aplikasi dan menetapkan port yang digunakan untuk mengaksesnya.
  • Kumpulan default - Semua gateway aplikasi harus memiliki setidaknya satu kumpulan server ujung belakang.
  • Listener dan aturan default - Listener default mendengarkan lalu lintas di port yang ditetapkan dan aturan default mengirim lalu lintas ke kumpulan default.

Membuat konfigurasi IP dan port ujung depan

Hubungkan myAGSubnet yang sebelumnya Anda buat ke gateway aplikasi menggunakan New-AzApplicationGatewayIPConfiguration. Tetapkan myAGPublicIPAddress ke gateway aplikasi menggunakan 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

Buat kumpulan dan pengaturan default

Buat kumpulan ujung belakang default bernama appGatewayBackendPool untuk gateway aplikasi menggunakan New-AzApplicationGatewayBackendAddressPool. Konfigurasikan pengaturan untuk kumpulan ujung belakang menggunakan New-AzApplicationGatewayBackendhttpSettings.

$defaultPool = New-AzApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool

$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 120

Membuat listener dan aturan default

Pendengar diperlukan untuk mengaktifkan gateway aplikasi untuk merutekan lalu lintas dengan tepat ke kumpulan ujung belakang. Dalam artikel ini, Anda membuat dua pendengar. Pendengar dasar pertama yang Anda buat mendengarkan lalu lintas di root URL. Pendengar kedua yang Anda buat mendengarkan lalu lintas pada URL tertentu.

Buat pendengar default bernama myDefaultListener menggunakan New-AzApplicationGatewayHttpListener dengan konfigurasi dan port ujung depan yang sebelumnya Anda buat.

Aturan diperlukan agar listener mengetahui kumpulan backend yang akan digunakan untuk lalu lintas yang masuk. Buat aturan dasar bernama rule1 menggunakan 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

Membuat application gateway

Setelah sumber daya pendukung yang diperlukan dibuat, tentukan parameter untuk gateway aplikasi bernama myAppGateway menggunakan New-AzApplicationGatewaySku, lalu buatlah menggunakan 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

Diperlukan waktu hingga 30 menit untuk membuat gateway aplikasi. Tunggu hingga penyebaran berhasil selesai sebelum melanjutkan ke bagian berikutnya.

Pada titik ini, Anda memiliki gateway aplikasi yang mendengarkan lalu lintas di port 80 dan mengirim lalu lintas itu ke kluster server default.

Tambahkan port dan kumpulan ujung belakang video dan gambar

Tambahkan kumpulan backend bernama imagesBackendPool dan videoBackendPool ke gateway aplikasi Anda menggunakan Add-AzApplicationGatewayBackendAddressPool. Tambahkan port ujung depan ke kumpulan menggunakan Add-AzApplicationGatewayFrontendPort. Kirim perubahan ke gateway aplikasi menggunakan 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

Pembaruan gateway aplikasi dapat memakan waktu hingga 20 menit untuk menyelesaikannya.

Tambahkan pendengar ujung belakang

Tambahkan pendengar ujung belakang bernama backendListener yang diperlukan untuk merutekan lalu lintas menggunakan 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

Tambahkan peta jalur URL

Peta jalur URL memastikan bahwa URL yang dikirim ke aplikasi Anda dirutekan ke kumpulan ujung belakang tertentu. Buat peta jalur URL bernama imagePathRule dan videoPathRule menggunakan New-AzApplicationGatewayPathRuleConfig dan 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

Tambahkan aturan perutean

Aturan perutean menghubungkan peta URL dengan pendengar yang Anda buat. Tambahkan aturan bernama aturan2 menggunakan Add-AzApplicationGatewayRequestRoutingRule.

$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

Membuat set skala komputer virtual

Dalam contoh ini, Anda membuat tiga set skala komputer virtual yang mendukung tiga kumpulan ujung belakang yang Anda buat. Set skala yang Anda buat bernama myvmss1, myvmss2, dan myvmss3. Anda menetapkan rangkaian skala ke kumpulan backend saat mengonfigurasi pengaturan 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
}

Instal IIS

Setiap set skala berisi dua instans komputer virtual di tempat Anda menginstal IIS. Halaman sampel dibuat untuk menguji jika gateway aplikasi berfungsi.

$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
}

Uji gateway aplikasi

Gunakan Get-AzPublicIPAddress untuk mendapatkan alamat IP publik gateway aplikasi. Salin alamat IP publik, lalu tempelkan ke bilah alamat browser Anda. Seperti http://52.168.55.24, http://52.168.55.24:8080/images/test.htm, atau http://52.168.55.24:8080/video/test.htm.

Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

Test base URL in application gateway

Ubah URL ke http://<alamat IP> :8080/images/test.htm, ganti alamat IP Anda untuk< alamat IP>, dan Anda akan melihat sesuatu seperti contoh berikut:

Test images URL in application gateway

Ubah URL ke alamat http://<alamat IP> :8080/images/test.htm, ganti alamat IP Anda untuk < alamat IP>, dan Anda akan melihat sesuatu seperti contoh berikut:

Test video URL in application gateway

Membersihkan sumber daya

Jika tidak lagi diperlukan, hapus grup sumber daya, gateway aplikasi, dan semua sumber daya terkait menggunakan Remove-AzResourceGroup.

Remove-AzResourceGroup -Name myResourceGroupAG

Langkah berikutnya

Mengalihkan lalu lintas web berdasarkan URL