基于iptables来做系统依赖(TCP协议调用)容灾测试
2013-07-11 09:58
204 查看
首先说明一下为啥写这篇文章,其实iptables的使用,在网上随便搜一下很多。如果了解原理,然后在做容灾测试的时候,就可以直接用上。重要的不是iptables,重要的是容灾测试、
A和B两个系统,A对B在业务上是非强依赖,也就是说B系统挂掉了,A系统也需要能够正常提供服务。假如系统之间调用是通过TCP协议完成的,在调用B系统的代码的时候,方法体中没有加入try...catch代码,这样也就是说B系统正常的情况下,A系统的业务能够正常走通,但是B系统一旦自己挂掉,A系统这部分逻辑就走不下去了,但是实际上业务上面的需求是希望能够走下去的。
这种问题,一般是出了大故障之后,才会觉察到原来系统之间的调用,忘记做兼容性测试了,尤其是系统明显挂掉的时候。
B系统可以是什么角色?
在实践过程中,B系统可以是数据库(例如mysql),可以是分布式缓存服务器,也可以是和A系统同质的系统(例如一个java web类系统)。
如何做兼容性测试呢?
办法很多,关键看实现的成本,有一种是在代码层面,由于Java很多系统是基于Spring的IOC来注入bean,这时候可以搞个统一开关,把调用B应用的方法全部设置失效,这样搞实现成本有点高。再就是在A系统的服务器上通过iptables来屏蔽掉B系统的Ip地址,这样就能模拟B系统挂掉,A系统是啥反应了,从而实现容灾测试。
A---tcp协议-->B,在调用的链路上,加上防火墙。
关于iptables的介绍?
这里就不多写了,网上资料很多,一种用户态的防火墙软件,在Linux机器上面直接运用"iptables -L"即可查看目前tables中的配置情况(后面脚本中的语句,基本上是对于iptables中的filter表来进行的)。
扩展部分
每次都找依赖系统的IP貌似有点费劲,这时候我用python对于iptables的调用做了浅包装。每次只需要简单的配置,然后执行即可。
代码如下:(运行python脚本,在后面加入配置在conf_dist中的系统应用名称,就会把这个IP屏蔽掉,没加配置文件,会把iptables清空)
A和B两个系统,A对B在业务上是非强依赖,也就是说B系统挂掉了,A系统也需要能够正常提供服务。假如系统之间调用是通过TCP协议完成的,在调用B系统的代码的时候,方法体中没有加入try...catch代码,这样也就是说B系统正常的情况下,A系统的业务能够正常走通,但是B系统一旦自己挂掉,A系统这部分逻辑就走不下去了,但是实际上业务上面的需求是希望能够走下去的。
这种问题,一般是出了大故障之后,才会觉察到原来系统之间的调用,忘记做兼容性测试了,尤其是系统明显挂掉的时候。
B系统可以是什么角色?
在实践过程中,B系统可以是数据库(例如mysql),可以是分布式缓存服务器,也可以是和A系统同质的系统(例如一个java web类系统)。
如何做兼容性测试呢?
办法很多,关键看实现的成本,有一种是在代码层面,由于Java很多系统是基于Spring的IOC来注入bean,这时候可以搞个统一开关,把调用B应用的方法全部设置失效,这样搞实现成本有点高。再就是在A系统的服务器上通过iptables来屏蔽掉B系统的Ip地址,这样就能模拟B系统挂掉,A系统是啥反应了,从而实现容灾测试。
A---tcp协议-->B,在调用的链路上,加上防火墙。
关于iptables的介绍?
这里就不多写了,网上资料很多,一种用户态的防火墙软件,在Linux机器上面直接运用"iptables -L"即可查看目前tables中的配置情况(后面脚本中的语句,基本上是对于iptables中的filter表来进行的)。
扩展部分
每次都找依赖系统的IP貌似有点费劲,这时候我用python对于iptables的调用做了浅包装。每次只需要简单的配置,然后执行即可。
代码如下:(运行python脚本,在后面加入配置在conf_dist中的系统应用名称,就会把这个IP屏蔽掉,没加配置文件,会把iptables清空)
相关文章推荐
- 基于PXI平台的ESP系统性能测试平台
- 基于RMI实现远程调用的系统间通信
- 基于Web系统的测试方法(常见测试案例)-经验
- Samhain--基于主机的入侵检测系统安装测试笔记
- 基于系统真实数据的TUXEDO应用服务器压力测试的研究与实现
- 基于ubuntu开发版 ------渗透测试,审计取证类系统
- 基于套接字描述符的ioctl( )系统调用详解
- 基于Qt的ARM-Linux系统测试工具
- Linux Rootkit 系列二:基于修改 sys_call_table 的系统调用挂钩
- 基于Web的系统测试
- 基于Web的系统测试方法[转]
- 基于Web的系统测试
- 基于J2EE平台Web系统的软件测试研究和实现
- Win2012R2 Hyper-V初级教程14 — 基于Kerberos与CA证书的系统容灾(上)
- 基于 GlusterFS 的高可用 MySQL 数据库系统测试
- 基于Web的系统测试方法
- 基于Web的系统测试方法
- 基于Linux系统调用--getrlimit()与setrlimit()函数的方法
- 搭建基于springCloud的分布式系统所需基本依赖总结
- (转)基于Web的系统测试方法