Azure Traffic Manager一 为我们的Web项目提供负载均衡

一,引言

  上一篇讲到我们将自己的Net Core Web 项目部署到 Azure 的 Web App 的一项 pass 服务,假如随着项目的日益增长的访问量,之前部署到单节点的应用可能无法保证其稳定性,可能会导致系统宕机等等问题,这个时候,我们就要考虑到项目的架构问题,怎么保证项目的稳定性,比如:

  1,纵向扩展,增加 Web App的定价层

Azure Portal 中找到我们之前创建好的叫 “CnBateBlogWeb” 的 Web App,选择 “App Service plan” => "Change App Service plan",点击 “Standard(S1)”的超链接。

 

我们可以看到,当前我们创建的Web App 的定价层是 S1,为100个计算单元,1.75G的内存,如果日后项目随着业务访问量的上涨无法满足后,我们可以进行选择升级,选择一个合适的定价层。同时,我们也可以点击 ” See additional options “ 查看更多选项,比如 "Standard(P3V2)“  

  2,横向扩展:我们可以增加 Azure Web App 实例数,Azure 已经为我们提供了 缩放/扩展的功能, 我们可以选择 ”手动“/ ”自动“去缩放我们的资源

但是今天,我采用第三种方式,假设我们的架构是这个样子的。

ok,第一种方案,我就不再进行演示了,因为之前在使用部署槽的时候,我也是把应用程序计划由一个 ”Free“ 改变成 ”S1“,今天着重讲一下第二种方式,开始内容之前,我们先了解一下Azure 提供的另外一个服务 ”Traffic Manager“。

-----------------------------题外话-----------------------------

这时,有可能会有人出来抬杠了,说硬件方面可以通过F5,软件方面,我们也可以通过 Nginx 来实现,为什么还有额外使用什么 ”Azure Traffic Manager profile“。用这个还得收费。是没错,F5和 Nginx 都可以实现,但这不是重点,重点是去熟悉,了解Azure的这些服务。

--------------------我是分割线--------------------

Azure Web App 和Azure VM 部署系列:

1,Azure Web App(一)发布你的Net Core Web 项目

2,Azure Web App(二)使用部署槽切换部署环境代码

3,Azure Web App(三)切换你的Net Core Web 项目的数据库连接字符串

4,Azure Traffic Manager(一) 为我们的Web项目提供负载均衡

5,Azure Traffic Manager(二) 基于权重与基于优先级的路由策略为我们的Web项目提供负载均衡 

6,Azure Load Balance(一) 为我们的Web项目提供负载均衡 

7,Azure Load Balancer(二) 基于内部的负载均衡来转发访问请求 

8,Azure Application Gateway(一)对后端 Web App 进行负载均衡 

9,Azure Application Gateway(二)对后端 VM 进行负载均衡  

二,正文

1,什么是 "Traffic Manager profile"(流量配置管理器)

Traffic Manager profile 是 Azure 提供的 DNS 解析服务,可以在全球 Azure 区域内以最佳方式向服务分发流量,同时提供高可用性和响应性。流量管理器提供了以下功能:

  (1)提高应用程序可用性

  (2)改善应用程序性能

  (3)在不停机的情况下执行服务维护

 。。。。。。。

Traffic Manager 将监视任何 http 或 https 端口上的每个托管服务集合。如果 Traffic Manager profile 检测到服务处于脱机状态,则会将流量发送到下一个最佳可用服务。通过使用此新功能,我们可以看到应用程序的可靠性、可用性和性能得到了提高。

2,创建 Traffic Manager profile

创建Traffic Manager profile 之前,我们还需要再创建一个Web App,配置信息和前面将到的Azure Web App 演示的Demo的基本配置一样,只是新建一个资源组为 "Web_Test_01_RG",Web App 的Name改为 “CnBateBlogWeb01”,Region 选择 ”Southeast Asia“,点击 “Review+create” 进行预校验,校验完成后,点击“Create”

Azure Portal 中 点击 ”Create a resource“,搜索框中输入 “Traffic Manager profile”,回车

 

 点击 “Create” 

 

 我们可以看到 Traffic Manager 配置文件页面,

Name:为流量管理器配置文件输入唯一的名称,

Routing method:路由策略方式

Rreource group:资源组

Resource group location:资源组的位置,这个位置我习惯根据实际项目部署的位置选择,其实它对Traffic Manager 配置文件没有任何影响

 我i们来细看一下 Routing method 这个参数

