測試機房質量之上傳下載速率測試
之前介紹了通過Ping值來測試機房質量,但這僅僅是測試的一部分。我們想要考察機房是否符合自己的業務需求,它的線路情況好不好,穩定不穩定,則還是需要測試它的上傳下載速率情況。
由於前面的文章我有介紹虛擬用戶的vsftp部署,在這裏正好可以用上,我們就用FTP來進行測試,而vsftp的日誌裏面的信息足以歸納出我們想要的結果。首先我們來根據一個基本的環境來做測試前的準備工作。假設我們全國選了10個機房,這些工作可能是要在每個機房提供的測試服務器上都要做的。
1. 建立500M 測試文件
用admin用戶來測試。
在ftp的admin用戶的家目錄下創建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服務器端創建)
在ftp的admin用戶的家目錄下創建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來測試上傳下載速率,就可以很直觀的看到每個節點,它去連接其他節點時,上傳和下載的質量如何。當然機房的最終選擇還需要一些指標來考量,大家可以根據實際情況來取捨。