kolla-ansible-----rally模組

秦廣王發表於2019-05-30

Rally簡介

Rally是OpenStack社群推出開源測試工具,可用於對OpenStack各個元件進行效能測試。

通過使用Rally元件,使用者可完成OpenStack雲端計算平臺的安裝部署、功能驗證、大規模負載測試(效能測試)、輸出測試報告等一系列動作。

Rally安裝

在icos環境中,直接在globals.yml中開啟rally。

enable_rally: "yes"

然後tag安裝部署即可。

如果是效能測試設計主機關閉等操作,建議rally安裝在一臺非測試節點的機器。

安裝完優化一下引數,rally配置檔案位置:/etc/rally/rally.conf

預設註釋所有選項,測試中遇到如下問題:

  1. 獲取例項狀態超時
  2. 連線超時

做如下設定,避免超時影響測試結果,時間設定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檔案。展示效果如下:

 

相關文章