实现跨云应用——基于DNS的负载均衡
“公有云可以作为传统IT资源的延展,能帮助客户应对不断变化的需求”——这是我们在向客户介绍公有云产品时经常说的一句话。我们来看一个具体的需求:
某客户有一个web站点,部署在自有的数据中心(on-premises),在某些未计划高峰时期(假设是促销季),现有数据中心的基础设施资源不足以支撑突增的访问量。在这种情况下,公有云如何帮助客户拓展本地数据中心的处理能力从而满足峰值业务需求?
这个嘛,easy,客户只要将现有的web站点迁移到公有云上可以啦,什么横向扩展、按需付费、冗余存储等一大堆“云特性”就都齐全了,轻松搞定客户需求。然后,客户问了这样一个问题:应用(Web站点)都迁移到公有云上去了,我们现有的数据中心咋办?关闭?闲置?这是我们赖以生存的核心应用,都“飘在云端”总感觉有些不踏实呀...
看起来本来顺理成章的故事变得充满变数,其实这种情况是完全合理的:
- 因为迁移到公有云而废弃或者闲置现有的基础设施,而且还要做大规模的应用迁移(以及围绕应用迁移而产生的一系列工作量和成本),这对客户而言是无法接受的。使用云计算到底是省钱还是更费钱?是提升工作效率还是更折腾?
- 因为法律、合规等因素,客户不可能将所有的应用和数据都搬到到公有云上。但是客户也的确存在使用公有云的需求。例如:医院不可能把所有的病人数据和诊疗数据都保存到公有云上,但是可以通过公有云来提供检查报告/检验结果查询或者是预约挂号服务;企业不会将财务数据保存在公有云上,但是可以通过公有云提供对账、报表或者查询服务。
- 尽管公有云的安全与合规程度远高于某些客户自有的IT基础设施,但信任并非是短期内就可以建立起来的。就像我们完全有理由认为把钱存到银行也不是百分百安全一样——银行倒闭了咋办?
针对上述问题,我们可以使用“DNS负载均衡”来解决!
现在的DNS服务也不再是傻傻的只管将域名解析为IP地址了。很多提供域名相关服务的供应商都推出了智能DNS服务。与传统的DNS解析服务相比,智能DNS服务增加了以下功能:
- DNS权重负载均衡:默认的DNS负载均衡是轮询,即DNS服务器会平均的将请求分发到每个A记录。这样虽然实现了最简单的负载均衡,但是用户无法控制负载分发策略。DNS权重负载均衡就是在默认的DNS负载均衡机制上加入了权重值,用户可以通过权重值来设置分发到每个节点(A记录)上的请求数量,以此实现“能者多劳”——处理能力强的节点多承载一些负载。
- 来源智能解析:根据客户请求的来源(所在位置或者接入线路),返回对应的解析值(IP地址)。例如:用户将一个应用分别部署在中国和美国,在域名解析服务中给同一个域名设置2条不同的A记录,分别对应到中国和美国的应用地址(公网IP地址)。这样就能实现中国客户访问部署在中国的应用,外国客户访问部署在美国的应用,所有用户均使用相同的域名来访问应用。
国内外提供智能域名解析服务的厂商有:DNSPod,CloudXNS,万网,Akamai等。用户也可以选择使用F5的软硬件混合方案搭建自己的智能DNS解析服务。
万网的来源智能解析

DNSPod的DNS权重设置

除了上述智能DNS解析服务,Microsoft Azure和AWS也提供了类似的服务。在Microsoft Azure中,智能DNS解析服务是Traffic Manager Profile,注意不是Traffic Manager。Traffic Manager只能支持部署在Windows Azure上的应用。而Traffice Manager Profile可以支持外部的endpoint,即:可以在Microsoft Azure和本地数据中心之间进行DNS负载均衡,支持性能,权重和优先级3种负载分发算法。


不过在endpoint区域选择中,是没有中国大陆的。部署在中国的大陆的应用只能选择东南亚或者东亚。

