中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 18:08
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]自动切换IP,让双机热备软件“下岗”的批处理。
可打印版本  933 / 7
第1楼 fanpuyu 发表于 2008-03-12 11:54
新手上路 发帖 4 积分 10
[求助]自动切换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的批处理文件:



[ Last edited by fanpuyu on 2008-3-12 at 02:11 PM ]
第2楼 fanpuyu 发表于 2008-03-12 12:04
新手上路 发帖 4 积分 10
补充一下:
ping不通应该为:Request timed out. 超时3分钟!

延时Reply from 192.168.0.1: bytes=32 time=3000ms TTL=128
或者2分钟内Request timed out. 则不要进行IP地址的切换!
呵呵,因为要考虑到并发与服务器本身的一切BUG等问题!
第3楼 qzwqzw 发表于 2008-03-12 14:52
银牌会员 发帖 636 积分 2,343
很有意思的构思

其它都还好说
麻烦的是如何S1网络中断恢复后
检查与排除与S2的IP冲突

因为网络中断的形式是多种
包括进程阻塞、系统宕机、连接断开
这种中断可能导致程序重启
也可能不会导致程序重启
从而使程序的判断流程产生分歧

有了些想法
正在完善……
第4楼 fanpuyu 发表于 2008-03-12 14:56
新手上路 发帖 4 积分 10
Originally posted by qzwqzw at 2008-3-12 02:52 PM:
很有意思的构思

其它都还好说
麻烦的是如何S1网络中断恢复后
检查与排除与S2的IP冲突

因为网络中断的形式是多种
包括进程阻塞、系统宕机、 ...




如果S1确实在三分钟以上都无法连接,而过了十分钟左右又突然正常运行的话,那偶只好去机房内进行查看了!
呵呵,这种可能性不是没有,但感觉会很少!

在单位的这个数据库的WEB页面里有主机名称的,如果S1挂掉,切换到了S2,那客户端的WEB页里就会出现SERVER02的主机名称,而不是SERVER01!
第5楼 fanpuyu 发表于 2008-03-12 15:03
新手上路 发帖 4 积分 10
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来运行!

那这样就需要两个批处理,同时在两台机器里运行!!


感谢。。。。。。。。。。。
第6楼 ztg2008 发表于 2008-03-12 15:22
新手上路 发帖 1 积分 2
学习哟
第7楼 karl 发表于 2008-03-12 16:00
新手上路 发帖 4 积分 3
使用netsh命令不需这么复杂。
用netsh -c interface dump > s1.txt 得到s1的TCP/IP设置
用netsh -f s1.txt重置s2的TCP/IP
如果有ROUTER的话重定向会有延迟。
第8楼 qzwqzw 发表于 2008-03-12 17:24
银牌会员 发帖 636 积分 2,343
这是模型代码,!!未经测试!!

本程序需要先在主机上运行
待确认正常后再在备机上运行

若保证系统启动时自动运行本程序
则可以实现大多数情况下的自动IP切换
个别极端情况例外



[ Last edited by qzwqzw on 2008-3-12 at 05:43 PM ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023