以前见客户经常会碰到一些客户问我们你们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端的截图就不再展示,因为测试下来的带宽相对保持稳定,所以就不再展示截图,最后想提醒大家一下,因为该测试会产生流量的费用,所以在测试之前需要做好准备

关于Azure带宽的测试的更多相关文章

  1. Windows Azure HandBook (6) Azure带宽与Azure Blob云存储

    <Windows Azure Platform 系列文章目录> 在笔者这几年Azure售前工作中,经常会遇到客户提同样的问题:Azure 虚拟机的带宽是多少?Azure提供独享带宽吗?这个 ...

  2. Azure 带宽

    Azure带宽与Azure Blob云存储 http://www.cnblogs.com/threestone/p/4497625.html

  3. Windows Azure HandBook (10) 测试本地网络到微软云的延迟

    <Windows Azure Platform 系列文章目录> 之前遇到一些微软云的客户,在使用海外数据中心的时候,需要评估本地网络到微软云网络的延迟. 我们建议部署到微软云上的服务,离最 ...

  4. Azure Devops/TFS测试管理(下)

    紧接着 上篇 经过上篇折腾,我们已经有了: ①手工测试的流程规范 ②测试用例的管理 对于开发出身的我,我觉得一个项目上线流程应该主要瓶颈只能是开发本身,因为我认为最复杂过程应该就是开发,而肯定不能是测 ...

  5. 在jmeter测试中模拟不同的带宽环境

    怎么去测试在手机app中和在web的不同的连接速度对服务器的影响呢? 大部分情况下,手机终端用户通过移动网络访问网站.所以在不同的网络连接数据下,我们的网站或程序可以同时处理多少链接?今天,这篇文件就 ...

  6. linux测试带宽命令,Linux服务器网络带宽测试iperf

    linux测试带宽命令,Linux服务器网络带宽测试iperf必须先运行iperf serveriperf -s -i 2客户端iperf -c 服务端IP地址 iperf原理解析 iperf工具可以 ...

  7. 测试linux服务器带宽

    测试准备 1. 计划考量参数 TCP上传数据带宽 TCP下载数据带宽 UDP上传带宽 UDP下载带宽 多并发支持 稳定性 Tcp通讯网络延迟(小包:32.中包1k.大包1M) UDP通讯网络延迟(小包 ...

  8. 使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署

    1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...

  9. 集群搭建完成简要测试集群(性能)带宽与IOPS

    集群搭建好之后网络,raid卡策略,磁盘都会影响集群的性能.为了避免因上述问题使得集群的性能受到影响,我们依次进行测试,最后得到基本的集群性能. 网络 首先是网络,ceph集群一大堆让人摸不着头脑的问 ...

随机推荐

  1. 【问题&解决】fonts/fontawesome-webfont.woff2 404 (Not Found)

    问题: 虽然网页正常显示和运行,但是有2个字体文件出现404错误.像笔者这种强迫症是接受不了的. 解决: 因为笔者的服务器是虚拟主机,只需要在主机控制器平台添加对应的MIME类型即可. 这样服务器就支 ...

  2. LoadRunner录制Web协议的脚本 (by网络)

    LoadRunner录制Web协议的脚本  http://itindex.net/detail/50530-loadrunner-web-脚本

  3. NOIP2008双栈排序[二分图染色|栈|DP]

    题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...

  4. CODEVS3037 线段覆盖 5[序列DP 二分]

    3037 线段覆盖 5   时间限制: 3 s   空间限制: 256000 KB   题目等级 : 钻石 Diamond 题解       题目描述 Description 数轴上有n条线段,线段的 ...

  5. java之多线程 二

    线程的生命周期: 当线程被创建并被启动时,它既不是一启动就进入了执行状态,在线程的生命周期中,它要经过new(新建),就绪(Runnable),运行(Running),阻塞(Blocked),dead ...

  6. LeetCode "419. Battleships in a Board"

    The follow-up question is fun: "Could you do it in one-pass, using only O(1) extra memory and w ...

  7. 如何删除datatable中的一行数据

    在C#中,如果要删除DataTable中的某一行,大约有以下几种办法: 1,使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(ind ...

  8. web前端

    设置透明: filter: alpha(opacity=70); opacity: 0.7; 设置文字与文字之间的间隙 letter-spacing: 5px; 设置单词与单词之间的间隙 word-s ...

  9. JS系列——Linq to js使用小结

    前言:前面几篇介绍了下C#基础技术中的几个:反射.特性.泛型.序列化.扩展方法.Linq to Xml等,本来还有两三个知识点没有写完,比如委托.多线程.异步等,后面会陆续将它们补起来,以便作为一套完 ...

  10. MVC之前的那点事儿系列(8):UrlRouting的理解

    文章内容 根据对Http Runtime和Http Pipeline的分析,我们知道一个ASP.NET应用程序可以有多个HttpModuel,但是只能有一个HttpHandler,并且通过这个Http ...