以前见客户经常会碰到一些客户问我们你们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. MATLAB的一些基础知识

    1.已知a1=sin(sym(pi/4)+exp(sym(0.7)+sym(pi/3)))产生精准符号数字,请回答:以下产生的各种符号数哪些是精准的?若不精准,误差又是多少?能说出产生误差的原因吗? ...

  2. windows 环境下的redis安装

    Redis安装 1.由于是练习,所以就在windows下安装的环境,并没有在LINUX服务器上装,但是知识点是一样的 安装流程: a.下载地址:https://github.com/MSOpenTec ...

  3. block的哪些事 --- 学习笔记十

    //带有自动变量值的匿名函数 //block 与 C语言函数比只有两点不同,1.没有函数名. 2.带有"^". //类似于方法,如B中的值传给A中,在B中,一. 定义 : 二. 实 ...

  4. Codeforces Training S03E01泛做

    http://codeforces.com/gym/101078 和ysy.方老师一起打的virtual 打的不是很好...下面按过题顺序放一下过的题的题(dai)解(ma). A 给两个1~n的排列 ...

  5. 【跟着子迟品 underscore】JavaScript 中如何判断两个元素是否 "相同"

    Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...

  6. SQLite剖析之设计与概念

    1.API 由两部分组成: 核心API(core API)和扩展API(extension API). 核心API的函数实现基本的数据库操作:连接数据库.处理SQL.遍历结果集.它也包括一些实用函数, ...

  7. 使用属性动画 — Property Animation

    属性动画,就是通过控制对象中的属性值产生的动画.属性动画是目前最高级的2D动画系统. 在API Level 11中添加.Property Animation号称能控制一切对象的动画,包括可见的和不可见 ...

  8. C#线程池使用

    bool stop; private void button3_Click(object sender, EventArgs e) { if(button3.Text=="线程池" ...

  9. hbase-0.94 Java API

    Hierarchy For Package org.apache.hadoop.hbase Package Hierarchies: All Packages Class Hierarchy java ...

  10. Java Web的web.xml文件作用及基本配置(转)

    其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...