热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用MicrosoftAzureTrafficManager保证业务的可用性

最近携程事件导致携程网站和APP停止服务长达将近9个小时。支付宝因为光缆被挖断导致部分用户服务不可用,艺龙遭到攻击导致网站崩溃,等等。企业中的业务安全和可用性又浮现了出来,回过头来看,

  最近携程事件导致携程网站和APP停止服务长达将近9个小时。支付宝因为光缆被挖断导致部分用户服务不可用,艺龙遭到攻击导致网站崩溃,等等。企业中的业务安全和可用性又浮现了出来,回过头来看,有哪些现有的技术能够避免此类状况,这篇文档我们先聊一聊如何利用Microsoft Azure Traffic Manager让你的应用保持高可用状态

  先来看下Microsoft Azure Traffic Manager 到底是什么东东。

  使用 Microsoft Azure Traffic Manager 可以控制向指定的终结点(可能包括 Azure 云服务、网站和其他终结点)分配用户流量。Traffic Manager 的工作原理是将智能策略引擎应用到对 Internet 资源域名执行的域名系统 (DNS) 查询。Azure 云服务或网站可以在世界各地不同的数据中心内运行。

说的简单易懂点Traffic Manager就是一个智能的DNS解析。

  能帮助我们做什么?

  • 提高关键应用程序的可用性,当你的应用程序的某个节点出问题的时候,Traffic Manager可以通过智能的监视你的终结点(云服务、网站和其他角色)的服务状态,然后把流量迁移到正常的终结点。

  • 提高应用程序的响应性,当你的应用程序客户遍布全国甚至是世界各地时,如何能够把流量引到离他们最近的数据中心,已达到最快的响应速度。这就是Traffic Manager需要做的事情。

  • 大型复杂的流量分配,如果你有像淘宝、京东等这类网站时,你需要复杂的流量分配规则来满足用户的快速访问需求,使用嵌套的 Traffic Manager 配置文件(在其中的一个 Traffic Manager 配置文件可以将另一个 Traffic Manager 配置文件作为终结点),可以创建配置来优化更大、更复杂部署的性能和分布。

clip_image002

工作原理是啥?

clip_image004

我来根据这张图来解释下:

1. 首先客户端需要知道IP地址才能去访问应用,然后就发送域名解析请求到公网域名www.contoso.com(就是在公网域名服务商注册的域名)。

2. 请求发到公网DNS上进行解析,然后公网DNS根据你的配置的CNAME记录把请求发给Traffic Manager。

3. Traffic Manager会根据自己的配置文件(性能、循环法、故障转移),确定最佳终结点,选择好终结点后,把终结点的IP信息返回给客户端。

4. 客户端根据解析到的IP地址信息,直接发送请求道终结点。

怎么配置Traffic Manager?

Traffic Manager包含三种负载平衡方法:

  • 故障转移:如果终结点位于相同或不同的 Azure 数据中心(在管理门户中称为区域)内,并且你希望对所有流量使用一个主终结点,但是希望在主终结点或备用终结点不可用时提供备份,请选择“故障转移”。

  • 循环:如果要将负载分配到同一数据中心内的一组终结点或者分配到不同的数据中心,请选择“循环”。

  • 性能:如果终结点位于不同的地理位置,并且你希望请求客户端使用“最靠近的”终结点(因为延迟最低),请选择“性能”。

三个不同的负载平衡方法,三个不同的选择,下面我主要就故障转移场景来演练,如何通过Powershell创建Traffic Manager,并进行基本的配置。

创建故障转移的负载平衡器

New-AzureTrafficManagerProfile -Name "cloudvip" -DomainName "cloudvip.trafficmanager.net" -LoadBalancingMethod "Failover" -Ttl 30 -MonitorProtocol "Http" -MonitorPort 80 -MonitorRelativePath "/"

表示我要创建一个cloudvip的Profile,域名为cloudvip.trafficmanager.net,负载平衡方法是故障转移,监视内容:协议http 端口 80 默认路径

clip_image006

我们进入门户可以看到已经创建好该Traffic Manager。

clip_image008

加入终结点

这时我们的Traffic Manager并没有包含任何终结点,下面我开始通过Powershell把终结点加进来。

1.$TrafficManagerProfile = Get-AzureTrafficManagerProfile -Name "cloudvip"2.Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog01.cloudapp.net" -Status "Enabled" -Type "CloudService" | Set-AzureTrafficManagerProfile

第一个命令是使用Get-AzureTrafficManagerProfile得到cloudvip的参数然后存放在TrafficManagerProfile变量中。

第二个命令是添加域名为blog01.cloudapp.net的云服务,然后通过Set-AzureTrafficManagerProfile变更到azure中。

clip_image010

带有权重参数加入终结点

使用同样方法添加另外一个终结点,这次加上权重的参数。

Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog02.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 2 | Set-AzureTrafficManagerProfile

clip_image012

查看终结点详细信息

$TrafficManagerProfile.Endpoints | Format-List

clip_image014

使用PowerShell修改权重

可以使用Set-AzureTrafficManagerEndpoint重新设置终结点,我来演示把blog01节点的权重改成3.

Set-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog01.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 3 | Set-AzureTrafficManagerProfile

clip_image016

查看结果

clip_image018

最后我们在客户端进行测试

clip_image019

clip_image020

clip_image021

这时我们可以看到Traffic Manager把流量引入到blog01上了,这时我如果想把节点2(blog02)作为主节点,要怎么设置呢?你可以运行一下命令

1. $Profile = Get-AzureTrafficManagerProfile -Name "MyProfile"2. $Profile.Endpoints[0],$Profile.Endpoints[1] = $Profile.Endpoints[1],$Profile.Endpoints[0]3. Set-AzureTrafficManagerProfile -TrafficManagerProfile $PROFILE

clip_image023

clip_image025

从结果中我们可以看到,节点2变成了主节点,我们再来ping一下试试。

clip_image026

现在是节点2在提供服务。

总结:从上面的示例中,我们可以看到,一个网站设计成一个高可用架构,如果一个站点遭到毁灭性的攻击和破坏,我们可以快速的切换到备用站点,以提供服务。从而避免类似携程的事件发生。

本文出自 “挥墨的书童” 博客,转载请与作者联系!


推荐阅读
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • angular.element使用方法及总结
    2019独角兽企业重金招聘Python工程师标准在线查询:http:each.sinaapp.comangularapielement.html使用方法 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 第8章 使用外部和内部链接
    8.1使用web地址LearnAboutafricanelephants. ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
author-avatar
mobiledu2502885307
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有