OpenStack 二层网络模式下弹性伸缩测试

环境

操作系统:CentOS Linux release 7.5.1804 (Core) OpenStack版本:OpenStack Ocata Allinone 注意事项:packstack安装时开启 heat-cfn,gnocchi,aodh,panko等

测试

环境修改

修改 OpenStack 为二层模式,修改方法这里不在赘述。

过程描述

测试步骤

创建 Stack

使用以下模版创建 Stack

heat_template_version: 2016-10-14
description: Example auto scale group, policy and alarm
resources:
  scaleup_group:
    type: OS::Heat::AutoScalingGroup
    properties:
      cooldown: 300
      desired_capacity: 1
      max_size: 3
      min_size: 1
      resource:
        type: OS::Nova::Server
        properties:
          image: 'xenial-server-cloudimg-amd64'
          metadata: {"metering.server_group": {get_param: "OS::stack_id"}}
          flavor: m1.small
          networks:
            - network: net0
            
  scaleup_policy:
    type: OS::Heat::ScalingPolicy
    properties:
      adjustment_type: change_in_capacity
      auto_scaling_group_id: { get_resource: scaleup_group }
      cooldown: 300
      scaling_adjustment: 1

  scaledown_policy:
    type: OS::Heat::ScalingPolicy
    properties:
      adjustment_type: change_in_capacity
      auto_scaling_group_id: { get_resource: scaleup_group }
      cooldown: 300
      scaling_adjustment: -1

  cpu_alarm_high:
    type: OS::Aodh::GnocchiAggregationByResourcesAlarm
    properties:
      description: Scale up if CPU > 80%
      metric: cpu_util
      aggregation_method: mean
      granularity: 300
      evaluation_periods: 1
      threshold: 80
      resource_type: instance
      comparison_operator: gt
      alarm_actions:
        - str_replace:
            template: trust+url
            params:
              url: {get_attr: [scaleup_policy, signal_url]}
      query:
        str_replace:
          template: '{"=": {"server_group": "stack_id"}}'
          params:
            stack_id: {get_param: "OS::stack_id"}

  cpu_alarm_low:
    type: OS::Aodh::GnocchiAggregationByResourcesAlarm
    properties:
      metric: cpu_util
      aggregation_method: mean
      granularity: 300
      evaluation_periods: 1
      threshold: 10
      resource_type: instance
      comparison_operator: lt
      alarm_actions:
        - str_replace:
            template: trust+url
            params:
              url: {get_attr: [scaledown_policy, signal_url]}
      query:
        str_replace:
          template: '{"=": {"server_group": "stack_id"}}'
          params:
            stack_id: {get_param: "OS::stack_id"}

outputs:
  scaleup_policy_signal_url:
    value: {get_attr: [scaleup_policy, signal_url]}

  scaledown_policy_signal_url:
    value: {get_attr: [scaledown_policy, signal_url]}

模版定义两个告警和伸缩策略,当 CPU 使用率在 300s 内大于 80% 则发出告警,heat 接收到告警开始创建新的虚拟机,最多 3 台。当 CPU 使用率在 300s 内小于 10% 则发出告警,heat 接收到告警开始删除虚拟机,最少保留 1 台。

查看创建的 stack 、alarm 和虚拟机

~ openstack stack list
+--------------------------------------+-------------+-----------------+----------------------+--------------+
| ID                                   | Stack Name  | Stack Status    | Creation Time        | Updated Time |
+--------------------------------------+-------------+-----------------+----------------------+--------------+
| af75c5e5-35c6-4ab3-b899-e4d9afbbcd74 | autoscaling | CREATE_COMPLETE | 2018-10-19T03:32:29Z | None         |
+--------------------------------------+-------------+-----------------+----------------------+--------------+

