天天看点

如何实现Docker应用的自定义弹性伸缩

阿里云容器服务会自动采集容器的监控数据,并可以通过集成将监控数据发送到三方的监控框架中。有了监控数据,我们可以在监控框架中定义自己的报警规则,当指标发生报警的时候调用阿里云容器服务提供的触发器来进行容器的扩容或者缩容。 下面用influxdb,kapacitor来介绍怎样通过触发器跟监控框架集成实现自定义弹性伸缩。

在阿里云容器服务的应用列表中,点击要进行自动扩容控制的应用,进入后点击“创建触发器”

如何实现Docker应用的自定义弹性伸缩

然后选择“资源伸缩”,并选择要伸缩的服务名

如何实现Docker应用的自定义弹性伸缩

生成的触发器如下:

如何实现Docker应用的自定义弹性伸缩

调用sale out的时候需要添加参数&type=scale_out&step=2.

包括监控时序数据库influxdb, 监控报警框架kapacitor,及界面展现grafana. 我们可以用一个模板来部署:

模板中通过标签“ aliyun.monitoring.addon.influxdb”来指定将阿里云容器服务中的监控数据发送到influxdb.

在阿里云容器服务中增加一个模板,并通过模板创建应用:

如何实现Docker应用的自定义弹性伸缩

部署好的应用:

如何实现Docker应用的自定义弹性伸缩

创建报警规则文件。在 kapacitor中配置报警规则,并当报警是调用扩容触发器url.

通过web远程终端或者docker exec进入kapacitor容器, 增加报警规则,比如我们对cpu指标设置报警规则,创建/etc/acs/cpu.tick文件,内容如下:

这里对监控的cpu指标"docker_container_cpu"按集群及服务进行聚合然后判断当usage_percent>70的时候进行服务扩容。

类似,我们也可以增加一个缩容的报警规则。

定义报警规则并启用

在kapacitor容器中执行如下命令定义并启用报警规则。

这样当cpu的使用率超过70%的时候,会自动调用扩容触发器进行容器的扩容。