上次有个电商客户需要搭建如架构。

192.168.1.100/url1(请求url)——>Node1:10.0.0.4、10.0.0.5(服务器IP)

192.168.1.100/url2(请求url)——>Node2:10.0.0.6、10.0.0.7(服务器IP)

一个客户端根据请求Url进行流量分配,/url1流量走到Node1,然后Node1这个节点再进行一次流量负载。那么这种应用场景可以使用七层负载均衡(Application Gateway)+四层负载均衡(LB),架构图如下:

此种架构在Azure上实现起来是非常方便的,因为Azure直接就提供7层和4层负载均衡的Pass服务。

1、创建虚拟机(应用服务器)

按照上图架构中所示,这里我需要创建四台虚拟机,创建虚机的具体步骤这里就不赘述了。

按照上图所示,我已经创建好了四台虚机:imagevm01、imagevm02、videovm01、videovm02

然后,我分别给这四台虚拟机安装IIS,部署了一个网站,每个虚机部署的网站都带有自己的唯一标识。

2、创建四层负载均衡器(Load Banlancer)

按照如下图所示创建两个Load Banlancer

按照上图我已经创建好了两个Load Banlancer:imagelb、videolb

然后我们需要分别将imagevm01、imagevm02加入imagelb的后端池

videovm01、videovm02加入videolb的后端池

3、创建七层负载均衡(Application Gateway)

登录到 Azure

Login-AzureRmAccount -EnvironmentName AzureChinaCloud

创建资源组或获取资源组

因为我们创建虚拟机和四层负载均衡已经创建好了资源组,将Application Gateway和这些资源放在一个资源组即可

Get-AzureRmResourceGroup -Name "{resource group name}" -Location ""

或者也可以新建一个资源组。

New-AzureRmResourceGroup -Name AppgwRG -Location "China East"

获取虚拟网络

$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName "{resource group name}" -Name "{virual network name}"

分配子网变量,便于完成后面的创建应用程序网关的步骤。

$subnet=$vnet.Subnets[0]

创建前端配置的公共 IP 地址

创建前端的公共IP,这个IP就是我们最终访问的Application Gateway的IP地址

$publicip = New-AzureRmPublicIpAddress -ResourceGroupName AppgwRG -name publicIP01 -location "China North" -AllocationMethod Dynamic

创建应用程序网关配置

创建名为“gatewayIP01”的应用程序网关 IP 配置。当应用程序网关启动时,它会从配置的子网获取 IP 地址,再将网络流量路由到后端 IP 池中的 IP 地址。请记住,每个实例需要一个 IP 地址。

$gipconfig = New-AzureRmApplicationGatewayIPConfiguration -Name gatewayIP01 -Subnet $subnet

分别配置名为“pool01”和“pool2”的后端 IP 地址池,其中,“pool1”的 IP 地址为imagelb的IP地址“42.159.242.134 (imagelbpublicip)”;“pool2”的 IP 地址为videolb的IP地址“139.219.185.186 (videolbpublicip)”。

$pool1 = New-AzureRmApplicationGatewayBackendAddressPool -Name pool01 -BackendIPAddresses 134.170.185.46, 134.170.188.221,134.170.185.50

$pool2 = New-AzureRmApplicationGatewayBackendAddressPool -Name pool02 -BackendIPAddresses 134.170.186.46, 134.170.189.221,134.170.186.50

为后端池中进行了负载均衡的网络流量配置应用程序网关设置“poolsetting01”和“poolsetting02”

$poolSetting01 = New-AzureRmApplicationGatewayBackendHttpSettings -Name "besetting01" -Port 80 -Protocol Http -CookieBasedAffinity Disabled -RequestTimeout 120

$poolSetting02 = New-AzureRmApplicationGatewayBackendHttpSettings -Name "besetting02" -Port 80 -Protocol Http -CookieBasedAffinity Enabled -RequestTimeout 240

使用公共 IP 终结点配置前端 IP

$fipconfig01 = New-AzureRmApplicationGatewayFrontendIPConfig -Name "frontend1" -PublicIPAddress $publicip

配置应用程序网关的前端端口

$fp01 = New-AzureRmApplicationGatewayFrontendPort -Name "fep01" -Port 80

配置侦听器。此步骤针对用于接收传入网络流量的公共 IP 地址和连接端口配置侦听器。

$listener = New-AzureRmApplicationGatewayHttpListener -Name "listener01" -Protocol Http -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01

配置后端池的 URL 规则路径

$imagePathRule = New-AzureRmApplicationGatewayPathRuleConfig -Name "pathrule1" -Paths "/image/*" -BackendAddressPool $pool1 -BackendHttpSettings $poolSetting01

$videoPathRule = New-AzureRmApplicationGatewayPathRuleConfig -Name "pathrule2" -Paths "/video/*" -BackendAddressPool $pool2 -BackendHttpSettings $poolSetting02

配置默认的后端池,如果路径不符合任何预定义的路径规则,规则路径映射到默认后端池

$urlPathMap = New-AzureRmApplicationGatewayUrlPathMapConfig -Name "urlpathmap" -PathRules $videoPathRule, $imagePathRule -DefaultBackendAddressPool $pool1 -DefaultBackendHttpSettings $poolSetting02

