在部署了网络负载均衡(nlb)的网络中,当某个客户针对nlb虚拟地址发起连接请求时,nlb通过某种nlb算法来确定(通常是根据发起请求的客户端源地址来决定)为客户服务的nlb节点.在nlb节点没有变动之前,对于某个客户,将总是由某个对应的nlb节点为它提供服务.isa防火墙企业版中的集成nlb依赖于windows服务器系统的nlb服务,对于客户发起的请求,也是采用相同的方式进行处理.
例如,对于一个具有三个nlb节点(isa1.isa2.isa3)的isa防火墙nlb阵列,当一个客户(10.1.1.1)发起连接请求时,nlb通过nlb算法确定由isa1为此客户服务;而当另外一个客户(10.1.1.2)发起连接时,nlb通过nlb算法确定由isa2为此客户服务.在nlb节点没有变动时,客户10.1.1.1的连接请求将会始终通过nlb节点isa1来进行处理;而客户10.1.1.2的连接请求则会始终通过nlb节点isa2来进行处理.
当某个nlb节点出现故障时,nlb将在所有节点上重新进行汇聚,并重新根据nlb算法来确定为客户提供服务的nlb节点.例如,此时isa1节点出现故障,无法再提供nlb服务;则nlb重新进行汇聚,如果客户10.1.1.1再发起连接请求,则就是isa2或者isa3来为它进行服务.
当nlb节点失效时,nlb可以让其他nlb节点来为客户提供服务.但是,如果nlb节点的nlb服务没有失效但是所提供的其他服务失效时,怎么办呢?
如下图所示,两台isa防火墙属于相同的nlb阵列,分别通过不同的外部链路连接到internet,并且对内部网络提供nlb服务.两台isa防火墙允许内部网络中的用户通过自己来访问外部网络,正在为不同的客户提供服务;如果此时,isa1上的外部链路突然断开,会出现什么情况呢?
560)this.style.width=560; onmousewheel = javascript:return big(this) style="cursor: pointer" onclick=javascript:window.open(this.src); src="/files/uploadimg/20060228/1749060.jpg" onload="return imgzoom(this,550)" border=0>
此时,由于isa1上的nlb服务并没有出现故障,所以nlb会认为isa1仍然是有效的nlb节点,并且同样会分配客户给它.但是,由于外部链路断开,isa1所服务的客户却不能再连接到internet了.这当然就不能有效的实现网络负载均衡中的容错特性.
那么,出现这种情况时,该怎么办呢?
答案很简单,当出现这种情况时,停止isa1上的nlb服务,这样,nlb会认为isa1上的nlb服务已经失效,将重新汇聚nlb,并且重新分配客户.从而原来属于isa1的客户可以通过仍然运行正常的isa2来访问外部网络.
要实现isa防火墙nlb的故障转移比较简单,微软已经考虑到了.你可以通过配置isa防火墙的连接性验证工具来实现当外部链路出现故障时进行相关的操作,但是要停止isa防火墙上的nlb服务不是一件容易的事情.由于isa防火墙上的nlb服务是与isa防火墙服务集成的,所以你不能通过windows的nlb stop命令来停止isa防火墙上的nlb服务;微软也没有相关的关于如何停止isa防火墙上的nlb服务的说明.在这种情况下,只能通过停止isa防火墙服务来停止isa防火墙上的nlb服务.... 下一页