以前见客户经常会碰到一些客户问我们你们Azure的带宽是多少,每次回答这个问题我们只能含糊地告诉客户一个大概数值,这样就会留给客户一个认为我们很不专业的印象,其实站在客户的角度我们也能理解,连这样的一个问题你都不能准确回答,我怎么能相信你能帮我运维,所以我与我同事抽空实测了一下,在这里我重点阐述如何进行测试,而不是对测试结果进行分析!!!

测试条件,Azure中国区域的账号

在测试之前,我想和读者稍微讲解一下本次的测试环境以及本次测试所用到的工具,本次的测试工具为iperf,具体版本为iperf3.1.3

第一步,登陆账号,创建虚拟机,有两种创建方式,第一种是通过portal创建,另一种是通过powershell创建,创建虚拟机的步骤这里就不再演示,如果有不会的读者可以翻看我前面的博文进行参考,在本次poc环境里,我们以一台东部区域的D4虚拟机作为server端,4台北部A1作为client端,OS都为centos7.2,架构图如下;

在这里笔者要说一下,之所以要将server端和client端放在不同的地域,是因为如果server端和client端都在同一个区域的话,两端的流量传输是不能出数据中心的,因为数据中心的边缘网关收到数据包,会拆包查看destination IP,如果发现该IP地址就在该数据中心内,边缘网关会直接将数据包丢给该IP地址的虚拟机,所以数据包不能出数据中心,其实大多数的网络带宽的瓶颈都在公网上,而不是内网,所以笔者的建议是如果有条件最好用本地服务器与Azure数据中心上的虚拟机做测试,由于笔者缺少本地服务器,也比较懒得去搭建环境,这里就在北部建了四台虚拟机作为client,数据包直接在连接两个数据中心的裸光纤进行传输,即便如此,iperf也不能将宽带吃满,所以并不能测出准确的结果,如果想测吃满裸光纤可以用Azcopy来进行测试,所以这里更偏向于方法论的展示,实际意义不大。

按照架构图建立好虚拟网络与虚拟机,结果如下

接下来的工作就是安装iperf,我们首先通过SSH远程登陆到所有虚拟机,在安装iperf之前需要确保虚拟机OS都已经安装好make和gcc,由于Azure所提过的OS都是base版,所以大多数都需要我们自己安装

在于server端,我们通过SSH登陆以后

输入sudo yum install gcc  看到如下结果

此时server端的gcc就安装成功了,接下来安装make

输入sudo yum install make,结果如下

表明make已经存在了,不必再去安装

client端的操作也是一样,这里就不再一一展示

接下来的工作就是下载并解压iperf源码包

在server端,输入如下命令

$sudo cd /tmp
$sudo wget http://downloads.es.net/pub/iperf/iperf-3-current.tar.gz
$sudo tar zxvf iperf--current.tar.gz

完成以上步骤会在/tmp目录下看到如下结果

接下来安装iperf

$sudo cd iperf-3.1.4/
$sudo ./configure
$sudo make
$sudo make install

安装成功后,iperf被安装在/usr/local/bin目录下,进入该目录可以看到如下结果

如果iperf运行报以下错误

iperf3: error while loading shared libraries: libiperf.so.: cannot open shared object file: No such file or directory

输入Idconfig即可解决

client端的安装方法同server端,这里就不再详细介绍

这样,所有的虚拟机的iperf都安装好了,有人不禁会问,这样就好了嘛,当然不是,还有非常重要的一步,就是修改访问规则,因为两端有防火墙规则,必须修改完以后才能使用iperf进行测试,测试的时候我们要指定iperf server端监听的端口,这里设定为TCP-5001,在防火墙上就要开启TCP-5001端口相应的访问规则,在ASM中,我们需要配置终结点,在ARM中,需要配置NSG,由于本次poc环境都是在ARM中部署的,所以我们需要修改NSG,其实笔者的建议是最好都使用ARM,毕竟ARM多了很多功能,有些功能甚至已经不需要在powershell上完成,直接可以在ARM中完成。

具体修改规则如下

在server端的NSG添加如下规则

接下来就可以开始测试了,首先我们在server端输入如下命令来监听5001端口,每两秒输出一次结果;

$iperf3 -s -p 5001 -i 2 

看到如下结果,表示iperf运行正常

接下来就等待client端开始测试了,在client端输入如下命令

$iperf3 -c 139.219.229.18 -P 4 -t 30 -i 2 -p 5001

这条命令的意思就是client端并发4个数据流,测试时间为30s,每2s输出一次结果

首先我们看client vm1,截图如下

serverD4端截图结果如下

通过以上截图,我们可以看到带宽在120Mb左右,在这里笔者要提醒一下,四个client端只能轮流测试,也就是说当client vm1在测试时,其它client端是不能进行测试的,即使输入命令也不能正常进行测试,因为server端口处于busy状态,会出现如下截图

在这里,其它client端的截图就不再展示,因为测试下来的带宽相对保持稳定,所以就不再展示截图,最后想提醒大家一下,因为该测试会产生流量的费用,所以在测试之前需要做好准备

最新文章

  1. LeetCode---Stack && Heap
  2. 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
  3. 阿里巴巴SUI Mobile的使用
  4. [C#]递归遍历文件夹
  5. angular-ui-bootstrap插件API - Pagination
  6. iOS开发——单例模式
  7. cmd中mysql主键id自增,在添加信息时发生错误,再次成功添加时,id已经跳过错误的信息继续自增。
  8. ARM 汇编指令 DCD
  9. crontab自动失效注意事项
  10. sqlalchem表关联(一对多,一对一,多对多)
  11. linux 执行脚本
  12. git 和 github 链接
  13. 微信小程序 - 自定义tabbar(组件)
  14. 2115: [Wc2011] Xor
  15. GlusterFS学习之路(一)GlusterFS初识
  16. 32.Longest Valid Parentheses---dp
  17. 用vue开发顶端粘滞效果的页面
  18. 80211N、80211AC建链速率值(对应MCS)
  19. pg_stat_activity存储postgresql当前连接个数
  20. GMchess Linux下的中国象棋游戏

热门文章

  1. 发一份shiro标准配置,特此记录
  2. 3.开发Java消息驱动bean实例代码
  3. 用extract-text-webpack-plugin提取出来的css文件中背景图片url的不正确的问题
  4. Linux Linux程序练习十八
  5. [转载]一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
  6. C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
  7. git提交时支持文件名大小写的修改
  8. RSA加密算法的java实现
  9. css的继承性
  10. jquery-leonaScroll-1.1-自定义滚动条插件