最近無服務器架構是一個很是火的話題,在傳統的Web應用程序架構中,你必須管理基礎架構,而若您用了Azure就能夠從安全(Application Gateway)到網站(Web App & Function)到數據庫(RDS DB )所有的無服務器架構了,這樣能夠極大的下降企業的運營管理成本且擁有無限的可擴展性。 web
今天主要聊聊Application Gateway添加多個Web App站點做爲後端池成員. shell
也許不少讀者很疑惑,官方文檔明明寫着Application Gateway能夠支持多個站點託管,應該也支持添加多個Web APP站點吧。誠然官方文檔寫了能夠添加Web APP做爲後端池成員,可是…卻沒有相應的文檔指導如何添加多個Web APP站點做爲後端池成員。因而乎筆者花了些時間研究了下確實是可讓Application Gateway添加多個Web APP站點。 數據庫
形成這種緣由是Web APP服務自己就是一個多租戶的服務,須要依賴於特定的主機頭或者SNI擴展才能正確解析爲正確的終結點。 後端
測試的架構圖以下所示: 安全
下面咱們就用PowerShell添加多Web App站點 服務器
首先,打開powershell界面 架構
#登陸Azure app
Login-AzureRmAccount -Environment azurechinacloud webapp
#列出該系統登陸過的訂閱帳戶(若以前未使用Powershell登陸過,此步驟可省略),選擇須要操做的訂閱 測試
Get-AzureSubscription
Select-AzureSubscription -SubscriptionId "8e6b37a5-63ab-44d9-8fc3-*********"
#輸入你須要添加的Web App Dns
$webappFQDN = "web-app1.chinacloudsites.cn"
$webapp=$webappFQDN.Split(".")[0]
#輸入應該程序網關的名稱以及資源組的名稱
$gatewayname= "multiple-webapp"
$resourcegroupname="multiple-webapp"
#獲取當前應用程序網關的信息
$gw = Get-AzureRmApplicationGateway -Name $gatewayname -ResourceGroupName $resourcegroupname
#添加自定義健康檢測
$match=New-AzureRmApplicationGatewayProbeHealthResponseMatch -StatusCode 200-399
Add-AzureRmApplicationGatewayProbeConfig -name "$webapp--probe" -ApplicationGateway $gw -Protocol Http -Path / -Interval 30 -Timeout 120 -UnhealthyThreshold 3 -PickHostNameFromBackendHttpSettings -Match $match
$probe = Get-AzureRmApplicationGatewayProbeConfig -name "$webapp--probe" -ApplicationGateway $gw
#添加HTTP設置
Add-AzureRmApplicationGatewayBackendHttpSettings -Name "$webapp--httpsetting" -ApplicationGateway $gw -Port 80 -Protocol Http -CookieBasedAffinity Disabled
Set-AzureRmApplicationGatewayBackendHttpSettings -Name "$webapp--httpsetting" -ApplicationGateway $gw -PickHostNameFromBackendAddress -Port 80 -Protocol http -CookieBasedAffinity Disabled -RequestTimeout 30 -Probe $probe
#添加後面地址池
Add-AzureRmApplicationGatewayBackendAddressPool -Name "$webapp--backendpool" -ApplicationGateway $gw
Set-AzureRmApplicationGatewayBackendAddressPool -Name "$webapp--backendpool" -ApplicationGateway $gw -BackendFqdns $webappFQDN
#更新應用程序網關
Set-AzureRmApplicationGateway -ApplicationGateway $gw
如有多個Web APP站點,更改變量後再執行一次就能夠了。
等等,還沒完事哦,如果多站點咱們還須要添加listener以及rule,因爲listener以主rule每一個企業的需求不同,好比能夠按照path選擇不一樣的後端資源池,這裏主要以圖形界面展現標準的rule配置。
在portal頁面進入Application Gateway,新建一個listener,選擇"Multi-Site"
點擊"OK",如有多個listener,重複上述步驟
接下來先刪除默認的rule1
而後添加rule,直接選擇"basic"
一樣的,如有多個rules重複上述步驟
配置完上述步驟後就算配置完成。
咱們作個簡單的測試:
首先在本地的hosts文件裏添加上以下條目:
139.219.61.179 webapp-1.chinacloudsites.cn
139.219.61.179 webapp-2.chinacloudsites.cn
這樣訪問webapp-1和webapp-2就會強制轉向Application Gateway
咱們用ping命令測試下,看看是否指向Application Gateway的IP地址
這樣訪問webapp-1和webapp-2就會出現以下效果: