Chinaunix

标题: tcp数据复制分流工具求助。 [打印本页]

作者: fxhnkf    时间: 2009-11-20 13:12
标题: tcp数据复制分流工具求助。
向各位请教一个问题:
我们项目组现在处理的系统为b/s架构,我们研发一个新系统替代原有老系统,新老系统外部接口一致,在用新系统替代老系统的过程中,客户不允许一次性切换,需要有一个新老系统并行的过渡期。在并行过渡期内,要求由客户端发出的所有请求在服务器被复制为两份,一份发往老系统,一份发往新系统,同时向客户端的应答由老系统给出。

现在向各位征求能够实现tcp数据复制的小工具,要求这个工具可以以tcp server的方式工作,接受外部并发的tcp连接请求,建立连接后接收外部传入的数据,将数据复制为两份,分别放往另外两个服务器,然后从其中一个服务器接收应答数据,再将应答数据转发给客户端。小工具运行的环境可以是windows xp系统或者linux系统。

还望各位畅所欲言,看这个问题该如何解决。万分感谢

[ 本帖最后由 fxhnkf 于 2009-11-20 13:16 编辑 ]
作者: ssffzz1    时间: 2009-11-20 13:14
求由客户端发出的所有请求在服务器被复制为两份,一份发往老系统,一份发往新系统,同时向客户端的应答由老系统给出。

新系统的应答如何处理。新系统的应答不被客户端处理的话,新系统能够正常工作吗???
作者: ziggler    时间: 2009-11-20 13:15
第一次听说,帮顶。

肯定不是这个:
http://cio.ccw.com.cn/research/info/htm2007/20070330_248165.asp
作者: hyagami    时间: 2009-11-20 13:34
不知道你们研发的系统做哪方面的信息处理,既然新系统能接收客户端提交的信息,但又不进行反馈处理,难道自己消化了,再者这样的话也无法验证新系统是否成功,更谈不上平稳过渡了,这个太奇怪了
作者: fxhnkf    时间: 2009-11-20 13:43
我们是做交易系统,应答是给客户端使用的,应答本身对服务器没有意义。在并行的过渡期内,新系统的应答是不需要处理的,应答有老系统给出,客户端以老系统的应答为准,新系统在这段时间内把请求交易处理好,将它的处理结果与老系统进行比较,验证新系统的正确性和可靠性。
作者: fxhnkf    时间: 2009-11-20 13:44
感谢各位的关注!
作者: testvpn    时间: 2009-11-20 13:58
两种方法,不知是否可行:
1. 这个方法不知道是否可行,就是用镜像端口连到新服务器,但是这样tcp建立过程的包也都发到新服务器了,可能不是楼主的要求

2. 如果要求只建立一个tcp连接,然后把数据分别往2个服务器发,那这肯定是需要一个proxy来实现的,所以要加个proxy设备。
把数据发往2个服务器,在2台服务器前放台LINUX,开启路由功能,通过tshark抓包,限制条件只抓自己要同时发给2个服务器的包,然后用tcpreplay把这个包从与另一个服务器相连的接口上发过去,这样回应回来的包可能就直接被丢弃了,反正也不需要这个应答。
作者: hyagami    时间: 2009-11-20 14:23
ls是个办法,分流的话前台linux可以通过规则阻断新系统发向客户端的packet,新系统不反馈客户端的请求,如何验证新系统数据的可靠性和准确性这是个比较头疼的问题,或许可以通过对数据表的横向对比能够解决
作者: ssffzz1    时间: 2009-11-20 14:39
把新老服务器的IP和MAC都修改成一样。交换机做镜像。新服务器挂在镜像端口。

对于Cisco的设备镜像端口好像不能做业务,这样无需特殊处理。对于能够做业务的镜像端口,下发ACL禁止入方向所有报文。
作者: ssffzz1    时间: 2009-11-20 14:39
以前一个单位要求这么做过。就是我说的方法。
作者: testvpn    时间: 2009-11-20 14:42
ip和mac不同也行,但是需要tcprewrite来修改一下各层头部信息,但是这样对性能要求挺高,流量太大的话,可能不行。
作者: fxhnkf    时间: 2009-11-20 18:32
原帖由 ssffzz1 于 2009-11-20 14:39 发表
把新老服务器的IP和MAC都修改成一样。交换机做镜像。新服务器挂在镜像端口。

对于Cisco的设备镜像端口好像不能做业务,这样无需特殊处理。对于能够做业务的镜像端口,下发ACL禁止入方向所有报文。



我觉得这个办法可以,会要求系统部的人搭个环境测试一下。
但有一个问题不太清楚,由于我是应用开发人员,不是系统维护人员,所以我对新老系统连接到同一台交换机,同时新系统和老系统两台机器设置相同的ip和mac(从应用透明的角度,一定要这样去设置),这一点有点疑问,这样设置在网络中不会冲突么?是不是通过把两台机器划分在不同的vlan,这样的手段保证两台机器接在同一个交换机上不会发生地址冲突?
对网络方面的知识比较贫乏,惭愧一下:)

再次对大家表示感谢,尤其对版主 ssffzz1  (midnight) 表示感谢!
作者: ssffzz1    时间: 2009-11-20 21:22
对于Cisco的设备镜像端口好像不能做业务,这样无需特殊处理。对于能够做业务的镜像端口,下发ACL禁止入方向所有报文。

此举就是解决你冲突问题的。另外交换机做静态MAC地址表绑定也可解决你的冲突问题。
作者: chenyx    时间: 2009-11-20 22:01
标题: 回复 #9 ssffzz1 的帖子
这个方法应该靠谱,楼主试试




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2