windows server 2008 NLB 问题

转载于http://itseeker.blog.51cto.com/369078/457681  在这里谢谢原创作者
在做基础架构是,NLB是很基本和普遍的需求。最近在windows2008基础上做NLB,陆续发现一个奇怪的现象。当然,这个问题主要是因为nlb环境架设完成以后,未经过充分的测试,这个潜在的问题没显示出来而已。通常在小的环境中,客户端和服务器场都是在同一子网中,刚才提到的问题是隐性的。当来自与NLB服务器场不同子网的客户请求时,问题就显现了,表现为:当来自和NLB虚拟ip不同子网的数据请求发生时,NLB群集虚拟IP无法响应客户端的请求。
    找了一些资料,原来WINDOWS2008和之前的服务器版本比如windows server 2003 有个不同之处是,网卡的ip forwarding 设置默认是禁用的。通常做NLB的每台服务器上会用到2片网卡,一片用来做nlb cluster一片用来做服务器间的网络通信。在windows server2003 环境中,当来自外围(包括在同一网段还是不同网段)的数据请求被发送到NLB Cluster网卡(在数据流来看,该网卡是inbound方向),当inbound的网卡接收的来自不同网段的请求时,会启用ip forwarding ,将数据请假forward到outbound接口的网卡,从而进一步响应客户端的请求。而在windows server2008 的默认配置中,inbound网卡的ip forward 的状态时disable,cluster网卡并未配置任何网关设置,数据包就此丢弃。所以,即使从客户端发起的一个简单的对cluster virtual ip的ping 测试都无法完成。
       解决的方法是:对inbound网卡(即用来做nlb群集的网卡)启用ip forwarding。 如何启用?仅仅运行一句脚本即可。
• netsh interface ipv4 set interface “Cluster NIC” forwarding=enabled
• netsh interface show int    ---可以show出interface的名称
接下来可以通过,netsh interface ipv4 show interface l=verbose  来 验证。
 最后可以在注册表中发现我们所做的更改:
Key name: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Value Name: IpEnableRouter
Data Type: REG_DWORD
Value: 1
     以上方法,解决了前期碰到的这个诡异问题。

你可能感兴趣的:(windows,职场,休闲,NLB)