全局负载均衡GSLB之“部署篇”

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

前言nginx

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

 

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.comui

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