Traffic Manger 给我们提供了四种路由策略:

  (1)Performance(基于性能的路由策略):这种策略是根据当前不同服务器的性能根据可能最小延时来响应用户的请求

  (2)Weighted(基于权重的路由策略):可以对多个服务器设置不同的权重,这样Traffic Manger会根据不同的权重分配不同的流量,权重较高的,那么分配到的请求也就多一些。

  (3)Priority(优先级的路由策略):根据设置的多个服务器节点,比方说有一些服务器因为某些原因宕机,Traffic Manger 会自动从正常的服务响应用户的请求

  (4)Geographic(基于地理位置的路由策略):这种最好理解,简单说就是在不同的地理位置上部署服务器以就近响应用户的请求,

  (5)MultiValue(基于多值的路由策略):多值路由仅针对使用 IPv4 或 IPv6 地址指定了所有端点的配置文件启用,根据指定的可配置的最大返回计数返回所有运行正常的终结点。

  (6)Subnet(基于子网的路由策略): 借助子网流量路由方法,可以将一组 IP 地址范围映射到特定终结点,当流量管理器接收到请求后,它会检查请求的源 IP 并返回相关的终结点 。

我们接下来都会试试,

Name :”tm.cnbateblogweb“;Routing method 选择:”Performance“,Resource group:选择之前创建好的的 “Web_Test_TM_RG”,Resource group location 的位置是之前资源组默认的 “East Asia”。添加完成后,我们点击 “Create”。

 稍等片刻之后,我们可以再Azure Portal的通知栏中找到 刚刚创建好的 “Traffic Manager profile” ,我们点击 “Go to resource”

3, 部署项目到新的Azure Web App

我们稍微修改一下代码(主要是为了区别流量到底是转发到那个Web App的服务上的),Welcome后面添加上 cnBateBlogWeb01 的标识。

重新生成项目,选择项目发布

点击 ”新建“,选择 ”应用服务“,Azure 应用服务 ”选择现有“,点击 ”创建配置文件“

 选择上面刚刚创建好的叫 ”CnBateBlogWeb01“ 的 Web App,点击 ”确定“

 稍等片刻,等待VS的输出控制台显示 发布成功

 这时候,浏览器会自动跳出来当前项目默认的一个二级域名,这个是时候当前页面是会报错了 500,这个不用担心,是因为我们没有去配置环境变量。

我们转到Azure Portal的 CnBateBlogWeb01的 Web App,点击 ”Setting“ => "Configuration",今天添加配置

 

Name:ASPNETCORE_ENVIRONMENT

Value:Production

点击 ”OK“

 

 可以看到,我们成功的配置好环境变量

 

 回到浏览器中,我们再次刷新页面看看,页面这次显示没有任何问题,我们在Welcome 后面打的标记 ”CnBateBlogWeb01“也在

4,添加 “Traffic Manager”的 enPoint

选择 “Setting” =》"Endpoints",点击 “Add” 添加终结点。

 类型选择默认的 “Azure endpoint”,Name输入:"cbbateblogweb_webapp_performance",Target resouce type(目标资源类型) 选择 ”App Service“,Target resource 选择 "CnBateBlogWeb" 的Web App,点击 ”Add“。

 

 我们可以看到刚刚添加好的节点信息,Ststus 也是开启的

 

 重复步骤4,将刚刚创建好的叫 ”CnbateBlogWeb01“ 的 Web App 也加入到 Traffic Manager profile 的终结点中,下图圈起来的是添加好的第二个终结点信息

 5,测试流量转发

点击 ”overview“,复制 DNS name 到浏览器

我们,可以看到 流量被转发到 CnBateBlogWeb 这个Web App 上了

为了能刚好的测试,我们之前选择的 "Routing method" 为 "Performance"(基于性能的路由策略),我这边采用了谷歌浏览器的一个叫 "lighthouse"的一个网页性能测试的一个工具,下图我是直接访问两个web app默认的域名进行访问测试结果的对比图

这个是谷歌浏览器的调试工具,我们也可以清楚的看到左边的 CnBateBlogWeb 的 Web App 比右边的 CnBateBlogWeb01 的 Web App 总耗时短

不好意思,由于我自己的才疏学浅,不知道怎么才能把启用一个Web App 服务的网络延迟手动干扰增大。

6,通过设置 Routing method为 ”Geographic“来转发流量

接下来,我们创建一个新的 Traffic Manager profile,设置的路由方式为 ”Geographic“,根据地理位置分配流量

