Bagikan melalui


Tutorial: Membuat sebuah gateway aplikasi untuk pengalihan berbasis jalur URL menggunakan Azure CLI

Anda dapat menggunakan Azure CLI untuk mengonfigurasi aturan perutean berbasis jalur URL ketika membuat gateway aplikasi. Dalam tutorial ini, Anda membuat kumpulan backend menggunakan set skala komputer virtual. Anda kemudian membuat aturan perutean URL yang memastikan lalu lintas web dialihkan ke kumpulan backend yang sesuai.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Siapkan jaringan
  • Membuat gerbang aplikasi
  • Tambahkan pendengar dan aturan perutean
  • Buat set skala komputer virtual untuk kumpulan backend

Contoh berikut menunjukkan lalu lintas situs yang berasal dari keduanya yakni port 8080 dan 8081 dan diarahkan ke kumpulan backend yang sama:

Diagram contoh perutean URL gateway aplikasi.

Jika mau, Anda dapat menyelesaikan tutorial ini menggunakan Azure PowerShell.

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

Prasyarat

  • Tutorial ini memerlukan Azure CLI versi 2.0.4 atau yang lebih baru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terinstal.

Buat grup sumber daya

Grup sumber daya adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola. Membuat grup sumber daya dengan menggunakan az group create.

Contoh berikut membuat grup sumber daya bernama myResourceGroupAG di lokasi eastus.

az group create --name myResourceGroupAG --location eastus

Membuat sumber daya jaringan

Buat jaringan virtual bernama myVNet dan subnet bernama myAGSubnet menggunakan az network vnet create. Anda kemudian dapat menambahkan subnet bernama myBackendSubnet yang diperlukan oleh server ujung belakang menggunakan az network vnet subnet create. Buat alamat IP publik bernama myAGPublicIPAddress menggunakan buat ip-publik jaringan az.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myAGSubnet \
  --subnet-prefix 10.0.1.0/24

az network vnet subnet create \
  --name myBackendSubnet \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --address-prefix 10.0.2.0/24

az network public-ip create \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard

Membuat gerbang aplikasi

Gunakan az network application-gateway create untuk membuat gateway aplikasi bernama myAppGateway. Saat Anda membuat gateway aplikasi menggunakan Azure CLI, Anda menentukan informasi konfigurasi, seperti pengaturan kapasitas, sku, dan HTTP. Gateway aplikasi ditetapkan ke myAGSubnet dan myPublicIPAddress yang Anda buat sebelumnya.

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --subnet myAGsubnet \
  --capacity 2 \
  --sku Standard_v2 \
  --http-settings-cookie-based-affinity Disabled \
  --frontend-port 80 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --public-ip-address myAGPublicIPAddress \
  --priority 100

Mungkin perlu waktu beberapa menit untuk membuat gateway aplikasi. Setelah gateway aplikasi dibuat, Anda bisa melihat fitur baru ini:

  • appGatewayBackendPool - Gateway aplikasi harus memiliki setidaknya satu kumpulan alamat backend.
  • appGatewayBackendHttpSettings - Menentukan bahwa port 80 dan protokol HTTP digunakan untuk komunikasi.
  • appGatewayHttpListener - Listener default yang dikaitkan dengan appGatewayBackendPool.
  • appGatewayFrontendIP: Menetapkan myAGPublicIPAddress ke appGatewayHttpListener.
  • rule1 - Aturan perutean default yang diasosiasikan dengan appGatewayHttpListener.

Tambahkan kumpulan backend dan port

Anda dapat menambahkan pool alamat backend bernama imagesBackendPool dan videoBackendPool ke gateway aplikasi Anda dengan menggunakan az network application-gateway address-pool create. Anda menambahkan port frontend untuk pool menggunakan az network application-gateway frontend-port create.

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name imagesBackendPool

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name videoBackendPool

az network application-gateway frontend-port create \
  --port 8080 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name bport

az network application-gateway frontend-port create \
  --port 8081 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name rport

Menambahkan pendengar dan aturan

Tambahkan listener

Tambahkan pendengar backend bernama backendListener dan redirectedListener yang diperlukan untuk merutekan lalu lintas menggunakan az network application-gateway http-listener create.

az network application-gateway http-listener create \
  --name backendListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port bport \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

az network application-gateway http-listener create \
  --name redirectedListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port rport \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

Tambahkan peta jalur URL default

