kolla-ansible-----rally模块

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文件。展示效果如下:

 

猜你喜欢

转载自www.cnblogs.com/jinyuanliu/p/10948292.html