循环复用DNS实现多服务器负载均衡
企业知名度增加,网站访问量逐渐上升,是每一个网管所盼望的。但同时应用服务器的数据流量和访问量将成倍增加,服务器将不堪重负。IXPUB技术博客j2Eg;AD5J;Bn
4p7aBT_"cw0 这时,可采用两种方式解决此问题,一是进行硬件升级,购买配置更高、性能更好的服务器,这种方法的优点是简单易行,缺点是投资大, 会造成现有资源的浪费,且下一次业务量的提升还会面临同样问题。另一种方法是采用集群技术,利用两台以上的服务器进行协同工作,在集群系统中运行的服务器并不一定是高档产品(可以是企业现有的服务器),但服务器的集群却可以提供相当高性能的不停机服务;另外,随着业务量的增大,可随时增加集群系统中运行的服务器数量。集群技术的优点是高可靠性和强大灵活的系统扩充能力。
k'P/X:~9z@)C!^*C9\0IXPUB技术博客0h?Y-lz2s两台以上的服务器进行协同工作必然涉及到负载均衡问题,目前常用的负载均衡技术主要有:NAT负载均衡、反向代理负载均衡及DNS负载。IXPUB技术博客 HX`PD9N#X
IXPUB技术博客o8dc5h*{)l|*}NAT负载均衡将一个外部IP地址映射为多个内部IP地址,对每次连接请求动态地转换为一个内部服务器的地址,将外部连接请求引到转换得到地址的那个服务器上[1]。反向代理负载均衡使用代理服务器将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的[2]。DNS负载均衡在DNS中为多个地址配置同一个名字,从而使得不同的客户访问不同的服务器来实现负载均衡。本文将详细介绍DNS负载均衡原理和技术实现。IXPUB技术博客6yfx'E&kZB,U.i
)]sKN X+k6s0 2 DNS负载均衡原理IXPUB技术博客i `b7p4e([k
]3\9FR*l3O+L,m[0 DNS负载均衡是通过循环复用实现的,如果发现主机名的多个地址资源记录,则可用它循环使用包含在查询应答中的主机资源记录。在默认情况下,DNS 服务器的服务使用循环复用对资源记录进行排序,这些资源记录是在解析为多个映射的主机名应答中返回的。该功能提供了一种非常简便的方法,用于对客户机使用 Web 服务器和其他频繁查询的多宿主计算机的负载平衡。
9j7e-o#D7popB0IXPUB技术博客4kcy T+d+G#G要使循环复用正常工作,必须首先在该区域中注册所查询名称的多个主机资源纪录,并启用DNS服务器循环复用。如果DNS服务器禁止循环复用,那么这些查询的响应顺序以应答列表中资源记录在区域中存储时的静态排序为基础。IXPUB技术博客Z,~J _H&l)v
IXPUB技术博客w"?.RM/C,}J3 四台服务器的负载均衡实例
}.YeV;M#\0IXPUB技术博客&N!rUy_,pg可提供的服务:Web、Ftp系统实现的目的:做一个较完善的负载均衡系统,以共享和高效地利用资源设备状况:五台服务器,其中四台服务器组成集群系统,IP地址分别为172.28.20.1、172.28.20.2、172.28.20.3、172.28.20.4;IXPUB技术博客?Apx _i#B
0zSl B-[_0 一台服务器作为控制管理服务器,提供DNS服务,设企业域名为www.example.com.cn。IXPUB技术博客n}L9A9t Dz^)T#z8U
IXPUB技术博客B1YAU N5Oq2Y服务器配置:集群系统服务器安装Windows 2000 sever ,须安装Internet信息服务组件;
{2U\%f0G"q%Wb0fFUY5R%\w8O0 DNS服务器安装Windows 2000 sever ,须安装DNS组件。
b[Ac)R$p0i+{U+n/t-R`:i$N0 ⑴ 分别设置各台服务器IP地址、子网掩码、网关及DNS服务器地址,调通网络。
:Ntn7T[3F0IXPUB技术博客+| [8{J`!]S.p|⑵ 设置DNS服务器IXPUB技术博客TN%H9]@
#N&L+Lo Lh y i3L0 ①在DNS中创建正向搜索的标准主要区域,实现域名IXPUB技术博客"E(x1dAvw
IXPUB技术博客 I)W_Q,r4OvDNS服务器上单击开始/程序/管理工具/DNS,打开DNS控制台。
K6l:JOBYF03h3G6ELwo QhtE0 在控制台树中,右键单击 “正向搜索区域”,单击新建区域/新建区域向导/下一步,选择区域类型为“标准主要区域”。如果不是在活动目录的域控制器上创建DNS区域,则区域类型中的“与活动目录集成的区域”选项按钮不可用;单击“下一步”。IXPUB技术博客(t%F*W1|j&T
IXPUB技术博客"e l&q_R0u输入要创建的区域名称example.com.cn,选择创建新的区域文件,文件名为example.com.cn.dns,单击下一步/完成,区域example.com.cn出现在控制台树中的“正向搜索区域”下。IXPUB技术博客 fv1Z:y_
IXPUB技术博客 TzhG}+g8g:i-W②在区域example.com.cn中注册查询名称www. example.com.cn的多个主机资源记录。IXPUB技术博客6p.L&P,_m.s9Qyr
IXPUB技术博客j!tO`(L6[在DNS控制台树中右键单击区域example.com.cn,单击新建主机,弹出“新建主机”窗口。在“名称”栏输入主机名www,在“IP地址”栏输入对应的IP地址172.28.20.1,单击“添加主机”、“确定”按钮;重复此过程,主机名仍为www, IP地址依次为172.28.20.2、172.28.20.3、172.28.20.4。单击“完成”。
wkx8y%} q!M9tv0IXPUB技术博客!ecE4w {"k?~四条名为www的主机记录出现在正向搜索区域“example.com.cn”中,指针依次为172.28.20.1、172.28.20.2、172.28.20.3、172.28.20.4
T M-D9L0M_0IXPUB技术博客I8_W*X;f/KQ't③启用多宿主名称的循环复用IXPUB技术博客*@KmS)k f
(T niA Z9z5`f.C0 单击开始/程序/管理工具/DNS/DNS服务器名/属性/高级,在“服务器选项”中,选择“启用循环”复选框,然后单击“确定”。IXPUB技术博客3m}N!`'n%|-`
9XkG/Hu$`*e#vtF3G$h0 至此,正向搜索型查询用于IP 地址分别为172.20.20.1、172.28.20.2、172.28.20.3和172.28.20.4的多宿主主机 (www. example.com.cn)配置完成,具体如图1所示。IXPUB技术博客lj5s:V2oq%dNJt
IXPUB技术博客'{};g2^ Qu'\ oN\
DNS服务器配置图IXPUB技术博客}vU(\1pO-RJWoj`
IXPUB技术博客 @)]J&A]u[#X当客户请求访问www.example.com.cn时,DNS服务器将循环调度IP地址的次序,将按172.28.20.1、172.28.20.2、172.28.20.3和172.28.20.4的顺序应答第一个客户的要求,下一个客户对同样信息的请求将用旋转后的172.28.20.2、172.28.20.3、172.28.20.4和172.20.20.1这样的顺序应答,旋转过程将持续下去,成功实现DNS负载均衡。IXPUB技术博客'W&_+h6}q#S[r
IXPUB技术博客8d8[%wO'H/fu+{(k+^按以上步骤设置好后,有时会有疑问,为什么ping www.example.com.cn,返回的都是同一个IP?原因很简单,这是因为只用1台电脑做
P3U]|xv3[CH0IXPUB技术博客P7zTh&ah测试,ping了第一次后,电脑就会做一个缓存。用多台电脑来ping,或在一台电脑上ping完每一次后,均运行ipconfig/flnshdns,就可测试
'_f'u"Y:S0IXPUB技术博客3N3P|h2P3|+X_出系统实现目的已达到。IXPUB技术博客4f I0xh ~3R
:g zpFbn0 4 需注意的两点问题IXPUB技术博客iv!{NuDsG.WR
?[2mW tWl6[0 ⑴ 本地子网优先级IXPUB技术博客%A R5d8B6um U4m'O
JingZOO0 当集群中的服务器不在同一网段时,默认情况下,当客户机查询解析映射到多个 IP 地址的主机名时,DNS 服务使用本地子网优先排序作为IXPUB技术博客M nd9Kp)S?
#vC#\em6d:L$R0 给出同一网络上首选 IP 地址的方法。此功能要求客户应用程序尝试使用连接可用的最近(一般是最快的)IP 地址连接至主机。
G&w&Vq R0*Aqg&i2O0 DNS 服务按以下方式使用本地子网优先级:IXPUB技术博客IL;I1SC'[4s~&pN!jon
RX6z"Q AK rQ6q xG0 ①DNS 服务确定是否需要本地子网的优先级排序查询响应。
_!rv(oq_,P,v0^}#y J q0 如果有多个地址资源记录与要查询的主机名匹配,则 DNS 服务可按其子网位置重新对记录进行排序。如果查询的主机名只与一个 地址资源IXPUB技术博客6[Vj ]#I)jkEu
IXPUB技术博客_D-k4Q)t!c/gM"c记录匹配,或者客户机的 IP 网络地址与多重资源记录响应列表上的任何映射地址的 IP 网络地址匹配,则不需要进行优先排列。
,R)@!ht2Szi!l0hIO&Wg+d4t0 ②对于匹配响应列表中的每一个资源纪录,DNS 服务决定了哪些记录(如果有)与查询客户机的子网位置匹配。