MS Ignite 2017 网络服务新功能之高可用-TrafficManager篇

上一篇给大家介绍了AZURE的下一代负载均衡,今天跟大家聊一聊Traffic Manager(智能DNS)。现在很多AZURE的用户还在使用单站点服务(资源全部在Azure的一个Region),对于理想国度的完美应用架构,从灾备以及应用性能的角度出发,多站点部署必不可少的。如何做到异地的灾备,如何做到用户的近源覆盖达成最优响应延迟?Traffic Manager(智能DNS)其实是必不可少的一环,今天我们就来看一看Traffic Manager的更新。

========阅前必读========

通常我们无论通过桌面端还是移动端访问一个互联网服务时候,访问流程是什么样子的呢?

1. 获取服务站点域名,如想访问微软AZURE服务,我们先要获得访问站点域名www.azure.cn

2. 客户端对站点域名进行解析,客户端发起DNS请求,请求域名结果(域名结果可能是A记录,CNMAE记录,NS记录等),如步骤1的例子,客户端发起DNS请求解析www.azure.cn的IP地址,如下面的dig操作中,我们看到,先获得了一个CNAME记录,然后通过CNMAE记录进一步解析最终获得了A记录(IP地址:61.200.88.84)

:~$ dig www.azure.cn

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.azure.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10792
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;www.azure.cn. IN A

;; ANSWER SECTION:
www.azure.cn. 29 IN CNAME www.azure.cn.mschcdn.com.
www.azure.cn.mschcdn.com. 522 IN CNAME um4thtubffnsqr.wscloudcdn.com.
um4thtubffnsqr.wscloudcdn.com. 1 IN CNAME 1stcncloud.dtwscachev290.ourwebcdn.com.
1stcncloud.dtwscachev290.ourwebcdn.com. 59 IN A 61.200.88.84

;; Query time: 314 msec
;; SERVER: 10.222.220.5#53(10.222.220.5)
;; WHEN: Mon Nov 06 15:57:38 DST 2017
;; MSG SIZE rcvd: 184

3. 客户端向步骤2获得站点IP地址(61.200.88.84)发起连接,从而获得服务。

通过上述基本的一个业务访问流程,童鞋们应该会发现,域名是个神奇的东西,相对固定IP地址它有更好的灵活性。如果一个业务绑定在静态IP地址上,交付给用户的访问地址直接给成IP地址的话,当该地址不可访问时,整个业务将无法访问。通过域名发布业务,我们可以做到灵活的流量调度,从高可用角度可以在某个业务IP不可用的时候将业务地址切换到其他IP地址,从性能角度可以通过智能调度将用户请求引导到近源的站点。

=========Traffic Manager(智能DNS)智能调度算法介绍============

1. 基于优先级的调度算法:当应用采用多站点部署时,可采用对不同站点进行优先级配置,实现按优先级访问,当高优先级站点不可访问时,访问切换到低优先级站点。简单理解为主备模式

2. 基于权重的调度算法:当应用采用多站点部署时,可采用对不同站点进行权重配置,实现按权重分配调度访问,比如有两个站点,权重按照1:3配置,则有25%的请求调度值站点1,75%的请求调度至站点2。简单理解为权重主主模式,通过该部署方法可实现如站点升级流量牵引等。

3. 基于性能的调度算法:当应用采用多站点部署时,可采用对不同站点进行基于性能访问调度,智能DNS可以基于各个地区DNS代理的延迟指标来对访问请求进行智能分配,延迟指标是一个动态变化的结果,所以该策略也会随时间变化而变化。目前DNS已经有相应扩展来支持将客户端真实IP返回给后端,虽然Azure Traffic Manager已经支持,但是目前并不是所有DNS代理有相应能力(RFC7871)。

4. 基于地域的调度算法:当应用采用多站点部署时,可以根据访问请求来源所在地进行智能调度,将访问请求分配到近源的站点,比如一个全球性站点,将用户引导到离用户最近的Azure Region内站点。

