最近无服务器架构是一个非常火的话题,在传统的Web应用程序架构中,你必须管理基础架构,而若您用了Azure就可以从安全(Application Gateway)到网站(Web App & Function)到数据库(RDS DB )全部的无服务器架构了,这样可以极大的降低企业的运营管理成本且拥有无限的可扩展性。
今天主要聊聊Application Gateway添加多个Web App站点作为后端池成员.
也许很多读者很疑惑,官方文档明明写着Application Gateway可以支持多个站点托管,应该也支持添加多个Web APP站点吧。诚然官方文档写了可以添加Web APP作为后端池成员,但是…却没有相应的文档指导如何添加多个Web APP站点作为后端池成员。于是乎笔者花了些时间研究了下确实是可以让Application Gateway添加多个Web APP站点。
造成这种原因是Web APP服务本身就是一个多租户的服务,需要依赖于特定的主机头或者SNI扩展才能正确解析为正确的终结点。
测试的架构图如下所示:
下面我们就用PowerShell添加多Web App站点
首先,打开powershell界面
#登录Azure
Login-AzureRmAccount -Environment azurechinacloud
#列出该系统登录过的订阅账户(若之前未使用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就会出现如下效果: