azure git怎么使用_Azure(一)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)”的超链接。

56264a283155d5931a86f6344b3c3083.png

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

76dd50faf9391d4d8fe1f43592eecd32.png

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

14589c98e25dfbb38a710d3cdabcedfd.png

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

b58a3f272c39a0a79ab9b8c5bbcc3d55.png

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

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

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

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

Azure Web App 部署系列:

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

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

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

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

二,正文

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”

237c48394c5885f2226a4801c063ab32.png

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

d766a1a00fc6e024d113a2d41b6f829b.png

点击 “Create”

2618a42887303d76623517dc7297aabf.png

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

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

Routing method:路由策略方式

Rreource group:资源组

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

2ae4f76e98edf1fd80717cff0be948eb.png

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

978697d33d5342276ae6f51076cc1814.png

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”。

08ae4b3faae0853a26edf4d95ae270a4.png

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

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

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

e770b160285ff13b1a115b8fccef2d4f.png

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

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

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

21d07a2ed362d88153a13ed0c7cd836a.png

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

51d90bf38fa2e491765091e6d3790eb8.png

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

2bd5fab8e01de80cad26ed85afbe84ba.png

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

859b0328b1929cacb34f51ee2a41e4f6.png

Name:ASPNETCORE_ENVIRONMENT

Value:Production

点击 ”OK“

68d1254df2cee3a69765e5fcd7c1d5af.png

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

8ee476d2960ad360b7b58f98bd7d7a1d.png

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

4e29974b2b50dddee1f86b55550fef69.png

4,添加 “Traffic Manager”的 enPoint

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

cabeae3132bd6c154a2a88cd4c7c7cf3.png
d669715733c74a6522588552f3b51212.png

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

e969f011b95ca05bdab3701d779036e1.png

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

ff008b2f8d82c2f2a07b8396a83ec237.png

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

3d602e1adce5567f516847ec09e8d8e5.png

5,测试流量转发

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

d33474d14af872b78b79b66c8a69c1df.png

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

67ba6f35f4cd7d004e43b48484fb1985.png

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

9d960df469a9ea81a8869c25e4f35f22.png

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

5ef86c13733c6e92cfb8309d528c61ca.png

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

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

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

Name:“tm01.cnbateblogweb”

Routing method:”Geographic“

点击 ”Create“

f10b974fe745706bc751b1ff54cb6aab.png

添加终结点的时候,有个特殊点需要注意一下,就是需要设置 ”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“

f6e168e1453ffa171172a27c3ca5b86d.png

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

81c58daa3c69f3adf92c84c68b5ec8c4.png

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

51219b82ad04e469ca161aa4e4aa72b4.png
51219b82ad04e469ca161aa4e4aa72b4.png

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

9b96cba64d89abdf4f2151642071e83f.png

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

0879c64fe2579238a5a5a311de2bff04.png

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

ffc52925cd4cc2dcbdabacc7c43e8cec.png

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

三,总结

今天将的内容也有些多,演示了两种Traffic Manager 的路由策略,也同时复习了一下如何创建 Web App,以及使用 VS 发布项目到 Azure Web App。

下一篇,我们继续介绍 Traffic Manager 剩下的4种路由策略,期待中........

作者:Allen

项目代码:https://github.com/yunqian44/CnBateBlogWeb.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hiho1257 Snake Carpet

题目链接:http://hihocoder.com/problemset/problem/1257 题目大意:有n条蛇 编号为1-n 每条蛇的长度跟编号相等 奇数编号的蛇必须拐奇数次(除了第一条)偶数编号的蛇必须拐偶数次(除了第二条)问能不能在这种…

POJ 3680_Intervals

题意: 给定区间和该区间对应的权值,挑选一些区间,求使得每个数都不被K个区间覆盖的最大权值和。 分析: 如果K1,即为区间图的最大权独立集问题。可以对区间所有端点排序后利用动态规划的方法,设dp[i]为只考虑…

MongoDB 数据类型查询——$type使用

在MongoDB中根据字段的数量类型来查询数据使用$type操作符来实现,具体使用法语:1db.集合名.find({$type:类型值}) //这里的类型值能使用Number也能使用alias举个例子:12db.person.find({address:{$type:2}}) //查询address字段数据…

Spring和JSF集成:MVC螺母和螺栓

过去,我曾尝试将JSF与Spring MVC集成在一起,尽管我的第一次尝试成功了,但这远非理想。 这次,我决定做出一些关键决定来帮助我集中精力: 向后兼容。 支持JSF 1.2涉及的工作太多,而Spring 3.1中出现了太多的好…

文字描边_如何在网页里实现文字描边效果

文字描边想要在网页里实现文本描边效果,在以前只能使用Photoshop等来实现,但现在只需要一个text-stroke属性,即可轻松做到文本描边,渐变文本描边,甚至图片文本描边。01语法text-stroke: text-stroke是一个复合属性&…

javascript数据结构-栈

github博客地址 栈(stack)又名堆栈,它是一种运算受限的线性表。遵循后进先出原则,像垃圾桶似的。功能实现依然按照增删改查来进行,内部数据存储可以借用语言原生支持的数组。 栈类 function Stack(){this.data []; }添…