➜  ~ openstack alarm list
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+
| alarm_id                             | type                                       | name                                    | state | severity | enabled |
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+
| 6dfded8c-21a9-4792-a21c-eebc421e8706 | gnocchi_aggregation_by_resources_threshold | autoscaling-cpu_alarm_low-4e2ptwvvhbjq  | alarm | low      | True    |
| 2eaa8f6c-3ec5-43ca-8c19-81470c0686a8 | gnocchi_aggregation_by_resources_threshold | autoscaling-cpu_alarm_high-2t4zh5stxmt7 | ok    | low      | True    |
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+

~ openstack server list
+--------------------------------------+-------------------------------------------------------+--------+----------------+------------------------------+
| ID                                   | Name                                                  | Status | Networks       | Image Name                   |
+--------------------------------------+-------------------------------------------------------+--------+----------------+------------------------------+
| 3d723c6d-6c3e-41ba-a906-ded508f5006a | au-aleup_group-glnobyldea74-jnbifnyzqpr7-vghtyrjmru5u | ACTIVE | net0=10.0.1.6  | xenial-server-cloudimg-amd64 |
+--------------------------------------+-------------------------------------------------------+--------+----------------+------------------------------+

自动创建测试

1. 通过 stress 程序对虚拟机 CPU 进行压测

打开虚拟机控制台,运行以下命令进行 CPU 压测,持续 1200s

# stress --cpu 1 --timeout 1200

2. 查看虚拟机的 CPU 使用率

使用以下命令查询虚拟机的 CPU 使用率

~ gnocchi measures show cpu_util --resource-id instance_uuid

+---------------------------+-------------+----------------+
| timestamp                 | granularity |          value |
+---------------------------+-------------+----------------+
| 2018-10-19T06:00:00+00:00 |       300.0 |  0.16605959835 |
| 2018-10-19T06:05:00+00:00 |       300.0 | 0.161092701601 |
| 2018-10-19T06:10:00+00:00 |       300.0 | 0.162481952842 |
| 2018-10-19T06:15:00+00:00 |       300.0 | 0.166559675456 |
| 2018-10-19T06:20:00+00:00 |       300.0 | 0.167608932622 |
| 2018-10-19T06:25:00+00:00 |       300.0 | 0.664303071272 |
| 2018-10-19T06:30:00+00:00 |       300.0 | 0.170293083241 |
| 2018-10-19T06:35:00+00:00 |       300.0 |  63.2803744387 |
| 2018-10-19T06:40:00+00:00 |       300.0 |  99.9796696522 |
+---------------------------+-------------+----------------+

最后两条记录显示 CPU 占用率已经 > 80% 了

3. 查看告警触发情况

 ~ openstack alarm list                                                             
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+
| alarm_id                             | type                                       | name                                    | state | severity | enabled |
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+
| 6dfded8c-21a9-4792-a21c-eebc421e8706 | gnocchi_aggregation_by_resources_threshold | autoscaling-cpu_alarm_low-4e2ptwvvhbjq  | ok    | low      | True    |
| 2eaa8f6c-3ec5-43ca-8c19-81470c0686a8 | gnocchi_aggregation_by_resources_threshold | autoscaling-cpu_alarm_high-2t4zh5stxmt7 | alarm | low      | True    |
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+

可以看到 autoscaling-cpu_alarm_high-2t4zh5stxmt7 告警已经被触发

4. 查看虚拟机

可以看到自动创建了一台虚拟机

自动删除测试

1. 停止虚拟机压测程序

停止压测程序,等待 CPU 使用率降低下来

