Membuat gateway aplikasi yang menghosting beberapa situs web menggunakan Azure CLI

Anda bisa menggunakan Azure CLI untuk mengonfigurasi hosting beberapa situs web saat Anda membuat gateway aplikasi. Di artikel ini, Anda akan menentukan kumpulan alamat ujung belakang menggunakan set skala komputer virtual. Kemudian, Anda akan mengonfigurasi listener dan aturan berdasarkan domain yang Anda punya untuk memastikan lalu lintas web masuk ke kumpulan yang sudah sesuai. Artikel ini berasumsi Anda sudah memiliki beberapa domain dan menggunakan contoh www.contoso.com dan www.contoso.org.

Di artikel ini, Anda akan mempelajari cara:

  • Siapkan jaringan
  • Membuat gateway aplikasi
  • Membuat listener ujung belakang
  • Membuat aturan perutean
  • Membuat set skala komputer virtual dengan kumpulan ujung belakang
  • Membuat data CNAME di domain Anda

Application Gateway Multi-situs

Jika berkenan, Anda dapat menyelesaikan prosedur ini menggunakan Azure PowerShell.

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

Prasyarat

  • Gunakan lingkungan Bash di Azure Cloud Shell.

    Luncurkan Cloud Shell di jendela baru

  • Jika mau, instal Azure CLI untuk menjalankan perintah referensi CLI.

    • Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk tambahan, lihat Masuk dengan Azure CLI.

    • Saat diminta, instal ekstensi saat pertama kali menggunakan Azure CLI. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.

    • Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk memutakhirkan ke versi terbaru, jalankan pemutakhiran az.

  • Tutorial ini memerlukan Azure CLI versi 2.0.4 atau yang lebih baru. Jika ingin 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 dan subnet dengan nama myAGSubnet menggunakan pembuatan vnet jaringan az. Lalu, Anda dapat menambahkan subnet yang diperlukan oleh server ujung belakang menggunakan pembuatan subnet vnet jaringan az. Buat alamat IP publik dengan nama myAGPublicIPAddress menggunakan pembuatan 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 application gateway

Anda bisa menggunakan az network application-gateway create untuk membuat application gateway. Saat Anda membuat gateway aplikasi menggunakan Azure CLI, Anda menentukan informasi konfigurasi, seperti pengaturan kapasitas, sku, dan HTTP. Gateway aplikasi ditetapkan ke myAGSubnet dan myAGPublicIPAddress yang sudah 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

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 terkait dengan appGatewayHttpListener.

Tambahkan kumpulan ujung belakang

Tambahkan kumpulan ujung belakang yang diperlukan untuk mengisi server ujung belakang menggunakan pembuatan kumpulan-alamat aplikasi-gateway jaringan az

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

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

Tambahkan listener

Tambahkan listener yang diperlukan untuk merutekan lalu lintas menggunakan pembuatan http-listener aplikasi-gateway jaringan az.

Catatan

Dengan Application Gateway atau WAF v2 SKU, Anda juga dapat mengonfigurasi hingga 5 nama host per listener dan Anda dapat menggunakan karakter kartubebas untuk nama host. Lihat nama host kartubebas di listener untuk informasi selengkapnya. Untuk menggunakan beberapa nama host dan karakter kartubebas pada listener dengan menggunakan Azure CLI, Anda harus menggunakan --host-names daripada --host-name. Dengan nama host, Anda dapat menyebutkan hingga lima nama host sebagai nilai yang dipisahkan spasi. Contohnya, --host-names "*.contoso.com *.fabrikam.com"

az network application-gateway http-listener create \
  --name contosoListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.contoso.com

az network application-gateway http-listener create \
  --name fabrikamListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.fabrikam.com   

Menambahkan aturan perutean

Aturan diproses dalam urutan yang mereka cantumkan jika bidang prioritas aturan tidak digunakan. Lalu lintas diarahkan menggunakan aturan pertama yang cocok terlepas dari kekhususannya. Misalnya, jika Anda memiliki aturan menggunakan listener dasar dan aturan yang menggunakan listener multi-situs pada port yang sama, aturan dengan listener multi-situs harus dicantumkan sebelum aturan dengan listener dasar agar aturan multi-situs berfungsi seperti yang diharapkan.

Di contoh ini, Anda akan membuat dua aturan baru dan menghapus aturan default yang dibuat saat Anda menyebarkan gateway aplikasi. Anda dapat menambahkan aturan menggunakan pembuat aturan gateway aplikasi jaringan az.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoListener \
  --rule-type Basic \
  --address-pool contosoPool

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name fabrikamRule \
  --resource-group myResourceGroupAG \
  --http-listener fabrikamListener \
  --rule-type Basic \
  --address-pool fabrikamPool

az network application-gateway rule delete \
  --gateway-name myAppGateway \
  --name rule1 \
  --resource-group myResourceGroupAG

Menambahkan prioritas ke aturan perutean

Untuk memastikan bahwa aturan yang lebih spesifik diproses terlebih dahulu, gunakan bidang prioritas aturan untuk memastikan mereka memiliki prioritas yang lebih tinggi. Bidang prioritas aturan harus ditetapkan untuk semua aturan perutean permintaan yang ada dan setiap aturan baru yang dibuat nanti juga harus memiliki nilai prioritas aturan.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name wccontosoRule \
  --resource-group myResourceGroupAG \
  --http-listener wccontosoListener \
  --rule-type Basic \
  --priority 200 \
  --address-pool wccontosoPool

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name shopcontosoRule \
  --resource-group myResourceGroupAG \
  --http-listener shopcontosoListener \
  --rule-type Basic \
  --priority 100 \
  --address-pool shopcontosoPool

Buat set skala komputer virtual

Di contoh ini, Anda akan membuat tiga set skala komputer virtual yang mendukung tiga kumpulan ujung belakang di gateway aplikasi. Beri nama myvmss1, myvmss2, dan myvmss3 untuk set skala yang Anda buat. Setiap set skala berisi dua instans komputer virtual di tempat Anda menginstal IIS.

for i in `seq 1 2`; do

  if [ $i -eq 1 ]
  then
    poolName="contosoPool"
  fi

  if [ $i -eq 2 ]
  then
    poolName="fabrikamPool"
  fi

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

Instal NGINX

for i in `seq 1 2`; 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

Membuat data CNAME di domain Anda

Setelah gateway aplikasi dibuat dengan alamat IP publiknya, Anda bisa mendapatkan alamat DNS dan menggunakannya untuk membuat data CNAME di domain Anda. Untuk mendapatkan alamat DNS publik gateway aplikasi, gunakan tampilkan ip publik-jaringan az. Salin nilai fqdn DNSSettings dan gunakan sebagai nilai data CNAME yang Anda buat.

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

Penggunaan rekaman A tidak disarankan karena VIP dapat berubah ketika gateway aplikasi dimulai ulang.

Uji gateway aplikasi

Masukkan nama domain Anda ke bilah alamat pada browser. Contohnya, http://www.contoso.com.

Uji situs contoso di gateway aplikasi

Ubah alamat tadi ke domain Anda yang lain dan Anda akan menemukan sesuatu seperti contoh berikut:

Menguji situs fabrikam di gateway aplikasi

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

Membuat gateway aplikasi dengan aturan perutean berbasis jalur URL