LVS中Windows作为真实主机(RealServer)时的设置方法
最近,公司新推了一个电商项目,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_MACHINESystemCurrentControlSetServicesTcpipParametersInterfaces 找到适当的网络连接 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 负载均衡主备&双主架构全攻略,有任何其他问题也可以给我留言。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Usual*** CMS 8.0代码审计
- 由一条like语句引发的SQL注入新玩法
- 《黑神话:悟空》B站弹幕、知乎回答分析
- 12岁小读者使用Python暴力破解Wi-Fi密码
- 深度学习入门Fast.ai 2.0上线!自带中文字幕,所有笔记、资源全部免费!
- 七夕节脱单“神助攻”!AI教你写情话
- Python初学者请注意!别这样直接运行python命令,否则电脑等于“裸奔”
- 一篇文章构建你的 Node.js 知识体系
- MySQL:The CHAR and VARCHAR Types
- 更新一个10年有效期的 Kubernetes 证书
- 哇,ElasticSearch多字段权重排序居然可以这么玩
- Python 自动化,Appium 凭什么使用 UiAutomator2?
- 我用几行 Python 自动化脚本完美解决掉了小姐姐的微信焦虑感
- 【设计模式】692- TypeScript 设计模式之发布-订阅模式
- 强网杯-upload