开发者社区> 问答> 正文

如何使用 ACK + ECI 实现在线业务弹性伸缩?

如何使用 ACK + ECI 实现在线业务弹性伸缩?

展开
收起
小天使爱美 2020-03-20 19:13:34 1556 0
1 条回答
写回答
取消 提交回答
  • 本文 step by step 展示如何使用 容器服务 Kubernetes 托管版 和 ECI 完成在线业务的弹性伸缩。

    1. 准备业务镜像

    整体业务请求链路如上图所示,用户请求biz-app(模拟入口业务应用),biz-app会请求cpu-app(模拟耗cpu应用)和mem-app(耗mem应用),所以需要打三个docker镜像。

    biz-app:registry.cn-hangzhou.aliyuncs.com/eci-springboot-demo/biz-app:1.0 mem-app:registry.cn-hangzhou.aliyuncs.com/eci-springboot-demo/mem-app:1.1 cpu-app:registry.cn-hangzhou.aliyuncs.com/eci-springboot-demo/cpu-app:1.0 2. 创建 容器服务 Kubernetes 托管版集群

    本文使用“Kubernetes 托管版”集群类型,使用ECS Node服务业务的正常水位,通过ack-virtual-kubelet-autoscaler来使用Virtual Node(底层资源是ECI)来服务业务的弹性水位

    1. 部署vk,vk-autoscaler

    在容器服务控制台的市场-应用目录中,根据文档先后安装ack-virtual-node和ack-virtual-kubelet-autoscaler

    1. 部署业务应用

    在容器服务控制台的应用中,根据业务形态选择对应的部署形式,本文采用的无状态(Deployment)

    填入相关内容,选择前面准备好的业务镜像,配置service,即可创建完成

    创建biz-app的时候,需要传入2个环境变量(值来自cpu-app和mem-app的service的内部端点)

    并且biz-app需要提供出ingress路由,将业务能力暴露到外部环境

    1. 配置弹性伸缩策略 在应用-无状态中,选择业务app,配置“容器组水平伸缩器”

    目前默认策略支持mem和cpu,也可以自己实现更多复杂的策略

    1. 部署三方应用 在市场-应用目录中,可以根据业务需要,安装部署相应的App,本文中部署了以下App

    ack-virtual-node:通过vk来将pod创建在eci上 ack-virtual-kubelet-autoscaler:通过vk动态的将pod创建在eci上(本文在eci上实现的弹性伸缩能力就是借助于此) ahas:提供应用架构自动探测,故障注入式高可用能力评测和一键流控降级等功能 arms-pilot:自动发现应用拓扑、自动生成 3D 拓扑、自动发现并监控接口、捕获异常事务和慢事务 arms-prometheus:对接开源 Prometheus 生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的 Prometheus 服务 7. PTS 压测 使用PTS对服务进行压测,来模拟业务低峰期到高峰期的一个过程

    1. 观察效果

    可以看到qps从1调整到5、10、20的过程中,mem-app和cpu-app根据应用的负载情况进行了动态的扩容

    2020-03-20 19:14:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于ACK One 实现简单的跨云协同 让业务管理更高效 立即下载
公共云弹性计算最佳实践-省钱窍门之四:弹性容器实例和Serv 立即下载
基于ECI的ACK集群高弹性架构 立即下载

相关镜像