練習 - 建立及設定應用程式閘道
應用程式閘道會在端點上接聽傳入要求,並將這些要求轉送至其後端集區中的其中一部網頁伺服器。 您將會提供設定來描述應用程式閘道如何引導流量,以及如何跨網頁伺服器對要求進行負載平衡。
在機動車輛部門系統中,您需要設定應用程式閘道,跨裝載車輛登記 Web 應用程式的網頁伺服器,對傳入要求進行負載平衡。 您也需要設定應用程式閘道,以偵測其中任一部網頁伺服器發生失敗的時機,使其能將流量重新導向到運作中的伺服器。 此外,您必須設定路徑型路由,以將車輛註冊和授權更新網站的要求傳送至適當的後端Web服務。
在此練習中,您將建立應用程式閘道的執行個體,且具有網頁伺服器的一個後端集區。 您將確認應用程式閘道已設定正確的接聽程式來處理傳入 HTTP 要求,並將這些要求路由傳送到運作中的網頁伺服器。
針對應用程式閘道設定網路
若要建立私人子網應用程式閘道,請執行下列命令。 子網會在您在上一個練習中建立的
appGatewaySubnet虛擬網路中命名vehicleAppVnet。az network vnet subnet create \ --resource-group $RG \ --vnet-name vehicleAppVnet \ --name appGatewaySubnet \ --address-prefixes 10.0.0.0/24若要建立應用程式閘道的公用 IP 位址和 DNS 標籤,請執行下列命令。 DNS 標籤必須是全域唯一。 若要產生標籤,下列程式碼會使用
$RANDOM函式。az network public-ip create \ --resource-group $RG \ --name appGatewayPublicIp \ --sku Standard \ --dns-name vehicleapp${RANDOM}
建立應用程式閘道
首先,使用下列命令來建立 WAF 原則:
az network application-gateway waf-policy create \ --name waf-pol \ --resource-group $RG \ --type OWASP \ --version 3.2使用下列命令來建立具有下列設定且名為
vehicleAppGateway的應用程式閘道:- 後端集區,包含網頁伺服器虛擬機器的 IP 位址。
- 可封鎖惡意要求 (例如,由 SQL 插入式攻擊和跨網站指令碼攻擊所使用的要求) 的防火牆。
- 接聽連接埠 8080 的暫時接聽程式。 此接聽程式在建立應用程式閘道過程中是必要的,雖然它將在稍後的步驟中被取代。
- 將這些要求路由傳送 (並負載平衡) 到後端集區中網頁伺服器的規則。
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注意
此命令需要幾分鐘的時間才能完成。
若要尋找
webServer1和webServer2的私人 IP 位址,請執行下列命令:az vm list-ip-addresses \ --resource-group $RG \ --name webServer1 \ --query [0].virtualMachine.network.privateIpAddresses[0] \ --output tsvaz vm list-ip-addresses \ --resource-group $RG \ --name webserver2 \ --query [0].virtualMachine.network.privateIpAddresses[0] \ --output tsv接下來,將針對每個網站新增後端集區。 首先,針對在虛擬機器上執行的車輛登記網站建立後端集區。 確定下列命令中的 IP 位址符合從先前命令輸出的 IP 位址。
az network application-gateway address-pool create \ --gateway-name vehicleAppGateway \ --resource-group $RG \ --name vmPool \ --servers 10.0.1.4 10.0.1.5若要針對在 App Service 上執行的駕照更新網站建立後端集區,請執行下列命令:
az network application-gateway address-pool create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServicePool \ --servers $APPSERVICE.azurewebsites.net針對連接埠 80,建立前端連接埠:
az network application-gateway frontend-port create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name port80 \ --port 80若要處理連接埠 80 上的要求,請建立接聽程式:
az network application-gateway http-listener create \ --resource-group $RG \ --name vehicleListener \ --frontend-port port80 \ --frontend-ip appGatewayFrontendIP \ --gateway-name vehicleAppGateway
新增健康情況探查
建立健全狀態探查來測試網頁伺服器的可用性。 健全狀態探查每 15 秒就會執行一次 (
--interval 15),並將 HTTP GET 要求傳送至 Web 應用程式的根路徑。 如果 Web 應用程式未在 10 秒內回應 (--timeout 10),探查便會逾時。如果探查連續失敗三次 (--threshold 3),系統就會將該網頁伺服器標記為狀況不良。由於您使用 App Service 作為其中一個後端,您會將主機標頭設定為 App Service 的名稱。 如果沒有此設定,App Service 將不會回應,也不會顯示為良好。
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接下來,若要使用您建立的健全狀態探查,請為閘道建立 HTTP 設定:
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
設定路徑型路由傳送
現在,我們需要為應用程式網關設定路徑型路由。 我們會將要求路由至 /VehicleRegistration/ 的 vmPool,並將要求路由至 /LicenseRenewal/ 的 appServicePool。 任何沒有 URL 背景的請求都會預設路由至 vmPool。
若要建立 vmPool 的路徑圖,請執行下列命令:
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若要建立 appServicePool 的路徑對應規則,請執行下列命令:
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現在,使用您建立的路徑對應來建立新的路由規則:
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最後要做的設定是,刪除我們一開始部署應用程式閘道時所建立的規則。 由於您的自訂規則已就緒,因此不再需要此規則。
az network application-gateway rule delete \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name rule1
一切設定完成之後,即可進行測試。