Latihan - Membuat dan mengonfigurasi Application Gateway

Selesai

Application Gateway mendengarkan di titik akhir untuk permintaan masuk, lalu meneruskan permintaan ini ke salah satu server web di kumpulan back-end-nya. Anda akan menyediakan konfigurasi yang menjelaskan cara Application Gateway mengarahkan lalu lintas, dan cara memuat permintaan keseimbangan di seluruh server web.

Dalam sistem departemen kendaraan bermotor, Anda perlu mengonfigurasi Application Gateway untuk memuat permintaan masuk keseimbangan di seluruh server web yang menghosting aplikasi web pendaftaran kendaraan. Anda juga perlu mengonfigurasi Application Gateway untuk mendeteksi kapan salah satu server web gagal sehingga dapat mengalihkan lalu lintas ke server yang berfungsi. Selain itu, Anda perlu mengonfigurasi perutean berbasis jalur untuk mengirim permintaan untuk pendaftaran kendaraan dan situs perpanjangan lisensi ke layanan web back-end yang tepat.

Dalam latihan ini, Anda akan membuat contoh Application Gateway dengan kumpulan server web back-end. Anda akan memverifikasi bahwa Application Gateway dikonfigurasi dengan pendengar yang benar untuk menangani permintaan HTTP masuk, dan merutekan permintaan ini ke server web yang berfungsi.

Diagram showing the resources that will be deployed.

Mengonfigurasi jaringan untuk Application Gateway

  1. Untuk membuat subnet privat yang diperlukan oleh Application Gateway, jalankan perintah berikut ini. Subnet diberi nama appGatewaySubnet, dalam jaringan virtual vehicleAppVnet yang Anda buat di latihan sebelumnya.

    az network vnet subnet create \
      --resource-group $RG \
      --vnet-name vehicleAppVnet  \
      --name appGatewaySubnet \
      --address-prefixes 10.0.0.0/24
    
  2. Untuk membuat alamat IP publik dan label DNS untuk Application Gateway, jalankan perintah berikut ini. Label DNS harus unik secara global. Untuk menghasilkan label, kode berikut menggunakan fungsi $RANDOM.

    az network public-ip create \
      --resource-group $RG \
      --name appGatewayPublicIp \
      --sku Standard \
      --dns-name vehicleapp${RANDOM}
    

Membuat gateway aplikasi

  1. Pertama, gunakan perintah berikut untuk membuat kebijakan WAF:

    az network application-gateway waf-policy create \
      --name waf-pol \
      --resource-group $RG \
      --type OWASP \
      --version 3.2
    
  2. Gunakan perintah berikut untuk membuat gateway aplikasi bernama vehicleAppGateway dengan konfigurasi berikut:

    • Kumpulan back-end yang berisi alamat IP komputer virtual server web.
    • Firewall yang memblokir permintaan berbahaya, seperti yang digunakan oleh Injeksi SQL dan serangan Skrip Lintas Situs.
    • Pendengar sementara yang mendengarkan port 8080. Pendengar ini akan diganti pada langkah selanjutnya tetapi diperlukan untuk pembuatan Application Gateway.
    • Aturan yang merutekan (dan menyeimbangkan beban) permintaan ini ke server web di kumpulan back-end.
    az network application-gateway create \
    --resource-group $RG \
    --name vehicleAppGateway \
    --sku WAF_v2 \
    --capacity 2 \
    --vnet-name vehicleAppVnet \
    --subnet appGatewaySubnet \
    --public-ip-address appGatewayPublicIp \
    --http-settings-protocol Http \
    --http-settings-port 8080 \
    --private-ip-address 10.0.0.4 \
    --frontend-port 8080 \
    --waf-policy waf-pol \
    --priority 100
    

    Catatan

    Perintah ini bisa memakan waktu beberapa menit untuk diselesaikan.

  3. Untuk menemukan alamat webServer1 IP privat dan webServer2, jalankan perintah berikut:

    az vm list-ip-addresses \
      --resource-group $RG \
      --name webServer1 \
      --query [0].virtualMachine.network.privateIpAddresses[0] \
      --output tsv
    
    az vm list-ip-addresses \
      --resource-group $RG \
      --name webserver2 \
      --query [0].virtualMachine.network.privateIpAddresses[0] \
      --output tsv
    
  4. Selanjutnya, kita akan menambahkan kumpulan back-end untuk setiap situs web. Pertama, buat kumpulan back-end untuk situs pendaftaran kendaraan yang berjalan pada komputer virtual. Pastikan bahwa alamat IP dalam perintah di bawah ini cocok dengan alamat IP yang merupakan output dari perintah sebelumnya.

    az network application-gateway address-pool create \
      --gateway-name vehicleAppGateway \
      --resource-group $RG \
      --name vmPool \
      --servers 10.0.1.4 10.0.1.5
    
  5. Untuk membuat kumpulan back-end untuk situs perpanjangan lisensi yang berjalan di App Service, jalankan perintah berikut:

    az network application-gateway address-pool create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServicePool \
        --servers $APPSERVICE.azurewebsites.net
    
  6. Untuk port 80, buat port front-end:

    az network application-gateway frontend-port create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name port80 \
        --port 80
    
  7. Untuk menangani permintaan pada port 80, buat pendengar:

    az network application-gateway http-listener create \
        --resource-group $RG \
        --name vehicleListener \
        --frontend-port port80 \
        --frontend-ip appGatewayFrontendIP \
        --gateway-name vehicleAppGateway
    

