写点什么

Bees with Machine Guns

  • 2019-11-20
  • 本文字数:2438 字

    阅读完需:约 8 分钟

Bees with Machine Guns
(可用于测试AWS ELB、EC2、Auto Scaling、HA)


![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-1.jpg)
一群勤劳的小蜜蜂
很多时候我们需要进行负载均衡、Web服务器的并发式压力测试,但像Siege, JMeter等工具都是从一个源IP地址发送流量,这不能很好的模拟出对负载均衡的实际压测效果。这里将详细介绍如何快速部署一个分布式压测工具Bees with Machine Guns,模拟一组不同的IP(可自定义)地址进行压测,这可更加准确的模式实际生产场景。
(注:请合理、正确使用此工具,核对你要压测的目标,避免造成不必要的“攻击”行为。)
接下去将手把手教你如何快速搭建一组分布式的“勤劳的小蜜蜂”。
1. 启动Ubuntu EC2(Amazon Linux机器也支持)
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-2.jpg)
启动成功
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-3.jpg)
2. 连接启动完成的实例,例如
ssh -i “ubuntu-instance.pem” [](mailto:ubuntu@ec2-54-201-96-220.us-west-2.compute.amazonaws.com)
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-4.jpg)
3. 运行sudo apt-get install python-paramiko git
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-5.jpg)
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目录下。如果没有成功,请再次确认自己所在路径)
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-6.jpg)
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.
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-7.jpg)
看到这里说明4台EC2实例都已经正常启动了!
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-8.jpg)
8. 可以看一下目前启动的report
ubuntu@ip-10-200-1-230:~$ bees report
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-9.jpg)
9. 开始“压测”,这里假设压测ELB
bees attack -n 100 -c 4 -k Internal-Amazon-Linux -u http://mylabelb-XXXXXX.us-west-x.elb.amazonaws.com/
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-10.jpg)
**这个时候发现报错!**
这里注意,需登到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
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-11.jpg)
等到所有的a bee!机器都安装完apache2-utials之后,回到bee control机器,再次运行。成功!
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-12.jpg)
此时再通过CloudWatch监控查看ELB请求总数的情况,发现变了。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0926-13.jpg)
说明:这里进行了两次压测,所以会看到监控中两段不同的曲线。
10. 停止“压测” 命令
bees down
此时所有的EC2都会马上处于Terminated状态
附: 源码参考https://github.com/newsapps/beeswithmachineguns
**作者介绍:**
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/Mao+Danrong-mini.png)
毛郸榕
亚马逊AWS中国助理解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广,毕业于北京航空航天大学云 计算专业,硕士,毕业后直接加入亚马逊AWS中国。在大规模后台架构、企业混合IT和自动化运维等方面有着丰富的实践经验。目前在集中精力学习新一代无服务器架构设计。
复制代码


TAGS:


其他


,


流量压测工具


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/bees-with-machine-guns/


2019-11-20 08:00401

评论

发布
暂无评论
发现更多内容

临床研究方法学,到现场,到数据真实发生的地方 | 对话数智 x 张维拓

ModelWhale

数据分析 人才培养 数据科学 8月月更 临床医学

秒云成功入选《2022爱分析 · 银行数字化厂商全景报告》,智能运维能力获认可

秒云

人工智能 银行数字化转型 智能运维 智能运维AIOps

制作温馨浪漫爱心表白动画特效HTML5+jQuery【附源码】

JavaPub

2022上半年各银行理财子公司深耕差异化发展,净值型产品数量增加

易观分析

银行 子公司 差异化发展 净值型产品

隐私计算与数据流通:关系、作用及功能

Jessica@数牍

隐私保护 隐私计算 数据流通 数据交易 数牍科技

TPC藏宝计划IDO自由协议复利模式开发功能分析

开发微hkkf5566

【黄啊码】MySQL入门—1、SQL 的执行流程

黄啊码

MySQL 8月月更

【黄啊码】MySQL入门—2、使用数据定义语言(DDL)操作数据库

黄啊码

MySQL 8月月更

技术干货 | 用零信任保护代码安全

权说安全

SchedulX V1.5.0发布,提供快速压测、对象存储等全新功能!

星汉未来

云原生 k8s IT运维 降本增效 星汉未来

企业应当实施的5个云安全管理策略

SEAL安全

云计算 容器 DevOps 云原生 DevSecOps

什么是 DevOps?看这一篇就够了!

胡说云原生

管理 DevOps 运维 开发 签约计划第三季

萌宠来袭,如何让“吸猫撸狗”更有保障?

旺链科技

区块链 产业区块链 宠物行业

AI 助力双碳目标:让每一度电都是我们优化的

阿里技术

人工智能

活动报名:如何高效应对当下的实时场景需求?

tapdata

Tapdata 实时数据

JS逆向字体反爬,某供应商平台反爬实践

梦想橡皮擦

Python 爬虫 8月月更

什么是 DevOps?看这一篇就够了!

玩转Devop和研发效能DevStream/DevLake

DevOps

Java使用IReport导出复杂报表

源字节1号

微信小程序 软件开发 前端开发 后端开发

直播回放含PPT下载|基于Flink & DeepRec构建Online Deep Learning

阿里云大数据AI技术

深度学习

如何过一个充满科技感的七夕?华为告诉你

最新动态

Tapdata 开源项目基础教程:功能特性及实操演示

tapdata

Tapdata 开源社区

Bees with Machine Guns_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章