0.背景

校验系统的正确性和可靠性时,仅靠用例场景无法覆盖全生产环境下的所有场景,需要一套引流工具,在系统正式上线前,用线上的请求测试待上线系统,在正常请求下,是否有报错;在数倍请求下,系统的性能瓶颈。引流工具有gor, tcpcopy等,下面介绍 gor,因为其易上手,且功能比较全。

1.golang 环境

1-1.下载 go

[root@10 ~]# wget --no-check-certificate --no-cookie https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz

1-2.解压安装包 [root@10 ~]# tar -C /usr/local -zxvf go1.5.3.linux-amd64.tar.gz

安装到/usr/local

1-3.定义 PATH 环境变量 [root@10 ~]# vim /etc/profile

添加export PATH=$PATH:/usr/local/go/bin

[root@10 ~]# source /etc/profile

1-4.校验

[root@10 ~]# go

出现参数信息,则安装成功

1-5.GOPATH 环境变量

The GOPATH environment variable specifies the location of your workspace.

Note that this must not be the same path as your Go installation.

[root@10 ~]# mkdir /data1/gowork

[root@10 ~]# vim /etc/profile

添加export GOPATH=/data1/gowork

[root@10 ~]# source /ect/profile

2.gor 工具

2-1.编译 gor [root@10 ~]#go get github.com/buger/gor

[root@10 ~]#cd $GOPATH/src/github.com/buger/gor

[root@10 gor]#go build

在当前目录生成 gor 可执行命令

[root@10 gor]# ./gor

Version:

2016/01/24 11:01:01 Required at least 1 input and 1 output

将/data1/gowork/bin/gor 命令建立软链:

ln -s /data1/gowork/bin/gor /usr/bin/gor

2-2.工具部分使用方式

2-2-1.实时引流:

执行机器:10.13.1.139

[root@10 goload]# gor --input-raw :20001 --output-http 10.75.0.101:8077

将 10.13.1.139:20001 的请求,同时打到 10.75.0.101:8077

2-2-2.保存请求到文件并回放

保存请求到文件

[root@10 goload]# gor --input-raw :20001 --output-file requests.gor

回放请求

[root@10 goload]# gor --input-file requests.gor --output-http "10.75.0.101:8077"

2-2-3.Load testing

只支持 input-file 文件, 如下用例:10x speed

[root@10 goload]# gor --input-file "requests.gor|1000%" --output-http "10.75.0.101:8077"

Version:

2016/01/24 16:07:48 FileInput: end of file

3.另一种引流方式:tcpcopy

机器资源多, gor 只需在生产环境机器使用,“tcpcopy 运行需要 intercept 的支持,tcpcopy 负责抓包和发包工作,而 intercept 负责截获应答包”,需要单独一条机器作为 intercept, assistant server(运行 intercept 的机器)原则上必须要和测试服务器(test server)在同一个网段。

配置较复杂,gor 只需一条命令就能解决问题,tcpcopy 由 3 部分组成,(1).online server(2).Test Server(3).Assistant Server

实例 (tcpcopy1.0 系列使用方法):

在线 adserver 有 2 台,主要供 nginx 调用,所以客户端 IP 地址来自于 nginx 所在机器的 IP 地址,均为同一网段的 IP 地址。

我们假设在线 adserver 机器为 10.100.10.1,10.100.10.2,nginx 所在的机器 ip 地址为:10.100.10.11,10.100.10.12,10.100.10.13,

测试服务器有 10.100.10.31,10.100.10.32(辅助服务器)

其中,10.100.10.31 运行着类似在线 adserver 的应用,端口为 11511,而在线应用端口是 11311

我们在 10.100.10.31 上面添加如下路由:

route add -host 10.100.10.11 gw 10.100.10.32

route add -host 10.100.10.12 gw 10.100.10.32

route add -host 10.100.10.13 gw 10.100.10.32

这里的意思就是说,在测试服务器 10.100.10.31 返回给客户端 10.100.10.11~13 的响应走默认网关 10.100.10.32,但 10.100.10.32 机器其实并没有开启路由模式,所以这些响应包到了 10.100.10.32 机器后,会在 ip 层被 drop 掉,留给我们的机会就是可以在 10.100.10.32 的数据链路层抓到这些响应包。

我们在 10.100.10.32 机器(辅助服务器)上面运行 intercept,用来捕获响应包,命令如下:

执行 intercept 命令(需要 root 权限):

./intercept -i eth0 -F 'tcp and src port 11511' -d

我们在在线机器上面运行 tcpcopy(root 权限):

./tcpcopy -x 11311-10.100.10.31:11511 -s 10.100.10.32 -d

这里 tcpcopy 的含义是复制在线 11311 端口的数据包到 10.100.10.31 上面的 11511 端口中去,-s 指定运行 intercept 所在机器的 ip 地址。

gor 现只支持根据离线文件(--input-file),加速请求;tcpcopy 支持在线流量放大(-n)。