=========Traffic Manager(智能DNS)智能调度算法缺点============

基于优先级和权重的调度算法,相对来说是静态的调度算法,虽然可以满足高可用的要求,但是无法对性能进行优化。性能和地域调度算法都是动态的调度算法,可以保证高可用的同时进行性能的优化。But它们也有不足之处,性能算法基于的性能指标来源是DNS代理服务器并非客户端本身,所以准确性上是有偏差的。地域算法上是基于GeoIP客户IP所在地归属数据库来判别客户请求来源,但判断时基于的时DNS代理服务器的IP并非客户端IP,所以准确性上也有偏差。

=========Traffic Manager(智能DNS)功能优化============

对于性能调度我们上面介绍到,由于性能指标来源并非客户端本身,而是通过DNS代理服务器地址所在区域的性能指标来宏观表示对应区域客户IP的性能。如果我们能拿到客户IP真实的性能指标,那么准确性将有大幅度的提升。Traffic Manager目前增加支持 Real user measurements 功能,可以实现对于真实客户IP性能参数的采集。其通过在页面内或移动端代码中嵌入Javascript,实现客户端侧性能指标的采集,客户端在访问的同时执行Javasript将客户端侧的性能指标反馈被AZURE Traffic Manager。

=========Traffic Manager Real user measurements 演示 ==========

Step 1: 快速创建WebApp服务搭建Java Web Server

参见:https://docs.azure.cn/zh-cn/app-service/app-service-web-get-started-java

Step 2:创建Traffic Manager服务

Routing Method选择Performance,目前Real User Measurements只适用与Perfomance路由模式

Step 3: 添加Endpoint端点

类型选择Azure Endpoint(此示例中采用Azure WebApp服务快速搭建Java Web Server),Target resource type选择Step 1中创建的azure webapp

Step 4:开启Real User Measure

Step 5:将Step 4中获取的Real User Measure Java Script插入到Web页面代码Body部分中,并发布更新Web服务

Step 6:获取服务FQDN尝试访问,并查看页面源码

Step 7:查看Azure访问分布情况

Traffic Manager的另外一个更新是支持访问源分布热图,可以你帮助了解Traffic Manager流量调度情况,以及客户端分布。不足指出目前热图分布是基于DNS代理的IP分布,并非真实用户IP分布(如想了解这部分分布,可以考虑结合WebApp的Access Log通过tailmap等开源软件进行统计,后面有机会我会以tailmap为示例给大家介绍)

==================总结===================

通过上述DEMO可见,Traffic Manager新的功能更多侧重在Telemetry上面,通过精细化的数据来支撑更加有效的调度算法,从而保证客户最优的使用体验,相信后面Traffic Manager还会有更多相关的功能更新,让我们拭目以待。

==================参考资料=================

Real User Measure介绍:https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-rum-overview

Traffic View介绍:https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-traffic-view-overview

时间: 2024-08-30 02:27:30

MS Ignite 2017 网络服务新功能之高可用-TrafficManager篇的相关文章

深入解读HBase2.0新功能之高可用读Region Replica

摘要: 基于时间线一致的高可用读(Timeline-consistent High Available Reads),又称Region replica,为HBase带来了高可用读的能力.本文主要介绍region replica这个功能设计的背景,技术细节和使用方法,同时会仔细分析这个功能的优缺点并给出使用建议. 前言 基于时间线一致的高可用读(Timeline-consistent High Available Reads),又称Region replica.其实早在HBase-1.2版本的时候

keepalived实现WEB服务集群的高可用负载均衡

