http://virtualadc.blog.51cto.com/3027116/875622

前言

随着web应用的不断发展,客户对于业务的稳定性、可靠性等也提出更高的要求,已不再局限于IDC内部的服务器虚拟化。很多人都清楚,国内各大运营商之间数据互访的效果不尽如意,而作为使用者,特别是要求业务及时响应的企业用户,一方面要考虑异地IDC的数据容灾,另一方面要实现就近性访问,提高客户访问体验,这时,全局负载均衡GSLB是一个很好的解决方案。

GSLB的实现原理

大部分人只知道DNS的作用,就是帮助客户端去“记住”每个在互联网发布的服务IP,毕竟有关联性的单词比32位的数字更方便记忆。GSLB的作用也类似于DNS,可以把GSLB设备当作一台DNS server,所有设置在这台设备上的域名都能解析出A记录(服务IP)。但比普通服务器多了一个重要的功能,就是“智能”。在做出解析之前,GSLB设备会根据请求包的“出处”,各A记录的响应效率,后台服务器的可用性等进行分析判断,所以在很多时候,人们将GSLB也称为“iDNS”,即智能DNS。

关于GSLB的解析过程,大家可去搜索一下之前也有文章提及,此处不再赘述。

GSLB的部署

需要实现智能解析,就需要将域名的解析权转交给GSLB设备,更具DNS的递归查询原理,只要域名的解析请求能最终到达GSLB设备上,GSLB设备就能作出合适的响应。这里看看DNS服务器上的解析配置:

a10test.com  NS  dns1.chinadns.com

a10test.com  NS  dns2.chinadns.com

www.a10test.com  A  222.222.222.222

委派授权解析有两种常用方式,以适应不同的DNS服务器

1)NS直接委派

把原A纪录删掉

a10test.com  NS  dns1.chinadns.com

a10test.com  NS  dns2.chinadns.com

dns1.chinadns.com  A  GSLB设备ISP1接口dns侦听地址

dns2.chinadns.com  A  GSLB设备ISP2接口dns侦听地址

2)别名方式委派

a10test.com  NS  dns1.chinadns.com

a10test.com  NS  dns2.chinadns.com

www. a10test.com  CNAME  www.ax. a10test.com.

ax. a10test.com  NS  dns1. ax. a10test.com

ax. a10test.com  NS  dns2. ax. a10test.com m

dns1. ax. a10test.com  A  GSLB设备ISP1接口dns侦听地址

dns2. ax. a10test.com   A  GSLB设备ISP2接口dns侦听地址

以下是万网上的图例

采用NS直接委派的方式最方便,但会将整个授权域转交给GSLB设备,如果GSLB设备不能完整支持DNS server的所有记录,如MX/SOA等,就会有问题,而且DNS切换需要花费一天左右的时间才能基本完成,业务的断网时间是必须考虑到的。而别名方式影响的是单个域名,影响面比较小,但也要求原域名维护商能够提供别名的更改权限(有些域名维护商只提供A记录和NS记录的更改)。

完成了域名的解析委派后,在GSLB设备上做上相应的域名解析配置就行。需要注意的是,如果是直接委派,域名与互联网上访问的域名相同:

gslb zone a10test.com

service http www

如果是别名方式,域名则是别名后的子域域名。

gslb zone ax.a10test.com

service http www

要验证GSLB设备能否实现解析,可先将客户端的nslookup server设置成GSLB的DNS侦听地址,只要有记录返回便表明设备的解析功能是正常的。然后就是等待互联网上的各级DNS服务器的记录更新,这个过程是相对漫长的,需要做的是耐心等待。。。

nginx+web服务器 可以实现负载均衡,但是一台nginx也是有限的,如果并非量高的话,在他的上层如何实现负载均衡。       如果是DNS 或者 CDN的话,建多个机房,势必有多个机房数据同步的问题。       有什么这方面的好的资料吗?
 
这方面的资料,基本都是一块一块不完整的。我大概跟你说一个基本架构:
1、DNS服务器,如果资金充足的话,建议使用BGP机房,2-3台DNS服务器均衡,通常使用bind软件。如果资金紧的话,可以购买专业的dns服务,比如国内的dnspod。
2、CDN服务器,一开始如果想省事,可以买专业公司的服务,如chinacache,但随着发展成本会越来越高。自建的话,可能分别搭建,放电信、联通、移动等不同机房的服务器,通过dns做动态解析。超大网站的话,可以用Squid,普通中至大型用nginx,内部玩玩用varnish。
3、前端均衡,资金充足的话,可以使用硬件设备,几十万一台。自已有技术队伍的话,就用nginx/haproxy+keepalived等自已组建前端。均衡的方式都比较灵活,随机、权重、ip、url都有。
4、同步的问题要看同步什么东西,普通的可以实时文件同步。但数据库的话,要看具体类型选择同步方式了。
5、后端的应用服务器和数据库集群,要看流量规划了。
追问:
好像还没有具体的说,如果多台 nginx 如何实现负载均衡。  看你说的意思,是不是就是用DNS和CDN建立多套程序每个程序 使用nginx    做反向代理。   假如考虑到成本等其他原因,不想建立多套系统,就是一个机房或者私有云里面,建立这套系统,实现多个nginx之间的负载均衡,有什么好的办法?
追答:
多台nginx实现均衡,有几种方法:
1、每台nginx都有公网地址,在域名处设置同个域名多个指向,最简单实现轮洵。但故障切负会慢一点。
2、一台公网nginx通过upstream功能,轮洵、ip、url多方式分发到内网多台nginx。但公网的nginx如果down机的话,内网全段。
3、一对公网nginx加三个公网ip,通过keepalive实现高可用,再upstream到内网。
4、一台硬件均衡服务器在前端,再通过硬件均衡到内容的其它服务器。 你所说的那个假如,可以通过 2 、3、 4的方法实现。

