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
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. Untuk memulai, lihat Menginstal Azure PowerShell. 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. | |
Buka https://shell.azure.com, atau pilih tombol Luncurkan Cloud Shell untuk membuka Cloud Shell di browser Anda. | |
Pilih tombol Cloud Shell pada bilah menu di kanan atas di portal Microsoft Azure. |
Untuk menggunakan Azure Cloud Shell:
Mulai Cloud Shell.
Pilih tombol Salin pada blok kode (atau blok perintah) untuk menyalin kode atau perintah.
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.
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
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:
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:
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