如何评估线上系统的容量? (二)

4 tcpcopy

4.1 原理

TCP/IP四层网络模型
| 应用层 | HTTP, FTP, ... |
| 传输层 | TCP,UDP |
| 网络层 | IP, IMCP, ... |
| 网络接口层 | ethernet, ... |

简单地说,tcpcopy是在OS(online server)从IP层复制请求包,修改其中的源地址,发给TS(target server)。TS处理之后的响应包会被AS(assistant server)拦截丢弃掉,避免将不真实的包发给用户。

详情请见tcpcopy手册

4.2 核心概念

  • online server: 部署并执行tcpcopy命令,拷贝数据包,修改,并发送给target server
  • target server: 增加路由规则,将响应包发送到assistant server
  • assistant server: 部署并执行intercept命令,拦截并丢弃target server响应包
如何评估线上系统的容量? (二)_第1张图片
流程图

4.3 具体操作

  • online server:
    tcpcopy -x $onlineServerPort-$targetServerIp:$targetServerPort -s $assistantServerIp -c 62.135.200.10 -d

其中-c参数是比较关键的,表示把原来的数据包中的client ip改成特定ip,这个主要是为了方便在target server上添加路由规则。后面的这个62.135.200.10是我随便写的。更多的参数可以查看tcpcopy -h

  • assistant server:
    intercept -i eth0 -F "tcp and src port $targetServerPort" -d

  • target server:
    route add -net 62.135.200.0 netmask 255.255.255.0 gw $assistantServerIp

4.4 高并发流量

  1. 单台online server执行tcpcopy指定-n 流量倍数
  2. 多台online server执行tcpcopy

其中方案1,对于有写请求的场景不适用,可能会有脏数据或其他的问题出现,推荐方案2。

你可能感兴趣的:(如何评估线上系统的容量? (二))