1、责任编辑章继刚Infrastructure&DataManagement基础设施与数据管理Windows下用VIP实现高可用石家庄铁道大学电气与电子工程学院王惟一编者按:通过命令方式配置VIP,并以自定义服务的方式完成服务器状态监测和主备切换,实现了高可用目的,取得了一定的应用效果。为了缩短因设备维护或系统崩溃导致业务停机的时间,一般采用双机热备的方式来实现业务的高可用。所谓双机热备,就是将业务应用同时部署到两台服务器上,平常只有一台服务器对外提供服务,称之为主服务器,另一台服务器备用,称之为备用服务器。一旦主服务器出现故障,备用服务器将替代主服务器对外提供服务。之所以称之为热备,指备用服务器
2、和主服务器都不停机的情况下,在备用服务器上用同步工具在线备份主服务器数据。当主服务器岩机后,备用服务器能顶替主服务器运行,或主服务器恢复后,能在不停机情况下同步备用服【上接第7 4页】配置第2 个VAP模板名称为huawei-vap-visitor,设置转发方式为直接转发,设置无线业务VLAN为10 2,并绑定安全模板security2和SSID模板ssid2。在逻辑上存在2 个VAP模板,并不是一个模板对应一个AP,而是在每个AP上都可以接入这2 个模板,分别可以接入teacher组和student组。(5)绑定2 个VAP模板到AP组,并分别设定WLAN的编号为1、2,radio0为2.4
3、GHz频段,radio1为5 GHz频段。务器数据,以便业务能切回主服务器。这里不谈备份技术,只谈在高可用技术中,用于业务切换的虚拟IP技术。在Linux平台下,可以用Keepalived等软件工具来配置VIP,并对服务器运行状态进行监测以及主备切换。Windows平台下很难找到这样的软件工具。为了实现高可用,笔者尝试用命令方式配置VIP,并以自定义服务的方式完成服务器状态监测和主备切换,取得了一定的应用效果。虚拟IP原理众所周知,每台联网的设备都需要为其配置IP5.连接与测试配置s5700的loop0接口,地址为2 0 2.9 6.68.1,模拟Internet访问。如图1,STA1、S T
4、 A 2 分别接入5GHz与2.4GHz频段,STA1需要密码,STA2不需要密码。用命令ipconfig查看STA的网络地址参数,分别获得了10.0.101.0/24网段与10.0.10 2.0/2 4网段的IP地址,并可Ping通10.0.10 1.1网关。配置成功后,2 个AP周围会产生信号覆盖区域,AP与STA之间也会产生无线连接信号。内圈深色的代表5GHz信道覆盖,外圈蓝色的代表2.4GHz信道覆盖。N投稿信箱 2023.875Infrastructure&DataManagement基础设施与数据管理/责任编辑章继刚eb服务器(主)192.168.0.1用户访间eb服务器(备)19
5、2.168.0.2图1VIP高可用原理地址才能正常通信。在OSI参考模型中,IP地址工作在网络层(OSI第三层),数据包到了数据链路层(OSI第二层),却是通过MAC地址(物理地址)传输的。也就是说,当网络层数据包传到数据链路层后,由地址解析协议(ARP)负责将IP地址解析为MAC地址。在ARP表中,IP地址和MAC地址并不是一一对应的。每台设备(含路由器)设有一个ARP高速缓存,存放的是IP地址与MAC硬件地址的映射表,这个映射表就是ARP表。ARP表允许一个MAC地址可以对应多个IP地址,但不允许一个IP地址对应多个MAC地址。由此可见,一块网络适配器,虽然只有一个MAC地址,但可以为其配
6、置多个IP地址,除真实的IP地址外,其他IP地址也都可以称为虚拟IP地址。无论是真实IP还是虚拟IP,到了数据链路层,都会被ARP解析为MAC地址。因此,无论是真实IP,还是虚拟IP,都可以对外进行通信。VIP高可用原理以Web服务器为例,为实现Web服务的高可用,可以配置两台Web服务器。一台用做主服务器(设IP为19 2.16 8.0.1),另一台用做备用服务器(设IP为19 2.16 8.0.2)。在两台服务器上添加相同的虚拟IP(设IP为19 2.16 8.0.9 9),使用虚拟IP(19 2.16 8.0.9 9)对外提供服务。当用户使用虚拟IP(19 2.16 8.0.9 9)访问
7、业务时,访问的开始数据服务器192.168,0.3服务初始化网关通?通添加VIP主服务器?不是主服务器通?通删除VIP图2 VIP高可用服务脚本可能是主服务器,也可能是备用服务器。这就需要一种机制,确保在正常情况下,用户访问虚拟IP(192.168.0.99)时,访问的是主服务器。只有主服务器发生故障后,才切换到备用服务器上。当主服务器修复后,还需要从备用服务器切换回主服务器(如图1)。Windows下VIP高可用服务模型VIP添加方法并不难。无论是在Windows操作系统中,还是在Linux操作系统中,都可以配置多个IP地址。例如,在Windows系统中,配置TCP/IP地址时,单击“高级”
8、按钮,出现高级TCP/IP设置”对话框后,再单击“添加按钮,添加新的IP地址即可。也可以进入命令提示符,使用命令netsh interface ip add address添加IP地址。新添加的IP地址就是VIP。如果将主服务器和备用服务器都添加相同的VIP(如前面的19 2.16 8.0.9 9),势必会引起IP地址不通不通添加VIP删除VIP 2023.8投稿信箱责任编辑章继刚Infrastructure&DataManagement基础设施与数据管理gecho onset svcname-virtuallPServiceset appdiras-dpeset appbin-wscript
9、set apparas-sappdirsivips.Jsset svcbin-tiappdirisrvany.exeset regpathHKEY_LOCAL_MACHINEISYSTEnCurrentControLSet1Services)tisycnamel)Parametersreg.exe add%regpath%/v Appoirectory/t REG_Sz/d%appdir51-/freg.exeacd%regpaths/vApplicatfon/tREG_sz/d-kappbing/freg.exe add%regpath%/v Apparameters/t RE_SZ/d s
10、apparant/fsc.exe create Nsvcnames bfnPath%svcbing”Displayiame=主备vIP服务 start=autosc.exedescription%svcnames“主通viP服务-sc.exe start ssvcnanes图3 服务安装批处理程序intall.bat完整代码冲突。因此,Windows下要用VIP来实现高可用,还需要解决两个问题。一是需要判定主服务器是否出现故障,二是需要动态添加或删除VIP。也就是说,正常情况下,只有主服务器才可以添加VIP。只有在主服务器出现故障后,才在备用伺服器上添加VIP。一旦主服务器恢复正常,还要删除备
11、用伺服器上的VIP,重新在主服务器上添加VIP。上述两个问题都可以使用Windows自带的命令解决。用命令“Ping可以检查服务器运行状态,以判定主服务器是否出现故障。用命令netshinterfaceip可以添加或删除IP地址,以实现VIP的动态管理。用MicrosoftWindowsResourceKits工具集中的小程序srvany.exe”将上述命令形成的脚本注册为服务,从而实现服务器状态监测和主备切换(如图2)。VIP高可用服务脚本具体执行步骤如下。第1步,VIP服务初始化。如创建wscript.shell 对象等。第2 步,使用Ping命令Ping网关。如果Ping不通,说明当前服
12、务器存在故障,需要删除VIP,避免当前服务器恢复正常后影响VIP通信。如果能Ping通,进入第3 步。第3 步,使用ipconfig命令获取当前服务器IP信息。根据IP信息判定当前服务器是否是主服务r gateway=*192.168.8.254*;armaster1P=192.168.8.1;var adapterNanearVirtual1P:-102.168.0.99;var netrask=*255.255.255.0*;(fumction()tvar ws new Actfvexobject(wscript.shell);function starto)(function stop(
13、)0)shile(true)(if(cping(gatemay)(J else if(ishaster()(deletevIP();addvIP();J else(if(ping(masterIP)(deletevIP();JelseadVIP();functioe 1slastero)(.faret ws.Run(*cmd/c fpconfig I findstr*+masterP,e,true);return ret=s B;functfon ping(1p)(ret.ws.Run(cd/c ping*if(ret o)(returnfalse;return true;function a
14、ddVIP()(if(s,Run(cnd,0,true)0)fstart(o);functfon deletevIP()(rarcndd+=+if(us.Run(cmd,0,true)0)($top(O);0);器。如果是主服务器,添加VIP。如果不是,进入第4步。第4步,使用Ping命令Ping主服务器。如果能Ping通,说明主服务器正常,删除VIP,以免和主服务器的VIP相同,导致IP地址冲突。如果不能Ping通,说明主服务器存在故障,添加VIP,代替主服务器对外提供服务。说明:在上述服务模型中,应该先判断当前服务器是否存在VIP。如果存在才有删除操作,不存在才有添加操作。之所以不用判断,
15、是因为如果使“本地连换;cnd/c netsh finterface fp add address*;adapterkane;virtualIP;task;cnd/c netsh fnterface fp delete address;adapterane;+virtualIP;图4VIP服务完整脚本1p-n.5*w 3 I findstr TL,o,true);投稿信箱 2023.877Infrastructure&DataManagement基础设施与数据管理/责任编辑章继刚pinevip结果,txt-记事本文件)编罐()格式()正在Ping,192.168.90.99具有来192.168
16、.0.99192.168.0.99192.168.0.99来来来来192.168.0.99192.168.0.99192.168.0.99来192.168.0.99来192.168.0.99来来192.168.0.99三192.168.0.99来三192.168.0.99米米192.168.0.99192.168.0.99来192.168.0.99来192.168.0.99192.168.0.99来来来三192.168.0.99192.168.0.99192.168.0.99192.168.0.99超时。米米自自三192.168.0.254,的复192.168.0.99192.168.0.99192.168.0.99来自自自192.168.0.99192.168.0.99192.168.0.99来自192.168.0.99用命令netshinterfaceipaddaddress”添加VIP,即便已存在VIP,也只是出现报错信息,不会出现异常。同样,使用命令netsh interface ipaddaddress删除VIP,即便没有VIP,也只是出现报错信息,不会出现异常。VIP高可用