正文
具体命令:
iptables -t raw -A PREROUTING -p tcp --dport 8080 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp --sport 8080 -j NOTRACK
这里8080是Nginx监听端口,意思是对出入8080端口的数据包不进行跟踪。设置上述命令可以降低内存和cpu资源消耗,并且也不会干扰测试的进行(21讲会详细讲述)。
配置结果可以通过iptables来查看,见下图:
2)规避文件句柄坑
ulimit -HSn 1000000
需要注意上述命令只对本终端有效,建议修改/etc/security/limits.conf。
上述设置确保单个进程能够打开的句柄数量为100万。
由于Nginx是多进程程序,所以可以配置多个进程的方式来支持2000万连接,理论上至少需要20个进程才能达到。
3)关闭rp filter设置
由于TCPBurn采用了IP欺骗(原理类似流量复制工具TCPCopy,可参考课程TCPCopy相关部分),系统如果设置rp filter则会干扰测试的进行。
由于被测试的服务器配置了rp filter过滤,为简单起见,在服务器端关闭所有rp_filter设置。
4)路由设置
由于TCPBurn采用IP欺骗的方式来模拟大量客户端连接,需要在服务器端配置路由,使其响应能够回到发送请求的客户端虚拟机上。
客户端虚拟机利用了7台虚拟机,所在的IP地址跟欺骗的IP网段地址对应关系如下:
192.168.25.121 192.168.100.0
192.168.25.122 192.168.101.0
192.168.25.123 192.168.102.0
192.168.25.124 192.168.103.0
192.168.25.125 192.168.104.0
192.168.25.126 192.168.105.0
192.168.25.127 192.168.106.0
在 服务端进行路由设置:
route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.25.121
route add -net 192.168.101.0 netmask 255.255.255.0 gw 192.168.25.122
route add -net 192.168.102.0 netmask 255.255.255.0 gw 192.168.25.123
route add -net 192.168.103.0 netmask 255.255.255.0 gw 192.168.25.124
route add -net 192.168.104.0 netmask 255.255.255.0 gw 192.168.25.125
route add -net 192.168.105.0 netmask 255.255.255.0 gw 192.168.25.126
route add -net 192.168.106.0 netmask 255.255.255.0 gw 192.168.25.127
上述路由设置的作用是请求从哪一台虚拟机过来,其响应就回到哪一台虚拟机。
3、服务器端Nginx部署安装
我们需要部署一个消息推送Nginx服务,用来支持2000万模拟用户的消息推送服务 。
具体安装请参考官网:https://github.com/wandenberg/nginx-push-stream-module
N
ginx配置参考下图:
上图中配置了20个进程,每一个进程支持1048576个连接,理论上可以支持2000万并发连接(1048576×20 > 20000000)。
Nginx其它配置如下:
监听端口采用8080端口。
消息推送相关配置参数见下面两张图:
完成上述步骤后,消息推送服务已经部署好,直接启动Nginx:
./nginx
Nginx就可以等待用户发送请求过来。
4、客户端TCPBurn部署安装
tcpburn(TCPBurn是由tcpburn和 intercept组成)运行,首先需要intercept的配合(具体工作原理图可以参考TCPCopy部分课程)。
intercept工具的主要功能是截获Nginx消息推送服务的响应数据包,配合tcpcopy和tcpburn工具来完成用户会话回放。没有intercept的配合,tcpburn就无法工作。
1)intercept安装运行
intercept安装参考官网github地址:https://github.com/session-replay-tools/tcpburn