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,一经查实,立即删除!

相关文章

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

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

javascript数据结构-栈

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

”二柱子“个人项目

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

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

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

从MongoDB GridFS流式传输文件

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

Css Sprites 多张图片整合在一张图片上

CSS Sprites原理: CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数…

无需复杂插件即可从Eclipse启动和调试Tomcat

像Eclipse这样的现代IDE提供了各种插件来简化Web开发。 但是,我相信将Tomcat作为“常规” Java应用程序启动仍然可以提供最佳的调试体验。 大多数情况下,这是因为这些工具将Tomcat或任何其他servlet容器作为外部进程启动,然后在其上附加一个远…

flutter 国际化_Flutter 开发实战资源推荐

开工第一天,来点轻松的资源推荐。这是一篇实战类资源推荐,其实Flutter的入门资料官方已经做得很好了,如果你是零基础,还是建议先啃一遍官方的教程,然后再看以下实战资源,相信在你看官方课程中涉及到的一些疑…

JSF和“立即”属性–命令组件

JSF中的即时属性通常被误解。 如果您不相信我&#xff0c;请查看Stack Overflow 。 造成这种混乱的部分原因可能是输入&#xff08;即<h&#xff1a;inputText />&#xff09;和命令&#xff08;即<h&#xff1a;commandButton />&#xff09;组件都立即可用&#…

通过joystick遥感和按键控制机器人--11

原创博客&#xff1a;转载请表明出处&#xff1a;http://www.cnblogs.com/zxouxuewei/ 1.首先安装joystick遥控器驱动&#xff1a; sudo apt-get install ros-indigo-joystick-drivers ros-indigo-turtlebot-teleop 2.运行tulterbot机器人&#xff1a; roslaunch rbx1_bringup …

Nginx 实现网站 http、https 配置

在 nginx conf 目录下新建 ssl 目录&#xff0c;将申请的 ssl证书文件拷贝到此处&#xff1a; 修改 nginx 配置文件使支持 https&#xff0c;修改如下&#xff1a; server {listen 80;listen 443 ssl;ssl_certificate ssl/cert-xuexiyuan.cn.crt;ssl_certificat…

实用垃圾收集,第1部分–简介

这是我打算写的一系列博客文章的第一部分&#xff0c;其目的是解释垃圾回收在现实世界中的工作方式&#xff08;特别是在JVM中 &#xff09;。 我将介绍一些我认为对于充分理解垃圾收集对于实际目的是必要的理论&#xff0c;但是将其降至最低。 其动机是在各种情况下&#xff0…

mysql 导出 没有函数_没有MYSQL FILE函数的CSV导出

构建最佳CSV。你可以按照以下方式做。$filename data.csv;$csv_terminated "\n";$csv_separator ",";$csv_enclosed ";$csv_escaped "\\";$results array(1,2,3);// value$schema_insert ;$header array(a,b,c);// headerfor ($i 0…

html回复评论_3天内看了3000多篇《哈佛商业评论》,挑出来最有用的分享下

上次分享过一个工具&#xff1a;一键批量下载公众号历史消息&#xff08;后台回复001获取&#xff09;。我把《哈佛商业评论》的历史文章&#xff0c;全部爬了下来。该杂志被全球商业誉为“管理圣经”。我最感兴趣的一部分是&#xff1a;个人管理。先搜索关键词&#xff1a;&qu…

codeforces 732/D 二分

给出考试时间和考试需要准备的时间&#xff0c;问最早考完所有科目的时间 二分答案 NlogN 二分抄神犇的写法 感觉挺舒服的嘻嘻嘻 1 #include<bits/stdc.h>2 using namespace std;3 const int MAXN1e55;4 int N,M,d[MAXN],w[MAXN],cnt[MAXN];5 void read(int &x){6 …

网页版的svn怎样同步代码_学会使用Hdlbits网页版Verilog代码仿真验证平台

大家推荐一款网页版的 Verilog代码编辑仿真验证平台&#xff0c;这个平台是国外的一家开源FPGA学习网站&#xff0c;通过“https://hdlbits.01xz.net/wiki/Main_Page”地址链接进入网页&#xff0c;在该网页上可以进行Verilog代码的编写、综合&#xff0c;而且最后还能够仿真出…

Python的下载及安装

1、官网下载地址&#xff1a;https://www.python.org/downloads/ 2、python设置环境变量&#xff1a; 在系统变量里添加Python的安装位置 3、在cmd里输入python里即可转载于:https://www.cnblogs.com/fun0623/p/5257573.html

使用Apache ActiveMQ的JMS开发基础

去年是我尝试JMS的时候。 背后的想法和概念让我有些困惑&#xff0c;但是当我知道它的用途后&#xff0c;我很快就掌握了它。 在本文中&#xff0c;我将展示使用Apache ActiveMQ作为后端使用Java开发简单的生产者/消费者的基础。 让我们首先从概念开始&#xff0c;这是一个简单…

PLSQL 经常自动断开失去连接的解决过程

问题背景&#xff1a; 情况是这样的&#xff0c;很多开发同事的PLSQL上班时间开着8个小时&#xff0c;有时候他们出去抽烟后或者中午吃完饭&#xff0c;回来在PLSQL上面执行就报错无响应&#xff0c;然后卡住了半天动弹不了&#xff0c;非得重新登录plsql才生效&#xff0c;我猜…

使用Cobertura,JUnit,HSQLDB,JPA涵盖您的测试

你好&#xff01;你好吗&#xff1f; 今天让我们谈谈一个非常有用的工具&#xff0c;名为“ Cobertura”。 该框架与我们在另一篇文章中看到的Emma框架具有相同的功能。 Cobertura和Emma之间的主要区别在于Cobertura显示带有图形的简历页面。 如果要查看有关该主题的其他主题…