最近,公司新推了一个电商项目,IIS+ASP。而上面大大规划了要用 LVS 负载均衡集群,在这个技术陈旧的企业,LVS 项目还是去年才真正推行。由于最开始是由我测试的,所以这次的部署又落到了我头上了。 之前一直是在 RHEL 上做的 LVS+Keepalived,现在换成 Windows 主机,虽然在集群架构上的理解没啥问题,但是这 Win 主机做 RealServer 具体该如何设置还真没弄过。不过,万能的搜索引擎很快就帮我解决了,现在记录下,以便查询翻阅!
一、在 Win 主机上新增环回虚拟网卡(Microsoft Loopback Adapter)
以管理员身份运行 cmd 后,在 cmd 命令窗口中执行:hdwwiz,弹出如下界面:
下一步后,勾选手动选择:
点选网络适配器,继续下一步: 左侧选择 Microsoft,右侧找到如图硬件(Windows Server 2008/7 中则叫:Microsoft Loopback Adapter) 点击下一步开始安装,直至完成,则成功添加了环回虚拟网卡。 成功安装该适配器后,与其他任何适配器一样,您可以手动配置其选项。如果 TCP/IP 属性配置为使用 DHCP,则该适配器最终将使用一个 autonet 地址 (169.254.x.x/16),因为该适配器并没有与任何物理媒体实际相连接。
注意:默认情况下,TCP/IP 属性配置为使用 DHCP。
二、设置环回网卡 TCP/IP 信息
打开 Windows 7/8/Server 2008 的网络和共享中心,左侧点开“更改适配器设置”,找到新增的环回连接,重命名为 realserver(推荐重命名)。 右键 realserver 连接属性,开始设置 TCP/IP: 和 Linux 中的 lo:0 一个样,将 IP 地址设置为 VIP,将掩码设置为 255.255.255.255,其余留空即可。 Ps:看网上教程,都有提到如下问题,(虽然这些老家伙基本都不用了,但还是记录下吧):
子网掩码 255.255.255.255 但在 MS NT/2K/XP 会被认为是无效的。 可以有以下解决方法: 在 MS NT/2K/XP 中,网络界面(interfaces)在
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Tcpip/Parameters/Interfaces
找到适当的网络连接 IP 地址,修改 subnetMask 子网掩码,(注意修改方式)不需要重启,只需重新激活该网络连接即可。
三、修改客户端网卡接口、环回接口连接模式
将以下代码保存为 bat 执行,或直接在 CMD 中依次执行 2~5 行命令即可(双引号中需根据实际连线名称修改)
@echo off netsh interface ipv4 set interface "realserver" weakhostreceive=enabled netsh interface ipv4 set interface "realserver" weakhostsend=enabled netsh interface ipv4 set interface "本地连线" weakhostreceive=enabled netsh interface ipv4 set interface "本地连线" weakhostsend=enabled pause
上面的四条命令一定要输入,因为 windows 2008 的默认中,网卡的 stronghost 处于启用状态,这个设置可以防止跨接口转发数据包,这就表明:来自一个网络适配器的请求不会被环回适配器处理,因为这个请求来自于不同的网络适配器。为了将环回适配器从 stronghost 切换为 weakhost,需要运行以上四条命令,要不然 TCP 的状态会一直处于 SYN_RECV 状态。
哦了,做完以上步骤之后,就可以启动 keepalived 测试效果了!关于 LVS+keepalived 的其他问题可以参考张戈博客的老文章:LVS+Keepalived 负载均衡主备&双主架构全攻略,有任何其他问题也可以给我留言。