无忧启动论坛

标题: 【求助】实现自动切换IP,让双机热备软件系统“下岗”的批处理。 [打印本页]

作者: fanpuyu    时间: 2008-3-12 12:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: lvyanan    时间: 2008-3-12 13:08
S1重新恢复,S2怎么能ping得到S1?S2自己已经占用了S1的IP,ping的IP等于是在ping自己,逻辑上就是错的,S1要用此IP必须等S2释放了才可以,所以S2此时根本ping不到S1,除非你给S1的网卡另外设置一个专门用于测试的IP。
另外,S1恢复时,由于使用的IP与S2正在使用的IP冲突,可能会造成双方主机掉线,从而无法实现LZ的意图,望LZ三思。

[ 本帖最后由 lvyanan 于 2008-3-12 01:16 PM 编辑 ]
作者: fanpuyu    时间: 2008-3-12 13:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: fanpuyu    时间: 2008-3-12 13:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: lvyanan    时间: 2008-3-12 13:42
原帖由 fanpuyu 于 2008-3-12 01:14 PM 发表
感谢老兄指点,犯了个严重的设计错误!

已经把目标更改!

实现目标:
一、在S2上运行批处理文件,如果S1出现网络故障或者死机、蓝屏等三分钟时间无法访问的时候,S2自动切换成S1的IP地址,继续工作!
二 ...

这个问题挺麻烦,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来运行,这样似乎逻辑上说得过去些。
作者: fanpuyu    时间: 2008-3-12 13:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: lvyanan    时间: 2008-3-12 13:55
标题: 回复 #6 fanpuyu 的帖子
不客气,能帮上你的忙,很高兴,祝你成功!后会有期。。。。。。
作者: fanpuyu    时间: 2008-3-14 12:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: qzwqzw    时间: 2008-3-14 19:03
转一下在cn-dos的回复
这是模型代码,!!未经测试!!

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

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

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

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

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

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

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

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

  15. :VerifyMe - 等待3分钟后确认自身网络,通则间隔约1分钟再转向监测,否则转向主机切换
  16. ping -n 1 -w 180000 1.1.1.1 > nul & ping -n 1 192.168.0.1 | find "TTL=" >nul && goto :MonitorMe
  17. goto :SwitchToStandby
复制代码

作者: qzwqzw    时间: 2008-3-14 19:15
代码未经测试
而且我比较怀疑:SwitchToPrimary是否可以正常工作
也同时对lvyanan的"S1恢复后,开机后使用192.168.0.3上网"表示质疑

这种说法本身就是有问题的
因为S1在192.168.0.1地址中发生故障
如果仅仅是网络中断
那么可以由程序和操作员切换地址
但如果是系统宕机或硬件断电等硬故障
那意味着失去了在冲突发生前切换地址的可能性

我的代码可以做到一启动后立即切换本机地址为备机地址(192.168.0.2)
当然前提是这个代码在开机时自动运行
但切换的过程之间必然会已经发生冲突
而这种短暂的冲突会否影响网络我是不确定的
作者: lvyanan    时间: 2008-3-14 20:52
标题: 回复 #10 qzwqzw 的帖子
我所讲的S1主机使用的192.168.0.3是为了避免冲突而提出的指导意见,这只是一个思路,具体实施完全可以用批处理动态设置,这没有什么问题吧?

[ 本帖最后由 lvyanan 于 2008-3-14 08:54 PM 编辑 ]
作者: netwinxp    时间: 2008-3-15 09:29
你看酱紫是不是更好:
双机全有双网卡
主机:192.168.1.2、172.10.0.2(重启后默认禁用)
备份:192.168.1.3、172.10.0.2(重启后默认禁用)
192.168.1.2和192.168.1.3交叉线直连
两个172.10.0.2全接通往外部的HUB或交换机上。
192.168.1.2如呈断开状态,则启用自己的172.10.0.2
192.168.1.3如呈断开状态,则启用自己的172.10.0.2
两台都挂掉的话,重启后,手动启用其中一台的172.10.0.2(也许还有其他解决办法)。
***为防止偶然掉线造成混乱,建议检测一直断开若干时间才启用172.10.0.2***
=============================
下段建议不要,直接让主副轮流有利于延长寿命,且配置、软件几乎一样,GHOST后,只需修改小部分(IP还有主机名),还不用PING
==========================================================
|| 192.168.1.2如连接状态,则发送消息要求192.168.1.3断开172.10.0.2,并延迟适当时间后启用自己的172.10.0.2
|| 192.168.1.3如发现192.168.1.2,则在规定时间内禁用自己的172.10.0.2,如果规定时间内无法禁用则强行重启。
|| 不过酱紫有点复杂,估计P处理比较难以搞定,也许VBS会好一点,建议编程解决(也好找头头要点项目费)。
|| 还有查询建议隔断时间查询一次,一直ping对网络及服务器不利。
===========================================================
***假设172.10.0.2为对外部的服务器IP***
建议服务器对外的IP不要轻易随便改变
嘿嘿,酱紫实现简单、备份容易,而且主副机可以交换数据,嘿嘿

[ 本帖最后由 netwinxp 于 2008-3-15 10:39 AM 编辑 ]




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3