MongoDB 字符串值长度条件查询

在实际项目中常常会有根据字段值长度大小进行限制查询,例如查询商品名称过长或过短的商品信息,具体的实现方式可能有多种,在此记录常见的两种实现使用 $where 查询(性能稍逊一些)12345//查询商品名称长度大于25个字符的…

虚拟化Java应用程序:最佳实践(JavaOne 2011)

贾斯汀穆雷(Justin Murray)早五分钟就开始了他的演讲[“虚拟化Java应用程序:最佳实践”(21860)],并说虚拟化已经到了人们不再需要担心利用虚拟化的地步。 他说他的演讲大约有一年的历史,是一个团…

linux里hba状态_Windows和Linux系统查看HBA卡wwn号的方法 | 系统之家官网

一、windows 系统在windows系统中,可以使用fc hba卡厂家提供的管理软件查看光纤适配器的wwn号码,具体如下:qlogic:sansurferemulex:hbanyware二、suse linux 9查看 /proc/scsi/qla2xxx/* ,并以 adapter-por…

”二柱子“个人项目

”二柱子“个人项目 关于二柱子的个人项目,据说……是这么发生的…… 二柱子因为懒(,,• ₃ •,,),要给他上小学的儿子编写个能够出小学四则运算题目的程序。老师上课的时候又添加了条件: 1、打印至少30道题 2、除了整数之外,还要…

phpstorm9 增加对.vue的支持

1、安装vue.js插件 2、设置javascript version为ECMAScript 6 3、 <script type"text/ecmascript-6"> </script>转载于:https://www.cnblogs.com/lobtao/articles/6044378.html

Eclipse中的集成Git插件删除线上远程分支

Eclipse 的忠实党,在使用Git 多人协作以分支的形式开发应用时分支合并到主干后往往再没什么用(我的做法是保留一两周再干掉),在此记录使用Eclipse的Git 插件来删除无用的分支。 操作步骤: 项目右键 — Team — Remote — Push — Next — Finesh 1,下拉框选择你要删除的远程分支…

mysql 查询系统_使用select和show命令查看mysql数据库系统信息

(1).select显示当前日期和时间mysql> select now();---------------------| now() |---------------------| 2019-06-05 13:46:20 |---------------------1 row in set (0.00 sec)显示当前日期mysql> select curdate();------------| curdate() |------------| 2019-06-0…

从MongoDB GridFS流式传输文件

不久前&#xff0c;我在Twitter上发布了自己的最新作品&#xff0c;即从MongoDB GridFS传输文件进行下载&#xff08;而不是将整个文件存储到内存中然后提供服务&#xff09;&#xff0c;这是我取得的一个小胜利。 我答应就此事写博客&#xff0c;但不幸的是&#xff0c;我的特…

0. 洗好虾和锅 1. 放水放老姜&#xff0c;烧开&#xff0c;放盐 2. 放入虾&#xff0c;沸腾后&#xff0c;尝咸淡 3. 放香葱&#xff0c;乘起来转载于:https://www.cnblogs.com/gary-tao/p/5248139.html

读字库遇到坑爹的问题

转载请注明出处&#xff1a;http://blog.csdn.net/qq_26093511/article/details/53099262 最近在做一个led显示屏的项目&#xff0c; 我想显示 “常”&#xff0c;“州”&#xff0c;“大”&#xff0c;“学”这几个字&#xff0c;但是只能显示 “常” 和 “大”&#xff0c;…

如果–否则为编码风格最佳实践

下面的帖子将是一个高级花括号讨论&#xff0c;没有对与错的答案&#xff0c;只是更多的“品味”。 它是关于是否将“ else”&#xff08;以及其他关键字&#xff0c;例如“ catch”&#xff0c;“ finally”&#xff09;放在换行符上。 有些人可能会写 if (something) {doIt(…

MongoDB 去重(distinct)查询后求总数(count)

在使用MonoDB 做报表汇总经常的有去重统计总数的需求,在此总结一下实现方式: 1, 直接使用distinct 语句查询, 这种查询会将所有查询出来的数据返回给用户, 然后对查询出来的结果集求总数(耗内存,耗时一些) var len db.student.distinct("name",{"age" :…

adobe premiere pro cc2015.0已停止工作 解决办法

adobe premiere pro cc2015.0已停止工作 一直报错 解决办法就是&#xff1a; 删除【我的电脑】- 【我的文档】下的 Adobe 下的Premiere Pro文件夹 现象就是怎么重新安装都不管用Premiere 参考路径 &#xff1a;C:\Users\xxx\Documents\Adobe\Premiere Pro 转载于:https://…

java mysql 语句解析器_几种基于Java的SQL解析工具的比较与调用

1、sqlparserhttp://www.sqlparser.com/优点&#xff1a;支持的数据库最多&#xff0c;除了传统数据库外还支持hive和greenplum一类比较新的数据库&#xff0c;调用比较方便&#xff0c;功能不错缺点&#xff1a;收费&#xff0c;500$起2、Apache Calcite一个构建JDBC或者ODBC访…