Peta jalur URL memastikan URL tertentu dirutekan ke kumpulan backend tertentu. Anda dapat membuat peta jalur URL bernama imagePathRule dan videoPathRule menggunakan az network application-gateway url-path-map create dan az network application-gateway url-path-map rule create

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name urlpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --address-pool imagesBackendPool \
  --default-address-pool appGatewayBackendPool \
  --default-http-settings appGatewayBackendHttpSettings \
  --http-settings appGatewayBackendHttpSettings \
  --rule-name imagePathRule

az network application-gateway url-path-map rule create \
  --gateway-name myAppGateway \
  --name videoPathRule \
  --resource-group myResourceGroupAG \
  --path-map-name urlpathmap \
  --paths /video/* \
  --address-pool videoBackendPool

Tambahkan konfigurasi pengalihan

Anda dapat mengonfigurasi pengalihan untuk listener menggunakan az network application-gateway redirect-config create.

az network application-gateway redirect-config create \
  --gateway-name myAppGateway \
  --name redirectConfig \
  --resource-group myResourceGroupAG \
  --type Found \
  --include-path true \
  --include-query-string true \
  --target-listener backendListener

Menambahkan peta jalur URL pengalihan

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name redirectpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --redirect-config redirectConfig \
  --rule-name redirectPathRule

Tambahkan aturan perutean

Aturan perutean mengaitkan jalur peta URL dengan listener yang Anda buat. Anda dapat menambahkan aturan dengan nama defaultRule dan redirectedRule menggunakan az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name defaultRule \
  --resource-group myResourceGroupAG \
  --http-listener backendListener \
  --rule-type PathBasedRouting \
  --url-path-map urlpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name redirectedRule \
  --resource-group myResourceGroupAG \
  --http-listener redirectedListener \
  --rule-type PathBasedRouting \
  --url-path-map redirectpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

Membuat set skala mesin virtual

Dalam contoh ini, Anda membuat tiga set skala mesin virtual yang mendukung tiga kumpulan backend yang Anda buat. Set skala yang Anda buat bernama myvmss1, myvmss2, dan myvmss3. Setiap set skala berisi dua instans komputer virtual di tempat Anda menginstal NGINX.

Ganti <azure-pengguna> dan <kata sandi> dengan nama pengguna dan kata sandi pilihan Anda.

for i in `seq 1 3`; do
  if [ $i -eq 1 ]
  then
    poolName="appGatewayBackendPool"
  fi
  if [ $i -eq 2 ]
  then
    poolName="imagesBackendPool"
  fi
  if [ $i -eq 3 ]
  then
    poolName="videoBackendPool"
  fi

  az vmss create \
    --name myvmss$i \
    --resource-group myResourceGroupAG \
    --image Ubuntu2204 \
    --admin-username <azure-user> \
    --admin-password <password> \
    --instance-count 2 \
    --vnet-name myVNet \
    --subnet myBackendSubnet \
    --vm-sku Standard_DS2 \
    --upgrade-policy-mode Automatic \
    --app-gateway myAppGateway \
    --backend-pool-name $poolName
done

Memasang NGINX

for i in `seq 1 3`; do
  az vmss extension set \
    --publisher Microsoft.Azure.Extensions \
    --version 2.0 \
    --name CustomScript \
    --resource-group myResourceGroupAG \
    --vmss-name myvmss$i \
    --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'

done

Uji gateway aplikasi

Untuk mendapatkan alamat IP publik dari application gateway, gunakan az network public-ip show. Salin alamat IP publik, lalu tempelkan ke bilah alamat browser Anda. Seperti, http://40.121.222.19, http://40.121.222.19:8080/images/test.htm, http://40.121.222.19:8080/video/test.htm, atau http://40.121.222.19:8081/images/test.htm.

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

Menguji URL dasar di gateway aplikasi

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

Uji URL gambar di gateway aplikasi

Ubah URL ke http://<alamat-ip>:8080/video/test.html, mengganti alamat IP Anda dengan <alamat-ip>, dan Anda akan melihat sesuatu seperti contoh berikut:

Uji URL video di gateway aplikasi

Sekarang, ubah URL ke http://<ip-address>:8081/images/test.htm, ganti alamat IP Anda untuk <alamat ip>, dan Anda akan melihat lalu lintas dialihkan kembali ke kumpulan backend gambar di http://<ip-address>:8080/images.

Membersihkan sumber daya

Jika tidak lagi diperlukan, hapus grup sumber daya, gateway aplikasi, dan semua sumber daya terkait.

az group delete --name myResourceGroupAG

Langkah berikutnya