创建规则设置

$rule01 = New-AzureRmApplicationGatewayRequestRoutingRule -Name "rule1" -RuleType PathBasedRouting -HttpListener $listener -UrlPathMap $urlPathMap

配置实例数目和应用程序网关的大小

$sku = New-AzureRmApplicationGatewaySku -Name "Standard_Small" -Tier Standard -Capacity 2

创建应用程序网关

$appgw = New-AzureRmApplicationGateway -Name appgwtest -ResourceGroupName AppgwRG -Location "China East" -BackendAddressPools $pool1,$pool2 -BackendHttpSettingsCollection $poolSetting01, $poolSetting02 -FrontendIpConfigurations $fipconfig01 -GatewayIpConfigurations $gipconfig -FrontendPorts $fp01 -HttpListeners $listener -UrlPathMaps $urlPathMap -RequestRoutingRules $rule01 -Sku $sku

获取应用程序网关 DNS 名称

Get-AzureRmPublicIpAddress -ResourceGroupName Appgw-RG -Name publicIP01

测试访问

/image会路由到Image01或者Image02

/video会路由到Video01或者Video02

七层负载(Application Gateway)+四层负载(LB)的更多相关文章

  1. 高可用 & 七层负载均衡与四层负载均衡

    内容概要 高可用 七层负载均衡 和 四层负载均衡 内容详细 一.高可用 1.什么是高可用 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用 ...

  2. 网络OSI七层架构与TCP四层架构的应用与区别

    1.OSI七层网络模型介绍 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了 ...

  3. 温故知新--计算机网络 iso/osi七层模型 tcp/ip四层模型

    ISO七层模型由下至上为1至7层,分别为: 应用层(Application layer) 表示层(Presentation layer) 会话层(Session layer) 传输层(Transpor ...

  4. 计算机网络中七层,五层,四层协议;IP 地址子网划分

    七层协议: 7 应用层(http) 6 表示层(上层用户可以相互识别的数据:jpg) 5 会话层(不同主机不同线程间的通信) 4 运输层(tcp/ip:传输层提供端到端的透明数据服务)/差错控制和流量 ...

  5. OSI七层与TCP/IP四层(小结)

    OSI 七层模型 我们一般使用的网络数据传输由下而上共有七层,分别为物理层.数据链路层.网络层.传输层.会话层.表示层.应用层,也被依次称为 OSI 第一层.第二层.⋯⋯. 第七层. 各层功能简介 1 ...

  6. OSI七层与tcp/ip四层

    1)OSI七层模型 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化,代 ...

  7. OSI七层和TCP/IP四层的关系、TCP与UDP、HTTP、Socket

    HTTP(应用层协议):超文本传输协议,HTTP协议是建立在TCP协议之上的一种应用. HTTP协议详细解释 2Http详解 TCP(面向连接的传输层协议):transmission control ...

  8. 计算机网络分层(OSI七层、 TCP/IP四层)

  9. Web负载均衡学习笔记之四层和七层负载均衡的区别

    0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...

随机推荐

  1. elementUI 通用确认框

    Util.vue <script> import VueResource from 'vue-resource' function confirm(_this, operate, fun) ...

  2. Jad查看源码

    需要者两个文件:下载地址:http://pan.baidu.com/s/11qq4I 1,解压jar包 有两个文件 分别是net.sf.jadclipse_3.3.0 jad.exe 文件 2,找到m ...

  3. HDU 2680 Choose the best route 最短路问题

    题目描述:Kiki想去他的一个朋友家,他的朋友家包括所有的公交站点一共有n 个,一共有m条线路,线路都是单向的,然后Kiki可以在他附近的几个公交站乘车,求最短的路径长度是多少. 解题报告:这道题的特 ...

  4. tensorflow随机张量创建

    TensorFlow 有几个操作用来创建不同分布的随机张量.注意随机操作是有状态的,并在每次评估时创建新的随机值. 下面是一些相关的函数的介绍: tf.random_normal 从正态分布中输出随机 ...

  5. VS 多工程代码编写

    VS工作目录,输出目录 C++项目,解决方案总文件夹下就只包含解决方案配置文件sln和一个项目总文件夹和一个Debug文件夹以及一个Release文件夹(共四个东东,其中Debug和Release文件 ...

  6. 利用VBS下载EXE文件手法记录

    1.信息来源 疑似朝鲜通过鱼叉攻击韩国统一部记者的APT事件整理 https://mp.weixin.qq.com/s/4IFV31MBNbANnCVaJj7ZPQ https://twitter.c ...

  7. MySQL 5.6 Replication 复制 FAQ

    原文请参照MySQL官方文档Reference Manual,版本5.6.10. 复制功能使得数据可以从一个MySQL数据库(master主库)复制到另一个或多个MySQL数据库(slave从库).缺 ...

  8. 关于Mysql5.6半同步主从复制的开启方法【转】

    介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...

  9. MVC 控制器中传递dynamic(对象) 给视图

    有时候不想重新定义一个实体,则使用 dynamic 来定义匿名类型. //匿名类型 传递到前台 Model dynamic viewModel = new { UserID = 5016 }; ret ...

  10. 中文分词-jieba

    支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模式,在精确模式的基础上,对长词再次切分 ...