linux网络引流工具,gor 引流快速入门相关推荐

  1. 独立站运营指南:引流工具和引流方法都有哪些?

    近几年,独立站越来越频繁地被人们提起,甚至可以说跨境电商人都不会不知道独立站地存在.那独立站应该如何运营呢? 卖家们如何利用好各平台的优势做好引流以达到更高的转化率?类似这样的问题也成为了不少跨境电商 ...

  2. HTTP引流工具Gor快速入门

    0.背景 校验系统的正确性和可靠性时,仅靠用例场景无法覆盖全生产环境下的所有场景,需要一套引流工具,在系统正式上线前,用线上的请求测试待上线系统,在正常请求下,是否有报错:在数倍请求下,系统的性能瓶颈 ...

  3. Linux网络性能评估工具iperf 、CHARIOT测试网络吞吐量

    目录 一. Iperf能做什么 1.TCP方面 2.UDP方面 二. Iperf的安装与使用 1.安装iperf 2.iperf参数介绍 三. Iperf应用实例 1.测试TCP吞吐量 2 . 测试U ...

  4. 性能之巅:Linux网络性能分析工具-netstat,ifconfig,nicstat,traceroute,tcpdump

    原文地址:http://www.infoq.com/cn/articles/linux-networking-performance-analytics 本文介绍基于Linux操作系统的网络性能分析工 ...

  5. 性能之巅:Linux网络性能分析工具

    编者按:InfoQ开设新栏目"品味书香",精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大家关注.本文节选自格雷格著<性能之巅:洞悉系统.企业与云计算>中 ...

  6. 1 linux网络诊断命令工具

    网络故障排除工具 : 1.Nmap 2.Netstat 3.tcpdump 4.Ping 5.TRACERT和Traceroute 6.My Traceroute (MTR) 7.Mockoon 8. ...

  7. linux网络95值工具,Linux下网络故障排查工具之ping|traceroute和tcptraceroute|mtr工具

    服务器运维人员在日常运维服务器的过程中经常会遇到服务器网络故障,有服务器硬件造成的,也有服务商网络问题造成的,也有区域网络问题造成的,这个时候就需要用到ping,traceroute,mtr这三个命令 ...

  8. linux网络流量监测工具,linux下网络流量监控工具

    今天QA同学让我协助检测下一台服务器的网络流量.没干过这活,在网上随便找了个命令.后来,发现是不对的,为了以后不出丑,决定收集下网络流量监测相关的工具. 查看某个网卡收发数据的总量 方法一 方法二 2 ...

  9. Linux 网络编程详解四(流协议与粘包)

    TCP/IP协议是一种流协议,流协议是字节流,只有开始和结束,包与包之间没有边界,所以容易产生粘包,但是不会丢包. UDP/IP协议是数据报,有边界,不存在粘包,但是可能丢包. 产生粘包问题的原因 1 ...

最新文章

  1. 为什么Python类语法应该不同?
  2. php军事网站源码,军事网站的设计与实现(PHP+MYSQL)(含录像)
  3. 史上最详细 DevC++无法运行正则表达式
  4. lamp中php怎么连接mysql_LAMP分离安装环境下,php无法连接mysql的问题
  5. 华为怎么查看手机温度_如果你的华为手机拿去维修,记得打开这个功能,防止秘密被查看...
  6. mysql日常工作中批量插入效率问题
  7. 软件开发人员的简历项目经验怎么写?
  8. 平均值、中位数、众数等统计特性的matlab求解与示例
  9. Part 66 - Check及Uncheck所有CheckBox 同时删除多行数据记录的实现
  10. 流式数据传输 php,PHP录制实时流式传输到文件
  11. 一键删除QQ空间说说、日志Js脚本
  12. 孩子给产品经理的一堂课
  13. 如何解决移动硬盘/U盘无法打开并在电脑上显示为“本地磁盘”的问题
  14. 用html js制作迷宫,JavaScript生成随机迷宫详解
  15. 支持向量机(SVM)MATLAB 实例讲解,及选择训练方式使误差率尽可能减为0
  16. 25个常用的防火墙规则
  17. 【CSDN】【自用】CSDN操作
  18. docker 入门 —— docker 镜像命令
  19. 利用LDA分析《天龙八部》中每十回的话题演变情况
  20. ZO1X(功能安全验证)介绍

热门文章

  1. 新唐单片机移植RT-Thread,Finsh组件的接口函数编写
  2. 红警ol服务器维护中1003,不止于经典,全球唯一正版授权《红警OL》登录UP2018腾讯新文创生态大会...
  3. 统计英文字数c语言,用C语言作纯英文字数统计
  4. NPT 时间服务实战
  5. 每日学习 与 每日未知
  6. Android精通教程V
  7. 使用NFC tool工具将加密门禁卡写入小米手环步骤详解
  8. 如何替换 JavaScript 中所有出现的字符串
  9. poi word转html 支持表格、图片、样式
  10. 数据库异常状态:Recovery Pending,Suspect,估计Recovery的剩余时间