Tambahkan pemeriksaan kesehatan

  1. Buat pemeriksaan kesehatan yang menguji ketersediaan server web. Pemeriksaan kesehatan berjalan setiap 15 detik (--interval 15), dan mengirim permintaan HTTP GET ke jalur akar aplikasi web. Jika aplikasi web tidak merespons dalam 10 detik (--timeout 10), waktu pemeriksaan keluar. Server web ditandai sebagai tidak sehat jika pemeriksaan gagal tiga kali berturut-turut (--threshold 3).

    Karena Anda menggunakan App Service sebagai salah satu back-end, Anda akan mengatur header host ke nama App Service. Tanpa pengaturan ini, App Service tidak akan merespons dan tidak akan terlihat sehat.

    az network application-gateway probe create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name customProbe \
        --path / \
        --interval 15 \
        --threshold 3 \
        --timeout 10 \
        --protocol Http \
        --host-name-from-http-settings true
    
  2. Selanjutnya, untuk menggunakan pemeriksaan kesehatan yang Anda buat, buat Pengaturan HTTP untuk gateway:

    az network application-gateway http-settings create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appGatewayBackendHttpSettings \
        --host-name-from-backend-pool true \
        --port 80 \
        --probe customProbe
    

Mengonfigurasi perutean berbasis jalur

Sekarang kita perlu mengonfigurasi perutean berbasis jalur untuk Gateway aplikasi. Kita akan merutekan permintaan ke /VehicleRegistration/ ke vmPool dan permintaan ke /LicenseRenewal/ ke appServicePool. Setiap permintaan tanpa konteks URL apa pun akan dirutekan ke vmPool sebagai default.

  1. Untuk membuat peta jalur untuk vmPool, jalankan perintah berikut:

    az network application-gateway url-path-map create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name urlPathMap \
        --paths /VehicleRegistration/* \
        --http-settings appGatewayBackendHttpSettings \
        --default-http-settings appGatewayBackendHttpSettings \
        --address-pool vmPool \
        --default-address-pool vmPool
    
  2. Untuk membuat aturan peta jalur untuk appServicePool, jalankan perintah berikut:

    az network application-gateway url-path-map rule create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServiceUrlPathMap \
        --paths /LicenseRenewal/* \
        --http-settings appGatewayBackendHttpSettings \
        --address-pool appServicePool \
        --path-map-name urlPathMap
    
  3. Sekarang, buat aturan perutean baru menggunakan peta jalur yang Anda buat:

    az network application-gateway rule create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServiceRule \
        --priority 200 \
        --http-listener vehicleListener \
        --rule-type PathBasedRouting \
        --address-pool appServicePool \
        --url-path-map urlPathMap
    
  4. Bagian terakhir konfigurasi adalah menghapus aturan yang kami buat ketika kami awalnya menyebarkan Application Gateway. Dengan aturan kustom yang sudah ada, Anda tidak lagi membutuhkannya.

    az network application-gateway rule delete \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name rule1
    

Setelah semua selesai disiapkan saatnya untuk pengujian.