Name:“tm01.cnbateblogweb”

Routing method:”Geographic“

点击 ”Create“

添加终结点的时候,有个特殊点需要注意一下,就是需要设置 ”Geo-mapping“,这意思是,比如,我们这里配置的异地映射有 ”亚洲-中国“,”亚洲-韩国“,当用户的请求是从这些地方请求过来的,Traffic Manager 会将这些请求转发到 "CnBateBlogWeb(East Asia)" 这个目标资源。

Name:“tm01_cnbateblogweb_webapp_performance”

Target resource type:”App Service“

Target resource:”CnBateBlogWeb“

点击 ”Add“

重复上面的步骤,我们进行添加另外一个终结点信息,异地映射选择 ”澳洲-澳大利亚“,”亚洲-新加坡“

Name:“tm01_cnbateblogweb01_webapp_performance”

Target resource type:”App Service“

Target resource:”CnBateBlogWeb“

点击 ”Add“

 我们复制当前 Traffic Manager profile 的 DNS name,浏览器中输入地址,显示如下,确实跟我们配置的信息一直,当前用户的请求来自 中国的时候,会将流量转发到 CnBateblogWeb 这个Web App。

转到浏览器,我们看看结果

 我们使用一种不可描述的方式,切换一下试试,当用户的请求来自 韩国,当前 Traffic Manager 也会将流量转发到 CnBateBlogWeb 这个 Web App.

 

 我们再次切换不可描述的方式,我们可以看到,如果用户的请求来自 新加坡,Traffic Manager 会将流量转发到 ”CnBateBlogWeb01“ 这个 Web App 上。

 我们再次切换不可描述的方式,我们可以看到,如果用户的请求来自 澳大利亚,Traffic Manager 会将流量转发到 ”CnBateBlogWeb01“ 这个 Web App 上。

 ok,今天的分享到此结束。撒花,撒花!!!

