OpenStack網絡測試工具shaker介紹

作者: 趙怡


一、shaker簡介

Shaker是一款在OpenStack環境中使用的網絡性能測試工具, 可針對不同網絡場景進行性能測試。

主要原理是, 通過heat模板創建虛擬機, 並使用虛擬機中的iperf3,netperf工具進行虛擬機間互相打流測試網絡性能, 最終抓取測試結果, 通過網頁方式輸出給用戶。

 

二、shaker安裝

由於shaker依賴於heat編排組件用於自動創建虛擬機和網絡, 所以先要安裝openstack heat組件。

另外, shaker本身可以手動安裝, 也可以通過pip install pyshaker方式安裝

手動安裝

1. 從github上下載shaker軟件源代碼

# git clone https://github.com/openstack/shaker.git

 

2. 安裝shaker時, 爲了依賴包不干擾現有環境的python庫, 可以把shaker安裝在virtualenv中

# pip install virtualenv

# cd shaker

# virtualenv .venv

# source .venv/bin/activate

(.venv) #

(.venv) # yum install gcc libyaml zeromq-devel -y

(.venv) # pip install pytz functools32

(.venv) # pip install -r ./requirements.txt

(.venv) # python ./setup.py install

 

3. 創建shaker要使用到的定製image

這裏會連接到客戶的openstack,自動生成shaker-flavor以及通過heat模板創建一個shaker會使用到的image(通過創建虛擬機, 執行下載/安裝腳本, 然後創建快照方式生成image),image中會下載iperf/netperf工具, 以及通過pip安裝pyshaker-agent代理。

由於涉及到下載, 安裝, 需要保證您的openstack中的外部網絡可以訪問外網。

(.venv) # source admin-openrc.sh

(.venv) # shaker-image-builder

 

4. 運行shaker, 這裏會使用heat根據用戶指定的場景創建一堆虛擬機, 並在虛擬機上執行shaker-agent來執行測試操作。結果輸出到report中。

(.venv) # shaker --server-endpoint 10.65.1.49:8033 --scenario /root/shaker/shaker/scenarios/openstack/full_l2.yaml --report ./shaker_report.html

 

5. 測試結果樣例如下:

測試結果


三、shaker原理

製作Shaker-Image

命令:shaker-image-builder; 命令會執行默認配置,如果需要改變配置 (比如選擇不同的虛擬機鏡像模板)可以用 --help

創作shaker-image的過程實際上是調用heat建立一個stack, 利用配置userdata文件,在鏡像模板啓動虛擬機時,將pyshaker-agent,iperf, netperf這些測試工具都安裝在虛擬機裏。

由於Shaker這個項目還不成熟,可以利用devstack環境,將shaker-image先創建,然後註冊到測試環境的glance裏面,然後創建一個合適的shaker-flavor, 這樣可以避免很多錯誤。

 

具體原理

這個命令底層就調用了一個Python函數,“shaker/engine/image_builder.py”中的“build_image” 函數。

Shaker提供了三種製作“shaker-image”鏡像的模板:centos、debian、ubutnu,默認使用ubuntu,可以使用“--image-builder-template ”參數指定使用哪個鏡像,使用哪個鏡像對Shaker來說都一樣,Shaker在乎的是鏡像中的pyshaker-agent、iperf、netperf、flent工具,換句話說,“鏡像中只要有這幾款工具,任何系統都可以實現!”

“build_image”函數會創建名字爲“ shaker-flavor”的Flavor(1vcpu、512mb memory、3g disk),以及名字爲“shaker-image”的Glance鏡像,Shaker創建鏡像底層使用的技術是Heat,“build_image”函數讀取“shaker/resources/image_builder_templates/ ”目錄下的模板文件,默認是Ubuntu,然後由Heat創建需要的Network、Router,下載原始鏡像,然後通過“cloud-init”工具,安裝Shaker需要的工具,“build_image”函數會等待虛擬機關機,最後創建虛擬機的快照,上傳到Glance中。

“build_image”函數創建鏡像之前會檢查Glance是否存在名爲“shaker-image”的鏡像和名爲“shaker-flavor”的Flavor,如果已經存在,就不會再次創建了,所以不管使用哪個原始鏡像創建“shaker-image”鏡像,都只會創建一個不會重複。例如第一次使用Ubuntu,那麼第二次使用“centos、shaker-image-builder ”命令會直接返回!

 

測試
shaker --output output.json --verbose --server-endpoint 10.2.17.2:9999--scenario openstack/full_l2
--output 指定把Raw格式的報告存放到哪個文件
--server-endpoint 指shaker server運行時監聽的IP地址和端口,端口隨意,不衝突即可,虛擬機中的“shaker-agent”會連接到這個socket上,和shakerserver通訊,由shaker告知需要測試的項目以及相關節點信息(如IP)
--scenario Shaker 項目提供多種場景的模板進行測試,詳細可以查看
https://github.com/openstack/shaker/tree/master/shaker/scenarios/openstack

注:  由於Shaker相對於其他Rally等測試工具來講,操作,原理等都比較複雜,測試中外部依賴比較多,項目也不是很成熟。所以,可以先用Docker將所有依賴包括shaker-image,shaker-flavor全部打包,在到測試環境測試,這樣相對比較簡單,如果需要還可以,寫一些自動化腳本,將shaker-image, shaker-flavor這些自動註冊到測試環境的glance nova中,並簡化測試步驟。

 

四、常見問題

1. 如在shaker-image虛擬機中運行shaker-agent碰到問題: ImportError: version conflict:'/usr/lib64/python2.7/site-packages/psutil/_psutil_linux.so' C extension modulewas built for another version of psutil (different than 2.2.1)

通過以下操作解決: sudopip install psutil==2.2.1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章