天天看點

Azure上七層負載均衡APP Gateway

Azure的SLB和ILB是最常用的4層負載均衡工具。但有些場景是7層的負載均衡,SLB和ILB就無能為力了。

Azure上已經推出了APP Gateway的服務,就是7層負載均衡的負載均衡器。

Azure上七層負載均衡APP Gateway

如上圖,APP Gateway實作使用者HTTPS網站的SSL Offload,還可以實作多個VM的負載均衡。而且可以實作Cookie Affinity功能,這也是7層負載均衡的一種功能。

通過App Gateway、SLB、Traffic Manager綜合使用,可以實作對應用系統的高擴充性:

Azure上七層負載均衡APP Gateway

可以通過智能DNS選擇北部的Azure的資料中心還是東部的Azure的資料中心,再通過4層的SLB把流量分擔到多個Application Gateway上,Application Gateway再根據政策,把流量分擔到各個虛拟機上。

Application Gateway的部署基于VNet,但其負載均衡的節點可以是非本VNet的虛拟機。如下圖:

Azure上七層負載均衡APP Gateway

其負載均衡的節點除本VNet的虛拟機外,可以是其他的Cloud Service,其他VNet内的虛拟機(需要VPN打通),甚至外部的虛拟機都可以成為Application Gateway的負載均衡節點。

App Gateway一共有3中型号:

Small – Dev/Test使用,不建議部署在生産環境

Medium – 可以支援150Mbps的SSL流量

Large – 可以支援200Mbps的SSL流量

具體配置指令:

建立Application Gateway

New-AzureApplicationGateway -Name hwappgw -VnetName hwvnet -Subnets Subnet-1 -InstanceCount 2 -GatewaySize Medium

New-AzureApplicationGateway -Name hwappgw02 -VnetName hwvnet -Subnets Subnet-1 -InstanceCount 2 -GatewaySize Medium

上面的配置中配置了兩個APP Gateway。

第一個會把其對外的位址設定為Subnet-1的位址,将采用ILB的四層負載均衡;第二個會讓其自動獲得公網的VIP位址,将采用SLB的四層負載均衡。

設定Application Gateway的配置檔案

首先編輯Application Gateway的配置檔案,a.xml将采用ILB的方式實作負載均衡,c.xml将采用SLB的方式實作負載均衡:

a.xml

<?xml version="1.0" encoding="utf-8"?>

<ApplicationGatewayConfiguration xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/windowsazure">

<FrontendIPConfigurations>

<FrontendIPConfiguration>

<Name>fip1</Name>

<Type>Private</Type>

<StaticIPAddress>10.1.1.140</StaticIPAddress>

</FrontendIPConfiguration>

</FrontendIPConfigurations>

<FrontendPorts>

<FrontendPort>

<Name>FrontendPort1</Name>

<Port>80</Port>

</FrontendPort>

</FrontendPorts>

<BackendAddressPools>

<BackendAddressPool>

<Name>BackendPool1</Name>

<IPAddresses>

<IPAddress>10.1.1.151</IPAddress>

<IPAddress>10.1.1.152</IPAddress>

</IPAddresses>

</BackendAddressPool>

</BackendAddressPools>

<BackendHttpSettingsList>

<BackendHttpSettings>

<Name>BackendSetting1</Name>

<Protocol>Http</Protocol>

<CookieBasedAffinity>Enabled</CookieBasedAffinity>

</BackendHttpSettings>

</BackendHttpSettingsList>

<HttpListeners>

<HttpListener>

<Name>HTTPListener1</Name>

<FrontendIP>fip1</FrontendIP>

<FrontendPort>FrontendPort1</FrontendPort>

</HttpListener>

</HttpListeners>

<HttpLoadBalancingRules>

<HttpLoadBalancingRule>

<Name>HttpLBRule1</Name>

<Type>basic</Type>

<BackendHttpSettings>BackendSetting1</BackendHttpSettings>

<Listener>HTTPListener1</Listener>

<BackendAddressPool>BackendPool1</BackendAddressPool>

</HttpLoadBalancingRule>

</HttpLoadBalancingRules>

</ApplicationGatewayConfiguration>

可以注意到其前端的IP位址是10.1.1.140。

c.xml

這個配置中的前端IP不進行設定,講自動獲得VIP位址。

設定Application Gateway的配置

Set-AzureApplicationGatewayConfig -Name hwappgw -ConfigFile D:\a.xml

Set-AzureApplicationGatewayConfig -Name hwappgw02 -ConfigFile D:\c.xml

啟動Application Gateway

Start-AzureApplicationGateway -Name hwappgw

Start-AzureApplicationGateway -Name hwappgw02

這個過程将比較耗時,這一步需要大約20分鐘的時間建立。這個過程中,Azure會在背景建立多台Application Gateway的VM,實作HA的配置。

獲得Application Gateway的狀态

Get-AzureApplicationGateway

<col>

Name

hwappgw

Description

VnetName

hwvnet

Subnets

{Subnet-1}

InstanceCount

2

GatewaySize

Medium

State

Running

VirtualIPs

{10.1.1.140}

DnsName

hwappgw02

{42.159.241.87}

70da9ed4-cf13-45a9-9fa3-c44f7e98e73a.chinacloudapp.cn

可以觀察到,hwappgw的位址是一個内部位址,而hwappgw02的位址是一個公網位址,并有DNS的域名。

這時已經可以通過這個兩個負載均衡的位址通路背景的服務了。Application Gateway會根據10.1.1.151和10.1.1.152兩台虛拟機的狀态進行負載均衡的流量轉發。

上傳SSL證書

Add-AzureApplicationGatewaySslCertificate -Name hwappgw02 -CertificateName hengweicert -Password xxxx -CertificateFile D:\HengweiCert.pfx

Name HTTP Status Code Operation ID Error

---- ---------------- ------------ -----

Successful OK ae3d3289-618f-4da0-bf45-56ed2542d098

确認證書狀态

Get-AzureApplicationGatewaySslCertificate -Name hwappgw02

Name     : hengweicert

SubjectName     : CN=ClientCertificateHengwei

Thumbprint     : 1336E8F9BB18A947AD79F0A2939411B0BC3D893B

ThumbprintAlgo     : sha1RSA

State         : Provisioned

更改hwappgw02的配置檔案

修改c.xml配置檔案,修改協定為https、443端口,以及添加證書配置:

&lt;Port&gt;443&lt;/Port&gt;

&lt;Protocol&gt;Https&lt;/Protocol&gt;

     &lt;SslCert&gt;hengweicert&lt;/SslCert&gt;

上傳APP Gateway的設定

此時通過https通路這個網站,會提示證書不受信任(自簽名證書)

Azure上七層負載均衡APP Gateway

點選繼續後,出現網站首頁面:

Azure上七層負載均衡APP Gateway

而此時虛拟機提供的隻是HTTP服務,由application gateway做了SSL的加密發送給使用者。

目前Application Gateway可以實作的功能主要是基于CookieAffinity的負載均衡和SSL的Offload。

将來還會出基于URL的HTTP路由政策。新功能出來後,再做更新!