另外,Traffic Manager Profile目前只在国际版的Microsoft Azure上提供,中国版的Windows Azure只有Traffic Manager。
在AWS国际版上,Route 53即智能DNS解析服务,与Microsoft Azure的Traffic Manager Profile相比,Route 53的区域划分更细致,而且支持中国大陆(CN)。AWS中国版目前还没有提供Route 53功能。

借助DNS负载均衡,我们就可以轻松实现一个混合云应用部署方案,让客户切实体验到云的优势。
诚祝:新年快乐!2016腾云而跃,一帆风顺,万事如意!
实现跨云应用——基于DNS的负载均衡的更多相关文章
- 实现基于DNS的负载均衡
转自:http://blog.sina.com.cn/s/blog_4e424e2101000c3g.html 如果你有一个很受欢迎的Web站点,你会发现当请求的连接数增加时,服务器的响应延时也会随之 ...
- 基于Docker的负载均衡和服务发现
应用的容器化和微服务化带来的问题 在缺省网络模型中,容器每次重启后,IP会发生变动,在一个大的分布式系统保证IP地址不变是比较复杂的事情 IP频繁发生变动,动态应用部署无法预知容器的IP地址,clie ...
- DNS全局负载均衡(GSLB)基本原理
原理 DNS全局负载均衡通过智能DNS解析来实现,通常在不同的地区设立多个数据中心,每个数据中心又使用多个运营商的线路.目前很多DNS服务商都提供了智能DNS服务,智能DNS通常是利用各运营商分省IP ...
- 实现基于Haproxy+Keepalived负载均衡高可用架构
1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...
- 使用nginx sticky实现基于cookie的负载均衡
在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端 ...
- Nginx基于TCP的负载均衡的配置例子
原文:https://blog.csdn.net/bigtree_3721/article/details/72833955 nginx-1.9.0 已发布,该版本增加了 stream 模块用于一般的 ...
- 使用nginx sticky实现基于cookie的负载均衡【转】
在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端 ...
- Linux的DNS实现负载均衡及泛域名部署
DNS负载均衡技术的实现原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到 ...
- Azure Load Balancer(二) 基于内部的负载均衡来转发为访问请求
一,引言 上一节,我们使用 Azure Load Balancer 类型为外部的,来转发我们的 Web 服务.今天我们看看另一种类型为 “Internal” 的 Azure Load Balancer ...
随机推荐
- JSON.NET 使用技巧
1. 序列化相关技巧 通过特性忽略某些属性 有时候我们会有这样的需求,我们只需要序列化实体类中的一部分属性,这时候我们可以通过声明忽略掉一些我们不需要序列化的属性,有两种方式可以使用么达到这个目标: ...
- bootstrap字体图标在谷歌显示正常,在火狐显示异常的问题
bootstrap字体图标的使用 现在有很多的网站支持字体图标,我所知道的有bootstrap,fontawesome,iconmoon,等等,可能还有其他我并不知道 bootstrap只要你的文件夹 ...
- Git是个好工具
Git是分布式版本控制系统,我们常用的版本控制工具还有SVN.这里就得区分下什么是分布式版本控制系统,什么是集中化的版本控制系统. 集中化的版本控制系统 集中化的版本控制系统( Centralized ...
- python之socket开发
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...
- iOS 代理协议
代理,又称委托代理(delegate),是iOS中常用的设计一种模式.顾名思义,它是把某个对象要做的事情委托给别的对象去做.那么别的对象就是这个对象的代理,代替它来打理要做的事.反映到程序中, 首先要 ...
- SharePoint Error - An unrecognized HTTP response was received when attempting to crawl this item
SharePoint 2013爬网报错 An unrecognized HTTP response was received when attempting to crawl this item. V ...
- ArcEngine中合并断开的线要素(根据几何判断)
在上一篇ArcEngine环境下合并断开的线要素(根据属性)随笔中介绍了如何通过shp文件属性表中相同的属性字段进行线要素的合并.今天刚把通过几何条件判断的方式连接断开的线要素的ArcGIS 插件完成 ...
- Java虚拟机JVM学习01 流程概述
Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...
- Asp.net中GridView使用详解(引)
GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠标移到Gr ...
- iOS 多线程 浅述
什么是进程? 进程是指在系统中正在运行的一个应用程序. 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 什么是线程? 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程 ...