linux流量压测工具,手把手教你快速部署流量压测工具 – Bees with Machine Guns

(可用于测试AWS ELB、EC2、Auto Scaling、HA)

6e6892eaa1bab80797da33971761f586.png

一群勤劳的小蜜蜂

很多时候我们需要进行负载均衡、Web服务器的并发式压力测试,但像Siege, JMeter等工具都是从一个源IP地址发送流量,这不能很好的模拟出对负载均衡的实际压测效果。这里将详细介绍如何快速部署一个分布式压测工具Bees with Machine Guns,模拟一组不同的IP(可自定义)地址进行压测,这可更加准确的模式实际生产场景。

(注:请合理、正确使用此工具,核对你要压测的目标,避免造成不必要的“攻击”行为。)

接下去将手把手教你如何快速搭建一组分布式的“勤劳的小蜜蜂”。

1. 启动Ubuntu EC2(Amazon Linux机器也支持)

f154fcfd4001f9f0d2558c01a93af32a.png

启动成功

df5e6c0acd1629851055f88d758c0141.png

2. 连接启动完成的实例,例如

cff2d53e5d698c153b22f746a98c6017.png

3. 运行sudo apt-get install python-paramiko git

7d074c4dd1626b6ab7fb465720886bcf.png

4. 进入到/tmp目录,然后下载bees源码,进入到bees目录,通过python安装。

ubuntu@ip-10-200-1-230:~$ cd /tmp

ubuntu@ip-10-200-1-230:/tmp$ git clone git://github.com/newsapps/beeswithmachineguns.git

ubuntu@ip-10-200-1-230:/tmp$ cd beeswithmachineguns

ubuntu@ip-10-200-1-230:/tmp/beeswithmachineguns$ sudo python setup.py install

5. 进入到/home/ubuntu/目录,创建.boto文件

/home/ubuntu/

vim .boto

接着,然后输入credentials相关内容

[Credentials]

aws_access_key_id=AKIAJOSWXXXXXXXXXX

aws_secret_access_key=RI2h19QXXXXXXXXXXXXXXXXXXXXXXXX

[Boto]

ec2_region_name=us-west-2

ec2_region_endpoint=us-west-2.ec2.amazonaws.com

#elb_region_name=us-west-2

#elb_region_endpoint=elasticloadbalancing.us-west-2.amazonaws.com

6. 进入/home/ubuntu/.ssh/目录,上传EC2实例的pem文件。

cd /home/ubuntu/.ssh/ (注意,这个地方一定要确保进入.ssh目录下。如果没有成功,请再次确认自己所在路径)

ceaf345dbc16c2f5d1da9d77890f72ed.png

7. 执行启动“压测”的EC2机器

(1)简单执行:-s代表启动几台a bee!机器,-k代表秘钥的名称(注意,代码中已经带了后缀,所以这里只需要输入名称)

bees up -s 4 -k Internal-Amazon-Linux

(2)带参数执行(推荐使用):

bees up -s 4 -k Internal-Amazon-Linux -z us-west-2a -g HTTP -l ubuntu -i ami-113af271 -t t2.micro

执行结果:会发现启动了4台名称为a bee!的EC2机器。

ubuntu@ip-10-200-1-230:~/.ssh$ bees up -s 4 -k Internal-Amazon-Linux -z us-west-2a -g HTTP -l ubuntu -i ami-113af271 -t t2.microConnecting to the hive.

GroupId found: HTTP

Placement: us-west-2a

Attempting to call up 4 bees.

Waiting for bees to load their machine guns…

.

Bee i-0c8ddc14 is ready for the attack.

Bee i-0d8ddc15 is ready for the attack.

Bee i-0e8ddc16 is ready for the attack.

Bee i-0f8ddc17 is ready for the attack.

The swarm has assembled 4 bees.

27b5a4a08b3477b59ea1c35ea1199d5a.png

看到这里说明4台EC2实例都已经正常启动了!

2d04beb13f83d95a9c7aeca2d8773325.png

8. 可以看一下目前启动的report

ubuntu@ip-10-200-1-230:~$ bees report

7ab16ce7a8e57076a65307ca5c84a5c9.png

9. 开始“压测”,这里假设压测ELB

bees attack -n 100 -c 4 -k Internal-Amazon-Linux -u http://mylabelb-XXXXXX.us-west-x.elb.amazonaws.com/

5ec6c7fe68c91cc6a4a003779098b8e2.png

这个时候发现报错!

这里注意,需登到bee机器,然后在a bee!机器上安装apache2-utils

ubuntu@ip-172-31-29-100:~$ sudo apt-get install apache2-utils

Reading package lists… Done

Building dependency tree

Reading state information… Done

The following extra packages will be installed:

libapr1 libaprutil1

The following NEW packages will be installed:

apache2-utils libapr1 libaprutil1

0 upgraded, 3 newly installed, 0 to remove and 29 not upgraded.

Need to get 244 kB of archives.

After this operation, 877 kB of additional disk space will be used.

Do you want to continue? [Y/n] y

1e2f0759a19ecd06572523551958a621.png

等到所有的a bee!机器都安装完apache2-utials之后,回到bee control机器,再次运行。成功!

2fd7e1761078e4bdaa07f1cdf1d035b2.png

此时再通过CloudWatch监控查看ELB请求总数的情况,发现变了。

1b9fb4624345761cfb8cb1f0a8d7a10b.png

说明:这里进行了两次压测,所以会看到监控中两段不同的曲线。

10. 停止“压测” 命令

bees down

此时所有的EC2都会马上处于Terminated状态

作者介绍:

ae46d186ef11146d1d39cb01c4cf424c.png

毛郸榕

亚马逊AWS中国助理解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广,毕业于北京航空航天大学云 计算专业,硕士,毕业后直接加入亚马逊AWS中国。在大规模后台架构、企业混合IT和自动化运维等方面有着丰富的实践经验。目前在集中精力学习新一代无服务器架构设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestBandwitdth脚本用于测试带宽; //***************************************************************************************** 用法: 1.将“TestBandwidth.tar.gz”脚本copy到服务器上解压后,进入目录; 2.编辑“TestURL.sh”:灌流量; 上行:wget http://*** 下行:post http://*** 3.如果修改了步骤2,执行此步,否则跳过: 修改 TestBandwidth.tar.gz 脚本中的倒5-6行; kill -9 `ps -ef|grep wget|grep http|awk '{print $2}'` //修改kill关键字:grep wget rm zhuxian* //修改rm关键字:zhuxian* 4.修改“bandwidth.sh”:修改检测网卡: netcard=em1 5.使用后台运行命令执行:nohup ./bandwidth.sh (注:停止脚本 pkill -9 bandwidth.sh && pkill -9 wget) 6.查看结果:BandwitdthResult.txt //********************************************************* 测试流量:清空“TestURL.sh”文件时执行就是测试流量 //***************************************************************************************** 脚本说明: 1.调用TestURL.sh脚本启动灌流量操作; 2.等待10s(防止刚开始下载时的流量冲高); 3.取当前网卡已接收的上行、下行流量; 4.等待5s; 5.取当前网卡已接收的上行、下行流量; 6.计算两次取值中间的差值,算平均值; 7.等待10s,开始下一次小循环(循环4次)(一次小循环70s); 8.清除下载进程,清除下载文件,清除下载日志; 9.等待3495s,开始下一次大循环(一次大循环1h);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值