测试机房质量之上传下载速率测试

之前介绍了通过Ping值来测试机房质量,但这仅仅是测试的一部分。我们想要考察机房是否符合自己的业务需求,它的线路情况好不好,稳定不稳定,则还是需要测试它的上传下载速率情况。
由于前面的文章我有介绍虚拟用户的vsftp部署,在这里正好可以用上,我们就用FTP来进行测试,而vsftp的日志里面的信息足以归纳出我们想要的结果。首先我们来根据一个基本的环境来做测试前的准备工作。假设我们全国选了10个机房,这些工作可能是要在每个机房提供的测试服务器上都要做的。
1. 建立500M测试文件
admin用户来测试。
ftpadmin用户的家目录下创建500M文件
dd if=/dev/zero of=/home/ftpsite/admin/bigfile bs=1M count=500
 
2. 创建脚本(大家可以根据自己的情况修改)
vi lftpshell
#!/bin/bash
ftp_server="192.168.18.9"  目的Ftpserver IP地址
username="admin"  用户名
password="1"       密码
download_file_name=""  要下载的文件名
lftp <<!
open ftp://${ftp_server} -p 21 -u ${username},${password}   # -p 制定端口,和你ftp监听的端口保持一致
lcd /root/  本地目录
#mput a b
get $download_file_name   
rm -f $download_file_name  
put $download_file_name  
exit
!
rm -f "/root/ ${download_file_name}"  删除从ftp上下载到本地目录的文件
3. 设置到crontab中自动运行
vi /etc/crontab
编辑crontab,加入
0 */1 * * * root sh /root/software/lftpshell  表示每隔一小时,在整点钟运行 lftpshell 脚本。
 
4. 定时查看ftp日志文件
more /var/log/vsftpd.log
 
 
 网通,电信FTP互测
    在测试中我们可能会遇到这样的问题,例如我们在测试北京网通的一个机房时,我们会让他去全国各个我们选择的待测机房节点去上传和下载我们事先创建好的测试文件。这样就可能出现一个问题,比如我们的测试文件大小是1000M,我们的测试周期为一小时,也就是每隔一小时会测不同的机房,这时候你会发现,网通连网通的时候,这个1000M的测试文件可能10分钟就上传或下载完了,而网络连电信的时候即使1个小时的时间也未必能完成测试过程,这样就会影响了连接下一个机房的测试,从而使整个测试出现混乱,所以我们要针对这种情况做一些修改。
1.      建立测试文件
admin用户来测试。
为了避免跨网连接时速率较慢,上传和下载测试文件分别分为两个来创建
1.1 创建用于下载的文件(ftp服务器端创建)
ftpadmin用户的家目录下创建1000M文件(用于电信连电信或网通连网通时所要下载的)
dd if=/dev/zero of=/home/ftpsite/admin/test.txt bs=100M count=10
再创建一个10M的文件(用于电信连网通或网通连电信时所要下载的)
dd if=/dev/zero of=/home/ftpsite/admin/test1.txt bs=1M count=10
1.2  创建用于上传的文件(可以任意指定目录,最后和脚本中的本地目录对应即可,在ftp客户端创建)
root家目录下创建1000M文件(用于电信连电信或网通连网通时所要上传的)
dd if=/dev/zero of=/root/hello.txt bs=100M count=10
再创建一个10M的文件(用于电信连网通或网通连电信时所要上传的)
d dd if=/dev/zero of=/root/hello1.txt bs=1M count=10
 
2. 创建脚本
这里以电信IDC上的脚本为例
vi lftpshell_dianxin  (用于连接电信服务器的脚本)
#!/bin/bash
ftp_server="192.168.18.9"  目的Ftpserver IP地址
username="admin"  用户名
password="1"       密码
download_file_name="test.txt"  要下载的文件名(1000M的)
upload_file_name="hello.txt" 要上传的文件名 1000M的)
lftp <<!
open ftp://${ftp_server} -p 21 -u ${username},${password}   # -p 制定端口,和你ftp监听的端口保持一致
lcd /root/   本地目录
#mput a b
get $download_file_name    下载指定文件
put $ upload_file_name      上传指定文件
rm -f $ upload_file_name     最后删除上传后的文件
exit
!
rm -f "/root/ ${download_file_name}"  删除从ftp上下载到本地目录的文件
 
 
 
vi lftpshell_wangtong  (用于连接网通服务器的脚本)
#!/bin/bash
ftp_server="192.168.18.7"  目的Ftpserver IP地址
username="admin"  用户名
password="1"       密码
download_file_name="test1.txt"  要下载的文件名 10M的)
upload_file_name="hello1.txt" 要上传的文件名 10M的)
lftp <<!
open ftp://${ftp_server} -p 21 -u ${username},${password}   # -p 制定端口,和你ftp监听的端口保持一致
lcd /root/   本地目录
#mput a b
get $download_file_name    下载指定文件
put $ upload_file_name      上传指定文件
rm -f $ upload_file_name     最后删除上传后的文件
exit
!
rm -f "/root/ ${download_file_name}"  删除从ftp上下载到本地目录的文件
 
3. 设置到crontab中自动运行
vi /etc/crontab
编辑crontab,加入
0 */1 * * * root sh /root/software/lftpshell_dianxin  表示每隔一小时,在整点钟运行 lftpshell_dianxin脚本。
30 */1 * * * root sh /root/software/lftpshell_wangtong  表示每隔一小时,在半点钟运行lftpshell_wangtong 脚本。
 
 
 
网通,电信FTP互测(匿名登录)
当然也不需要非得用虚拟用户的vsftp,我们用匿名的FTP也可以测试,大家可以根据情况来自己选择,下面就来介绍一下:
1.      yum安装vsftp
yum install vsftpd
 
2.      配置匿名FTP
vi /etc/vsftpd/vsftpd.conf
修改配置文件
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
listen=YES
pasv_min_port=50000
pasv_max_port=60000
pasv_enable=yes
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
ftp_username=ftp
 
vi /etc/sysconfig/iptables
添加:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # 21是监听端口,在vsftpd.conf中设置的listen [端口]对应
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50000:60000 -j ACCEPT #传输数据用50000----60000之间的端口 vsftpd.conf中的pasv_min_port=50000 pasv_max_port=60000 对应
重启iptables
 
3.      建立服务器端测试文件
匿名登录默认目录是/var/ftp/,为了提供上传权限需进入pub目录下创建测试文件,因为默认/var/ftp/目录没有上传权限
3.1 创建用于下载的文件(ftp服务器端创建)
/var/ftp/pub/下创建1000M文件(用于电信连电信或网通连网通时所要下载的)
dd if=/dev/zero of=/var/ftp/pub/admin/test.txt bs=100M count=10
再创建一个10M的文件(用于电信连网通或网通连电信时所要下载的)
dd if=/dev/zero of=/var/ftp/pub/admin/test1.txt bs=1M count=10
 
4.      建立匿名ftp脚本
#!/bin/bash
ftp_server="121.14.34.52"    
username="ftp" 用户名为ftp
password="" # 密码为空
download_file_name="test.txt"
upload_file_name="hello.txt"
lftp <<!
open ftp://${ftp_server} -p 21 -u ${username},${password}
lcd /root/ 
cd pub # 进入pub目录下
#mput a b
get $download_file_name
put $upload_file_name
rm -f $upload_file_name
exit
!
rm -f "/root/${download_file_name}"
    这样通过FTP来测试上传下载速率,就可以很直观的看到每个节点,它去连接其他节点时,上传和下载的质量如何。当然机房的最终选择还需要一些指标来考量,大家可以根据实际情况来取舍。