要求:利用keepalived实现WEB服务集群的高可用负载均衡,即在lvs_dr模型中扮演director的角色,对来自用户的请求按照一定的算法分配至后端服务器中:且keepalived服务器可实现高可用. keepalived是vrrp协议的一种实现,专门为lvs设计,以实现对lvs高可用就集群中的dirctor进行冗余以及对realserver进行健康检测.当一台主机(MASTER)出现问题后,keepalived能够将VIP自动的分配到备用的主机上(BACKUP),从而实现了自身(dir

Android官方开发文档Training系列课程中文版:连接无线设备之网络服务搜索功能

原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/index.html 引言 Android设备除了可以与服务器建立连接之外,Android无线API还允许处于同一网段下的两台设备建立连接,或者是物理距离相近的两台设备建立连接.Network Service Discovery (NSD)允许应用程序通过扫描来搜索附近可连接的设备.当然被扫描的设备也同样需要开启该服务.利用这项特性可以使应用程序拥有更强大的功

基于DevOps 微服务以及k8s的高可用架构探索与实现

现代的企业面临着一个VUCA的时代,高可用系统架构面对着诸多不确定性带来的影响和挑战,如何才能能够突破困境,使得复杂的系统仍然能保持业务的连续性.业务的弹性扩容也同时会对高可用性的架构造成影响,在实践中,我们结合微服务/K8S/DevOps这三架马车进行了微服务的容器化的实践之路. 高可用架构的挑战 在现实的复杂而又不确定性的环境下,高可用架构面临诸多挑战,都可能对系统带来巨大影响,比如: 应用程序的异常退出 操作系统的突然宕机 服务器的意外断电 运维人员人为操作失误 地震等不可抵抗因素 业务量

java版b2b2c社交电商spring cloud分布式微服务(十)高可用的服务注册中心

电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.文章 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka) 介绍了服务注册与发现,其中服务注册中心Eureka Server,是一个实例,当成千上万个服务向它注册的时候,它的负载是非常高的,这在生产环境上是不太合适的,这篇文章主要介绍怎么将Eureka Server集群化. 一.准备工作 Eureka通过运行多个实例,使其更具有高可用性.事实上,这是它默认的熟性,你需要做的就是给对等的实例一个合法的关联

设计高可用Web服务

高可用的设计可以说是web服务架构的目标,如果服务达不到高可用,万一出现故障将会对产品带来重大的负面影响.高可用的架构就是能够让服务在任何情况下都能正常响应,比如双十一的淘宝,面对激增的洪峰照样正常工作:而聚美三周年时服务器的宕机恰好是高可用的反例. 什么是高可用 可用性:在应用工作周期中可用时间的百分比 不可用:应用无法访问,服务中断应用访问非常缓慢 高可用:服务一直正常可用,快速响应 Tags SPoF:单点故障 Failover:故障转移 Disaster Recovery:灾难恢复 Lo

CentOS_6.7高可用服务Heartbeat_v3.0.4安装以及配置

CentOS_6.7高可用服务Heartbeat_v3.0.4安装以及配置 集群系统主要就2种: 高可用(High Availability)HA集群: 使用Heartbeat/keepalived等软硬件实现;也会称为"双机热备", "双机互备", "双机".  负载均衡群集(Load Balance Cluster):使用LinuxVirtual Server(LVS)/haproxy/nginx等软硬件实现; Heartbeat项目是 Li

基于Spring Cloud的微服务构建学习-3 服务治理-Spring Cloud Eureka之高可用注册中心

什么叫高可用 高可用一般指服务的冗余,一个服务挂了,可以自动切换到另一个服务上,不会影响到客户体验. 高可用注册中心 在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对于微服务如此,对于服务中心也一样. Eureka Server的设计一开始就考虑了高可用问题,在Eureka的服务治理设计中,所有节点既是服务提供方,也是服务消费方,服务注册中心也不例外.在前一篇随笔中用到过这样的配置: eureka.client.register-w

Spring Cloud构建微服务架构(六)高可用服务注册中心

在Spring Cloud系列文章的开始,我们就介绍了服务注册与发现,其中,主要演示了如何构建和启动服务注册中心Eureka Server,以及如何将服务注册到Eureka Server中,但是在之前的示例中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境,那么下面在前文的基础上,我们来看看该如何构建高可用的Eureka Server集群. 单点Eureka Server的样例: GitHub 开源中国 Eureka Server的高可用 Eureka Server除了单点运行之外,