最近无服务器架构是一个很是火的话题,在传统的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就会出现以下效果: