中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]自动切换IP,让双机热备软件“下岗”的批处理。
作者:
标题: [求助]自动切换IP,让双机热备软件“下岗”的批处理。 上一主题 | 下一主题
fanpuyu
新手上路





积分 10
发帖 4
注册 2008-3-12
状态 离线
『楼 主』:  [求助]自动切换IP,让双机热备软件“下岗”的批处理。

大致情况是这样的,单位里原来有一有套双机热备+磁盘阵列系统,但是自从阵列出了问题后,那一套双机热备也不能使用了,干脆一不做二不休,只好抛弃那所谓的双机热备、自动切换设备了,准备使用DOS批处理来实现两台机器的自动切换IP功能!数据同步偶用了SyncBackSE来实现!呵呵! 设备: 主力服务器的IP地址是(简称S1):192.168.0.1 备用服务器的IP地址是(简称S2):192.168.0.2 实现目标: 一、在S2上运行批处理文件,如果S1出现网络故障或者死机、蓝屏等三分钟时间无法访问的时候,S2自动切换成S1的IP地址,继续工作! 二、当然如果能够等待S1工作正常后S2再自动改为原IP地址!就更好了!如果这一项无法实现就请帮忙把一给帮忙编写一下!感谢...... 实现过程: 主要利用网络工具的:ping 白话文: 就是S2在3分钟内ping不通S1时,自动切换成S1的IP,等可以ping通S1了,最好是可以再切换回原来的IP地址!呵呵! 现在偶已经把切换IP的批处理做好了,但是具体如何进行ping,在三分钟内ping不通与通后如何实现自动切换却不知道如何来做了,请大家帮帮忙给编写一下! 感谢中。。。。。。。。。。。。。。 :) 在S2里切换IP的批处理文件:
@ echo off 
rem 设置变量 
set Nic=本地连接 
rem 
set Addr=192.168.0.1 
set Mask=255.255.255.0 
set Gway=192.168.0.254 
set Dns1=192.168.0.254 
set Dns2=202.102.224.68
rem

echo ------------------------------------------------------ 
echo 正在进行IP设置,请稍等 

rem
echo. IP地址 = %Addr% 
echo. 子网掩码 = %Mask% 
netsh interface ip set address name=%Nic% source=static addr=%Addr% mask=%Mask% >nul 
echo. 网关 = %Gway% 
netsh interface ip set address name=%Nic% gateway=%Gway% gwmetric=1 >nul 
echo. 首选DNS = %Dns1% 
netsh interface ip set dns name=%Nic% source=static addr=%Dns1% register=PRIMARY >nul 
echo. 备用DNS = %Dns2% 
netsh interface ip add dns name=%Nic% addr=%Dns2% index=2 >nul 

echo ------------------------------------------------------ 
echo IP设置完成! 

rem pause >nul 
[ Last edited by fanpuyu on 2008-3-12 at 02:11 PM ]


2008-3-12 11:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fanpuyu
新手上路





积分 10
发帖 4
注册 2008-3-12
状态 离线
『第 2 楼』:  

补充一下: ping不通应该为:Request timed out. 超时3分钟! 延时Reply from 192.168.0.1: bytes=32 time=3000ms TTL=128 或者2分钟内Request timed out. 则不要进行IP地址的切换! 呵呵,因为要考虑到并发与服务器本身的一切BUG等问题!


2008-3-12 12:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2343
发帖 636
注册 2004-3-6
状态 离线
『第 3 楼』:  

很有意思的构思 其它都还好说 麻烦的是如何S1网络中断恢复后 检查与排除与S2的IP冲突 因为网络中断的形式是多种 包括进程阻塞、系统宕机、连接断开 这种中断可能导致程序重启 也可能不会导致程序重启 从而使程序的判断流程产生分歧 有了些想法 正在完善……


2008-3-12 14:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fanpuyu
新手上路





积分 10
发帖 4
注册 2008-3-12
状态 离线
『第 4 楼』:  

Originally posted by qzwqzw at 2008-3-12 02:52 PM: 很有意思的构思 其它都还好说 麻烦的是如何S1网络中断恢复后 检查与排除与S2的IP冲突 因为网络中断的形式是多种 包括进程阻塞、系统宕机、 ...
如果S1确实在三分钟以上都无法连接,而过了十分钟左右又突然正常运行的话,那偶只好去机房内进行查看了! 呵呵,这种可能性不是没有,但感觉会很少! 在单位的这个数据库的WEB页面里有主机名称的,如果S1挂掉,切换到了S2,那客户端的WEB页里就会出现SERVER02的主机名称,而不是SERVER01!


2008-3-12 14:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fanpuyu
新手上路





积分 10
发帖 4
注册 2008-3-12
状态 离线
『第 5 楼』:  

Originally posted by qzwqzw at 2008-3-12 02:52 PM: 很有意思的构思 其它都还好说 麻烦的是如何S1网络中断恢复后 检查与排除与S2的IP冲突 因为网络中断的形式是多种 包括进程阻塞、系统宕机、 ...
网友:lvyanan 兄的提示 这个问题挺麻烦,S2检测S1好办些,但S1恢复时其IP一定会与S2当前使用的IP产生冲突,其后果是造成双方中的一方掉线,甚至有可能双方同时掉线,此后的处理就相当难了,要想实现自动处理,其难度可想而知。有一个思路不知正确否,LZ可以在两台主机上各自运行一个批处理,S2通过ping192.168.0.1来监视S1,当3分钟ping不通S1,S2就自动将IP改为192.168.0.1来运行,同样S1恢复后,开机后使用192.168.0.3上网,并且ping192.168.0.1,如果ping得通就待命,ping不通就自动改为192.168.0.1来运行,这样似乎逻辑上说得过去些。 我的回复: 其实感觉也可以这样,S2运行的批处理中不包括恢复原192.168.0.2的命令。如果S1挂掉了,就让S2当主机,那等到S1恢复时就让它成为恢复后的S2来运行! 那这样就需要两个批处理,同时在两台机器里运行!! 感谢。。。。。。。。。。。


2008-3-12 15:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ztg2008
新手上路





积分 2
发帖 1
注册 2008-3-12
状态 离线
『第 6 楼』:  

学习哟


2008-3-12 15:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
karl
新手上路





积分 3
发帖 4
注册 2007-10-12
状态 离线
『第 7 楼』:  

使用netsh命令不需这么复杂。 用netsh -c interface dump > s1.txt 得到s1的TCP/IP设置 用netsh -f s1.txt重置s2的TCP/IP 如果有ROUTER的话重定向会有延迟。


2008-3-12 16:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2343
发帖 636
注册 2004-3-6
状态 离线
『第 8 楼』:  

这是模型代码,!!未经测试!! 本程序需要先在主机上运行 待确认正常后再在备机上运行 若保证系统启动时自动运行本程序 则可以实现大多数情况下的自动IP切换 个别极端情况例外
@echo off

:SwitchToStandby - 将自身切换为备机
:: 此处填写设置备机IP(192.168.0.2)的代码

:MonitorStandby - 监测备机网络,不通则间隔约1分钟再监测,否则转向监测主机
ping -n 1 192.168.0.2 | find "TTL=" >nul || ping -n 1 -w 60000 1.1.1.1 > nul & goto :MonitorStandby

:MonitorPrimary - 监测主机网络,通则间隔约1分钟再监测,否则转向确认主机
ping -n 1 192.168.0.1 | find "TTL=" >nul && ping -n 1 -w 60000 1.1.1.1 > nul & goto :MonitorPrimary

:VerifyPrimary - 监测备机网络,不通则转向监测备机,否则等待3分钟再确认主机,通则转向监测主机,否则转向备机切换
ping -n 1 192.168.0.2 | find "TTL=" >nul || goto :MonitorMe
ping -n 1 -w 180000 1.1.1.1 > nul & ping -n 1 192.168.0.1 | find "TTL=" >nul && goto :MonitorPrimary

:SwitchToPrimary - 切换备机为主机
:: 此处填写设置主机IP(192.168.0.1)的代码

:MonitorMe - 监测自身网络,通则间隔约1分钟再监测,否则转向确认自身
ping -n 1 192.168.0.1 | find "TTL=" >nul && ping -n 1 -w 60000 1.1.1.1 > nul & goto :MonitorMe

:VerifyMe - 等待3分钟后确认自身网络,通则间隔约1分钟再转向监测,否则转向主机切换
ping -n 1 -w 180000 1.1.1.1 > nul & ping -n 1 192.168.0.1 | find "TTL=" >nul && goto :MonitorMe
goto :SwitchToStandby
[ Last edited by qzwqzw on 2008-3-12 at 05:43 PM ]


2008-3-12 17:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: