资源伸缩触发器
更新时间:2018-06-22 10:58:14
现在有很多客户很关心应用的自动弹性伸缩,有些客户也有自己的监控框架,并希望能跟阿里云容器服务进行集成。阿里云容器服务提供了资源弹性伸缩触发器,并能够跟监控框架集成来实现自定义的服务自动弹性伸缩。 阿里云容器服务会自动采集容器的监控数据,并可以通过集成将监控数据发送到三方的监控框架中。有了监控数据,我们可以在监控框架中定义自己的报警规则,当指标发生报警的时候调用阿里云容器服务提供的触发器来进行容器的扩容或者缩容。 下面用Influxdb,Kapacitor来介绍怎样通过触发器跟监控框架集成实现自定义弹性伸缩。 生成 wordpress 资源伸缩触发器
前提条件
操作步骤
说明
您需要将所对应集群的 Agent 升级到最新版本,才能使用资源伸缩触发器。
![]() |
说明 |
该 API 支持添加 type 和 step 两个参数,本示例中,调用 sale out 的时候会添加参数 &type=scale_out&step=5。 |
部署监控应用
我们创建一个监控应用,包括监控时序数据库Influxdb、 监控报警框架 Kapacitor 以及界面展现 Grafana。将 wordpress 资源伸缩触发器写到应用配置文件中,达到根据应用负载,资源自动伸缩的目的。
我们使用一个编排模板来部署:
```yaml
version: '2'
services:
influxdb:
image: influxdb:0.13
ports:
- "8083:8083"
- "8086:8086"
container_name: "influxdb"
labels:
aliyun.monitoring.addon.influxdb: "http://influxdb:8086"
grafana:
image: grafana/grafana:3.0.3-1463994644
ports:
- "3000:3000"
links:
- influxdb
kapacitor:
image: kapacitor:0.13
ports:
- "9092:9092"
volumes:
- /etc/acs/:/etc/acs/
environment:
- KAPACITOR_INFLUXDB_0_URLS_0=http://influxdb:8086
command: kapacitord -config /etc/kapacitor/kapacitor.conf
```
创建好的应用,如下图所示。
配置Kapacitor报警规则
创建报警规则文件。
在 Kapacitor 中配置报警规则,并当报警时调用扩容触发器 URL。
通过 Web 远程终端或者 Docker Exec 进入 Kapacitor 容器, 增加报警规则,比如我们对CPU指标设置报警规则,创建/etc/acs/cpu.tick 文件,内容如下。
```
stream
// Select just the cpu measurement from our example database.
|from()
.measurement('docker_container_cpu')
|groupBy('aliyun.cluster', 'aliyun.service.id')
|alert()
.crit(lambda: "aliyun.cluster"=='xxxxx' AND "aliyun.service.id"=='xxxxx' AND "usage_percent" > 70)
.post('https://cs.console.aliyun.com/hook/trigger?
triggerUrl=Y2E1Y2UwY2NhOWRhMzQ2ZDY4ZmYyZmYyNGZiYTAyNzdjfHdvcmRwcmVzc3xzY2FsaW5nfDE5dXM1cHZjdjQ4cnN8=&secret=xxx&&type=scale_out&step=5')
.log('/tmp/alerts.log')
```
这里对监控的CPU指标 docker_container_cpu
按集群及服务进行聚合然后判断当 usage_percent>70 的时候进行服务扩容。类似,我们也可以增加一个缩容的报警规则。
定义报警规则并启用
在Kapacitor容器中执行如下命令定义并启用报警规则。
kapacitor define cpu_alert -type stream -tick cpu_alert.tick -dbrp telegraf.default;
kapacitor enable cpu_alert
这样当CPU的使用率超过 70% 的时候,会自动调用扩容触发器进行容器的扩容。
后续操作
您可以通过三方集成系统进行触发,使用 GET 或者 POST 都可以进行触发,例如使用 curl 命令触发。
调用资源伸缩触发器:
![]() |
说明 |
调用资源伸缩触发器时,需要在触发器 URL 中手动添加以下参数: |
参数名称 | 必填 | 语义 | 可选值 |
---|---|---|---|
type | 是 | 伸缩类型 | 缩容:scale_in;扩容:scale_out |
step | 是 | 伸缩数量 | 正整数,1~100 |
例如,调用下面的触发器会执行扩容五个容器的操作。
curl 'https://cs.console.aliyun.com/hook/trigger?triggerUrl=Y2E1Y2UwY2NhOWRhMzQ2ZDY4ZmYyZmYyNGZiYTAyNzdjfHdvcmRwcmVzc3xzY2FsaW5nfDE5dXM1cHZjdjQ4cnN8=&secret=xxx&&type=scale_out&step=5'
相关文档
相关产品
-
容器服务(已停止服务)
容器服务(Container Service)提供了高性能可伸缩的容器应用管理服务,支持在一组云服务器上通过 Docker 容器来进行应用生命周期管理。容器服务极大地简化了用户对容器管理集群的搭建工作,无缝整合了阿里云虚拟化、存储、网络和安全能力,打造 Docker 云端最优化的运行环境。容器服务提供了多种应用发布方式和流水线般的持续交付能力,原生支持微服务架构,助力用户无缝上云和跨云管理。
-
容器服务Kubernetes版
容器服务Kubernetes版(Container Service for Kubernetes)提供高性能可伸缩的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理。
-
容器镜像服务
容器镜像服务(Container Registry)提供安全的应用镜像托管能力,精确的镜像安全扫描功能,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理。容器镜像服务简化了Registry的搭建运维工作,支持多地域的镜像托管,并联合容器服务等云产品,打造云上使用Docker的一体化体验。
以上内容是否对您有帮助?
在文档使用中是否遇到以下问题
-
内容错误
-
更新不及时
-
链接错误
-
缺少代码/图片示例
-
太简单/步骤待完善
-
其他
-
内容错误
-
更新不及时
-
链接错误
-
缺少代码/图片示例
-
太简单/步骤待完善
-
其他
更多建议
匿名提交感谢您的打分,是否有意见建议想告诉我们?
感谢您的反馈,反馈我们已经收到
文档反馈
鼠标选中内容,快速选择问题
选中存在疑惑的文档内容,即可生成 截图进行反馈,我们会跟进处理。
文档反馈