原文地址:https://www.cnblogs.com/AllenMaster

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Microsoft云包括了Azure、PowerPlatform、Microsoft365、GitHub、Dynamics365等,虽然许多企业应用程序开发领导者了解在Azure上创建应用程序的价值,但事实是您可以将整个Microsoft云作为应用程序平台.有一篇文章:在Microsoft云上构建应用程序从应用程序开发角度介绍了M
《WindowsAzurePlatform系列文章目录》 我们在使用AzureAPIManagement(APIM)实现服务网关的时候,一般都是面向互联网的。比如场景一:AzureAPIManagement保护AzureVM上部署的ApacheWebService,客户端是来自于Internet的用户。整体的数据流是:用户->I
微软免费使用一年的Azure虚拟机,默认提供了一个64G的磁盘,但是系统却只给分配了32个G,尝试了几次扩大分区,最终都导致系统崩溃了,只能重新开虚拟机,无奈,只好网上找来现成的脚本,自动调整分区大小,只需要输入想调整为多少G即可,终于成功把系统分区扩大了。更改分区大小的脚本:if[[$#-eq
2022年5月25日,Meta公司选择Azure作为战略云供应商,推进人工智能创新,深化PyTorch合作https://azure.microsoft.com/en-us/blog/meta-selects-azure-as-strategic-cloud-provider-to-advance-ai-innovation-and-deepen-pytorch-collaboration/微软致力于负责任地推进人工智能的
上篇请访问这里做一个能对标阿里云的前端APM工具(上)样本多样性问题上一小节中的实施方案是微观的,即单次性的、具体的。但是从宏观上看,我需要保证性能测试是公允的,符合大众预期的。为了达到这种效果,最简单的方式就是保证测试的多样性,让足够多人访问产生足够多的样本来,但这对于一个
一年一度的MicrosoftBuild终于来了,带来了非常非常多的新技术和功能更新。不知道各位小伙伴有没有和我一样熬夜看了开幕式和五个核心主题的全过程呢?接下来我和大家来谈一下作为开发者最应关注的七大方向技术更新。AI能力的提升1.AzureOpenAIService终于来了开发人员可
问题描述使用AzureStorageAccount的共享访问签名(ShareAccessSignature)生成的终结点,连接时遇见  TheAzureStorageendpointurlismalformed(Azure存储终结点URL格式不正确)StorageAccountSDKinpom.xml:<dependency><groupId>com.azure</groupI
Azure提供的负载均衡服务叫LoadBalancer,它工作在ISO七层模型的第四层,通过分析IP层及传输层(TCP/UDP)的流量实现基于"IP+端口"的负载均衡。AzureLoadBalancer的主要功能负载均衡基于ISO四层的负载均衡,请参考下图(此图来自互联网):端口转发通过创建入站NAT规则,
各位好,今天继续来讨论关于Azure平台的技术问题,这次我们来讨论关于监控的话题,各个云平台都会为用户预留获取监控数据的接口,Azure也不例外,拿最基础用法来说,用户可以从AzurePortal中获取所需要的监控信息,比如Azure虚拟机的磁盘IO,CPU百分比,内存等,除此之外,还可以通过定义各种action,针对
在以往我们创建高可用Web应用程序时,负载均衡器是必不可少的组件。我们都使用传统内部服务器的负载均衡器,其中我们的应用程序在N个实例上运行,负载均衡器位于这些服务器的前面,并根据某些预定义的算法和设置向后端服务器分配负载。迁移到云中,我们需要了解如何使用Azure组件实现相同的
AzureEventGrid是一个托管事件路由平台,使我们能够实时响应Azure中托管的应用程序或拥有的任何Azure资源中发生的更改。EventGrid处理来自Azure服务的内置Azure事件以及来自应用程序的自定义事件,并实时发布它们。它可以每秒动态扩展和处理数百万个事件,Azure为生产工作负载提供99.
今天来谈一谈automation中另外一个很关键的内容,也就是updatemanagement,不同于configurationmanagement,updatemanagement主要用于管理windows以及LinuxVM中的补丁内容,当然和configurationmanagement一样,updatemanagement不仅仅可以管理Windows中VM的补丁,也可以管理non-Azure
下边来谈一谈Azure中Alert更多的应用,正常来说,云厂商都会有自己的SLA保证,比如目前来说,在可用性集里的虚拟机,SLA是99.95%,这点可以从商务角度保护客户的一部分利益。但是,从技术上来说,任何云都不可能保证100%的可用性,所以有些时候也会出现一些service的outage,对用户来说,第一时间知晓这
MicrosoftAzure中提供了多种类型和大小的虚拟机,我们将通过本来来了解下微软具体提供了哪些类型和大小的虚拟机,以方便在项目过程中进行评估。类型大小说明常规用途B,Dsv3,Dv3, DSv2,Dv2,Av2, DCCPU 与内存之比平衡。适用于测试和开发、小到中型数据库和低到中等流量Web
假定我们正在运行某个应用程序,此应用程序需要用户在应用程序中提交大量图片文件,那么对于系统管理员来说手动审核这些图片是很消耗时间的,并且对于图片的审核也许并不是即时的。为了解决这一问题,这篇文章将向大家演示如何使用AzureFunction和CognitiveServices来对上传到应用程序的
中国-北京[2018.12.10]2018年12月7日,历时60余天,在超过150+的面试中,21家企业经三轮筛选晋级终审,最终14家企业在激烈的角逐中成功入选微软加速器·北京13期创新企业名单。颉一软件有幸拔得头筹,很快将与MicrosoftAzure开展深度合作,开启全面加速企业级用户数字化转型之路!微软加速器·
假定我们有某个应用程序会将文件存储到AzureBlob中,存储在Blob中的数据保存七天,七天以后需要对其进行删除。这需求可以使用AzurePowerShellRunbook来完成,但是我想看看是否可以用很少甚至没有代码来完成。经过一番探索我发现AzureLogicApp非常适合这种情况。你可以用LogicApp创
接下来继续之前给各位介绍的内容,我们接着来谈下Azureautomation中关于configurationmanagement的内容,上一篇中介绍了关于inventory的应用,通过inventory,可以快速收集Azure与非Azure服务器中的资产信息。除此之外,configurationmanagement中changetracking也是个非常实用的功能,通
安全分层方法 数据几乎所有情况下,攻击者都会攻击以下数据:存储在数据库中的数据存储在虚拟机磁盘上的数据存储在Office365等SaaS应用程序上的数据存储在云存储中的数据存储数据和控制数据访问权限的人员有责任确保数据得到恰当保护。通常情况下,存在相应法规要
生成云应用程序时需要应对的常见挑战是,如何管理代码中用于云服务身份验证的凭据。保护这些凭据是一项重要任务。理想情况下,这些凭据永远不会出现在开发者工作站上,也不会被签入源代码管理系统中。虽然AzureKeyVault可用于安全存储凭据、机密以及其他密钥,但代码需要通过KeyVa