~ gnocchi measures show cpu_util --resource-id 578a14e4-1e00-4812-8039-81209f135116 
+---------------------------+-------------+----------------+
| timestamp                 | granularity |          value |
+---------------------------+-------------+----------------+
| 2018-10-19T06:00:00+00:00 |       300.0 |  0.16605959835 |
| 2018-10-19T06:05:00+00:00 |       300.0 | 0.161092701601 |
| 2018-10-19T06:10:00+00:00 |       300.0 | 0.162481952842 |
| 2018-10-19T06:15:00+00:00 |       300.0 | 0.166559675456 |
| 2018-10-19T06:20:00+00:00 |       300.0 | 0.167608932622 |
| 2018-10-19T06:25:00+00:00 |       300.0 | 0.664303071272 |
| 2018-10-19T06:30:00+00:00 |       300.0 | 0.170293083241 |
| 2018-10-19T06:35:00+00:00 |       300.0 |  63.2803744387 |
| 2018-10-19T06:40:00+00:00 |       300.0 |  94.3206761804 |
| 2018-10-19T06:45:00+00:00 |       300.0 |  99.9847353387 |
| 2018-10-19T06:50:00+00:00 |       300.0 |   99.984336257 |
| 2018-10-19T06:55:00+00:00 |       300.0 |  30.1423223067 |
| 2018-10-19T07:00:00+00:00 |       300.0 | 0.163830348301 |
+---------------------------+-------------+----------------+

可以看到 CPU 的使用率已经降了下来

2. 查看告警触发情况

~ openstack alarm list                                                                         
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+
| alarm_id                             | type                                       | name                                    | state | severity | enabled |
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+
| 6dfded8c-21a9-4792-a21c-eebc421e8706 | gnocchi_aggregation_by_resources_threshold | autoscaling-cpu_alarm_low-4e2ptwvvhbjq  | alarm | low      | True    |
| 2eaa8f6c-3ec5-43ca-8c19-81470c0686a8 | gnocchi_aggregation_by_resources_threshold | autoscaling-cpu_alarm_high-2t4zh5stxmt7 | ok    | low      | True    |
+--------------------------------------+--------------------------------------------+-----------------------------------------+-------+----------+---------+

可以看到 autoscaling-cpu_alarm_low-4e2ptwvvhbjq 告警已经被触发

3. 查看虚拟机

可以看到最早创建的一台虚拟机被自动删除了

总结

本文只是最简单的测试,heat 还可以结合 lb 实现更强大的弹性伸缩功能,值得深入学习下。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

YH11:Oracle Flex ASM 知识库

在 Oracle 12c 之前,对于要使用 ASM 的数据库实例来说,所有节点上的 ASM 实例必须已处于运行状态,才能启动数据库实例。如果 ASM 实例未运行...

3638
来自专栏流柯技术学院

linux 查找目录或文件详解

查找目录:find /(查找范围) -name '查找关键字' -type d 查找文件:find /(查找范围) -name 查找关键字 -print

8992
来自专栏云计算与大数据

研发:Idea工具因为版本工具设置问题,导致全是红色

I have the current status of my files in the folders coloured red/brown. I tried...

1273
来自专栏用户2442861的专栏

vi/vim编辑器必知必会

Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一...

1210
来自专栏hotqin888的专栏

使用Docker部署ONLYOFFICE Document Server

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

4271
来自专栏学习有记

使用 pyinstaller 打包 py 文件成 exe 程序

1804
来自专栏不想当开发的产品不是好测试

maven项目打jar包

打包有两种方式: 1、直接 项目--右键--export,选择JAR file打包(不推荐这种方式); 这样直接打的包通过java -jar 会提示“没有主清单...

2487
来自专栏张首富-小白的成长历程

Nginx

直接去官网(www.nginx.org)查找源码包,直接复制链接地址下载,我们一般选择stable(稳定版),不选择最新版本

59122
来自专栏Java架构沉思录

一文读懂分布式Session常见解决方案

前言 沉思君在之前的文章《谈谈HTTP状态保持》里介绍了有关HTTP状态保持的知识点,我们知道HTTP协议本身是无状态的,因此在使用HTTP协议进行通信的过程中...

2778
来自专栏Windows

Windows2008 IIS 7 运行wordpress媒体中心上传文件图片出现HTTP错误的解决办法

服务器从windows2003升级到windows2008,原wordpress打开媒体中心上传图片或者文件出现了HTTP错误,如图:折腾了几天

2400

扫码关注云+社区

领取腾讯云代金券