全局负载均衡GSLB之“部署篇”的更多相关文章

  1. DNS全局负载均衡(GSLB)基本原理

    原理 DNS全局负载均衡通过智能DNS解析来实现,通常在不同的地区设立多个数据中心,每个数据中心又使用多个运营商的线路.目前很多DNS服务商都提供了智能DNS服务,智能DNS通常是利用各运营商分省IP ...

  2. CDN技术之--全局负载均衡(GSLB)

    负载均衡就是智能调度全局负载均衡(GSLB)的负载均衡主要是在多个节点之间进行均衡,其结果可能直接终结负载均衡过程,也可能将用户访问交付下一层次的(区域或本地)负载均衡系统进行处理.GSLB最通用的是 ...

  3. 全局负载均衡与CDN内容分发

    CDN简介 CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发. ...

  4. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

    geo指令使用ngx_http_geo_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module.ngx_http_geo_modu ...

  5. (转)nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

    nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录 原文:http://www.cnblogs.com/kevingrace/p/6165572.html Nginx的geo模块 ...

  6. Nginx通过geo模式实现限速白名单和全局负载均衡 - 运维笔记

    Nginx的geo模块不仅可以有限速白名单的作用,还可以做全局负载均衡,可以要根据客户端ip访问到不同的server.比如,可以将电信的用户访问定向到电信服务器,网通的用户重 定向到网通服务器”,从而 ...

  7. Nginx+Tomcat7+Mencached负载均衡集群部署笔记

    Nginx+Tomcat+Memcached负载均衡集群服务搭建 操作系统:CentOS6.5 本文档主要解说,怎样在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群s ...

  8. ActiveMQ实现负载均衡+高可用部署方案

    一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现 2.activemq的特 ...

  9. ActiveMQ实现负载均衡+高可用部署方案(转)

    本文转自:http://www.open-open.com/lib/view/open1400126457817.html%20 一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最 ...

随机推荐

  1. hdoj 2031 进制转换

    进制转换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. .NET代码编写规范 整理

    .NET代码编写规范 整理 .NET代码编写规范 - [ASP.NET] 2009-02-26 | Tag: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://lensp ...

  3. 如何对SQL Server 2005进行设置以允许远程连接(转载)

    如何对SQL Server 2005进行设置以允许远程连接(转载) 在尝试从远程计算机连接到 Microsoft SQL Server 2005 实例时,可能会接收到错误消息.在使用任何程序连接到 S ...

  4. SQLite使用教程11 表达式

    SQLite 表达式 表达式是一个或多个值.运算符和计算值的SQL函数的组合. SQL 表达式与公式类似,都写在查询语言中.您还可以使用特定的数据集来查询数据库. 语法 假设 SELECT 语句的基本 ...

  5. cocos2d-x Animation

    转自:http://codingnow.cn/cocos2d-x/810.html 这一篇来学习怎么使用cocos2d-x引擎播放帧动画,就是把一帧一帧的图片像电影那样显示出来.1. 首先来了解一下相 ...

  6. 【IOS界面布局】横竖屏切换和控件自适应(推荐)

    [IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改 ...

  7. 计算机思维or人的思维

    计算机领域就会有计算机领域的一些特性和一些思维方式,或者说有他自己的一些问题,须要用相应的思维方式来进行理解它,从而更好的驾驭他.有些时候遇到的一些问题,自己想却想不明确,也是由于我们没有把自己当做一 ...

  8. jquery 源码分析学习地址

    http://www.ccvita.com/121.htmljQuery工作原理解析以及源代码示例http://www.cnblogs.com/haogj/archive/2010/04/19/171 ...

  9. js hash字符串转成json

    var a='account.type=1&account.id=&account.dependFlag=0&account.card.companyId=1&acco ...

  10. 信号之kill和raise函数

    kill函数将信号发送给进程或进程组.raise函数则允许进程向自身发送信号. #include <signal.h> int kill(pid_t pid, int signo); in ...