Rally簡介
Rally是OpenStack社群推出開源測試工具,可用於對OpenStack各個元件進行效能測試。
通過使用Rally元件,使用者可完成OpenStack雲端計算平臺的安裝部署、功能驗證、大規模負載測試(效能測試)、輸出測試報告等一系列動作。
Rally安裝
在icos環境中,直接在globals.yml中開啟rally。
enable_rally: "yes"
然後tag安裝部署即可。
如果是效能測試設計主機關閉等操作,建議rally安裝在一臺非測試節點的機器。
安裝完優化一下引數,rally配置檔案位置:/etc/rally/rally.conf
預設註釋所有選項,測試中遇到如下問題:
- 獲取例項狀態超時
- 連線超時
做如下設定,避免超時影響測試結果,時間設定1800s:
[DEFAULT] openstack_client_http_timeout = 1800.0 [benchmark] cinder_volume_create_timeout = 1800.0 cinder_volume_delete_timeout = 1800.0 nova_server_boot_timeout = 1800.0 nova_server_boot_timeout = 1800.0
rally使用
建立Deployment
對於已經安裝部署了OpenStack系統,有兩種方式建立deployment
1) 使用環境變數建立
(rally)[root@node135 ~]# more openrc export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=xxxx export OS_AUTH_URL=http://100.2.28.139:35357 #生效一下 source openrc #建立 rally deployment create --fromenv --name=existing
2) 使用json檔案建立
rally deployment create--file=existing.json --name=existing
existing檔案模板預設位置/rally-openstack/samples/deployments
existing.json檔案內容如下:
{ "type":"ExistingCloud", "auth_url": "http://10.25.*.*:35357/v3", "region_name":"RegionOne", "endpoint_type":"public", "admin": { "username":"admin", "password": "****", "tenant_name": "admin" }, "users": [ { "username": "nsp_test_1", "password":"password", "tenant_name":"nsp_tenant_1" }, { "username":"nsp_test_2", "password":"password2", "tenant_name":"nsp_tenant_2" } ] }
檢視所有的deployment列表
rally deployment list
檢視已經建立的deployment詳情
rally deployment show existing
檢查deployment
rally deployment check
檢查建立的deployment各項服務是否正常,以下是執行結果
執行Task
Task是Rally執行的一個測試單元,執行Task時需要指定入口檔案,可以是json檔案或者yaml檔案
如下是執行形式:
rally task start /rally-openstack/samples/tasks/scenarios/nova/boot_ljy.yaml
常用的場景
預設場景模板位置 /rally-openstack/samples/tasks/scenarios
建立與刪除虛擬機器
boot-and-delete.yaml {% set flavor_name = flavor_name or "m1.tiny" %} #資源規格 --- NovaServers.boot_and_delete_server: - args: flavor: name: "{{flavor_name}}" image: name: "TestVM" #映象名稱 force_delete: false runner: type: "constant" times: 10 #測試次數 concurrency: 2 #併發數 context: users: tenants: 3 users_per_tenant: 2 sla: failure_rate: max: 0 - args: flavor: name: "{{flavor_name}}" image: name: "TestVM" auto_assign_nic: true runner: type: "constant" times: 10 concurrency: 2 context: users: tenants: 3 users_per_tenant: 2 network: start_cidr: "192.168.190.0/24" networks_per_tenant: 2 sla: failure_rate: max: 0
建立雲盤
(rally)[root@control01 ljy]# more create-volume.yaml --- CinderVolumes.create_volume: - args: size: 1 runner: type: "constant" times: 3 concurrency: 2 context: users: tenants: 2 users_per_tenant: 2 sla: failure_rate: max: 0 - args: size: min: 1 max: 5 runner: type: "constant" times: 3 concurrency: 2 context: users: tenants: 2 users_per_tenant: 2 sla: failure_rate: max: 0
建立與刪除網路
(rally)[root@control01 ljy]# more create-and-delete-networks.yaml --- NeutronNetworks.create_and_delete_networks: - args: network_create_args: {} runner: type: "constant" times: 10 concurrency: 1 context: users: tenants: 3 users_per_tenant: 3 quotas: neutron: network: -1 sla: failure_rate: max: 0
檢視Task
可使用rally task list,來列出已經執行的task
生成Web測試報告
使用rally task report [task_id] --out=[outfile.html]可以生成web格式的測試報告
可能此時的html檔案開啟會有報錯,原因是report.html檔案中使用了一些css、js庫,而這些庫放在了google網站上,因此才會出現這麼奇怪的現象。
需要將report.html裡面如下四行中的libs網址:
<link rel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.1.15-beta/nv.d3.min.css"> <script type="text/javascript"src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script> <script type="text/javascript"src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.13/d3.min.js"></script> <script type="text/javascript"src="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.1.15-beta/nv.d3.min.js"></script>
替換為可以訪問的bootcss靜態庫的libs網址,如下:
<link rel="stylesheet"href="http://cdn.bootcss.com/nvd3/1.1.15-beta/nv.d3.css"> <script type="text/javascript"src="http://cdn.bootcss.com/angular.js/1.3.3/angular.min.js"></script> <script type="text/javascript"src="http://cdn.bootcss.com/d3/3.4.13/d3.min.js"></script> <script type="text/javascript"src="http://cdn.bootcss.com/nvd3/1.1.15-beta/nv.d3.min.js"></script>
之後就可以開啟了。或者直接將report.html模板檔案的對應行修改掉,這樣生成的報告web頁面都會自動替換。
模板檔案位置:/usr/lib/python2.7/site-packages/rally/ui/templates/task/report.html
上面的命令執行成功,可以看到生成的Html檔案,在瀏覽器中可檢視Html檔案。展示效果如下: