一,引言

  上一篇讲到我们将自己的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 部署系列:

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”

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,今天的分享到此结束。撒花,撒花!!!

三,总结

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

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

作者:Allen

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

azure git怎么使用_Azure(一)Azure Traffic Manager为我们的Web项目提供负载均衡相关推荐

  1. Azure上七层负载均衡APP Gateway

    Azure的SLB和ILB是最常用的4层负载均衡工具.但有些场景是7层的负载均衡,SLB和ILB就无能为力了. Azure上已经推出了APP Gateway的服务,就是7层负载均衡的负载均衡器. 如上 ...

  2. 【Azure DevOps系列】什么是Azure DevOps

    DevOps DevOps是一种重视"软件开发人员(Dev)"和"IT运维技术人员(Ops)"之间沟通合作的文化,它促进开发和运营团队之间的协作,以自动化和可重 ...

  3. azure 和 aws比较_AWS,Azure和Google Cloud Backup解决方案比较

    azure 和 aws比较 Cloud backup is a form of cloud storage where data is stored and then retrieved from d ...

  4. Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  5. Windows Azure Platform Introduction (9) 申请Windows Azure 账户

    <Windows Azure Platform 系列文章目录> Update:2017年12月27日,更新了最新的申请海外Azure账户的流程: Windows Azure Platfor ...

  6. [AWS vs Azure] 云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析

    云计算里AWS和Azure的探究(5) --EC2和Azure VM磁盘性能分析 在虚拟机创建完成之后,CPU和内存的配置等等基本上是一目了然的.如果不考虑显卡性能,一台机器最重要的性能瓶颈就是硬盘. ...

  7. Windows Azure 将正式更名为 Microsoft Azure

    微软的公共云平台在2014年4月3日正式从Windows Azure 更名为Microsoft Azure. windows azure是二级产品名, microsoft azure是一级产品名,和m ...

  8. How to: Configure an Azure SQL Database firewall using the Azure Portal

    突然想写博客 , 毕竟早上一直打不开Azure的官方文档 , 想找个中文也没有 , 原文英文链接 : How to: Configure an Azure SQL Database firewall ...

  9. 负载均衡mysql的使用_使用负载均衡集群集化 MySQL - Azure Virtual Machines | Microsoft Docs...

    使用负载均衡的集来群集化 Linux 上的 MySQL 04/14/2015 本文内容 重要 经典 VM 将于 2023 年 3 月 1 日停用. 如果从 ASM 使用 IaaS 资源,请在 2023 ...

最新文章

  1. Android Settings开发之修改
  2. html怎么设置z值,css z-index属性怎么用
  3. html桌面刷新,桌面不能自动刷新怎么办
  4. 关于centos 7 中service iptables save 指令使用失败的结局方案
  5. 狂人日记学习 之一 CSS布局的目的
  6. 语言做一个自动售货机软件_软件开发手机app系统软件高端定制做一个app软件要多少钱...
  7. 学生信息管理系统c 语言程序设计报告,C语言程序设计报告(学生信息管理系统)[1].txt...
  8. 英国国家网络安全中心:速修复严重的 MobileIron RCE 漏洞 (CVE-2020-15505)
  9. angularjs源码笔记(4)--scope
  10. [转]何为C10K问题
  11. Demo(3月28日)
  12. 入门OJ 1203: 酒鬼
  13. Unity InControl插件 按键映射对照表
  14. KUKA机器人视觉1
  15. 人脸识别接口_人脸识别云服务
  16. 计算机启动后无法进入系统怎么办,开机进不了windows系统怎么办
  17. 集成电路只有丝印如何识别引脚顺序
  18. 文章选题立意新颖的一个简单妙招
  19. 佐助题库1000:1+2+3+N
  20. Linux ubuntu 安装字体

热门文章

  1. mysql存储引擎使用教程_mysql教程:如何写MySQL存储引擎
  2. php获得昨天零时的时间戳,php 获取时间今天明天昨天时间戳
  3. jquery css事件编程 尺寸设置
  4. flex 学习篇 ---- 导航类容器
  5. 给你的博客换个装-园子换装指南
  6. z-index失效的情况
  7. CSS布局(五) 网页布局方式
  8. cf1206解题报告
  9. viewController的生命周期
  10. 一天一道算法题--6.15--卡特兰数