「Java虚拟机」从 Ops 到 NoOps,阿里文娱智能运维的关键:自动化应用容量管理


「Java虚拟机」从 Ops 到 NoOps,阿里文娱智能运维的关键:自动化应用容量管理
本文插图
作者| 阿里文娱高级开发工程师 金呈
责编 | 夕颜
出品 | CSDN(ID:CSDNnews)
「Java虚拟机」从 Ops 到 NoOps,阿里文娱智能运维的关键:自动化应用容量管理
本文插图
概述
1. 背景
随着业务形态发展 , 更多的生产力集中到业务创新 , 这背后要求研发能力的不断升级 。 阿里文娱持续倾向用更加高效、稳定、低成本的方式支持快速软件交付 , 保障高可用 。 于是运维力从 “HaaS”(Handwork as a Service)到“PaaS”再到“SaaS”(System as a Service) , 运维生产力从 Ops 到 DevOps 再到 NoOps 。
在传统应用容量管理模式下 , 应用、集群容量评估缺乏有效数据依据与支撑 , 往往牺牲效率或成本来平衡经验决策风险 , 另一方面 , 人肉决策和执行难以满足业务对稳定性和效能的追求 。 因此 , 阿里文娱急需一个能够把优酷所有应用的容量管理起来的能力 。
2. 目标
整体目标分成 2 个阶段 , 一是摸清各应用容量水平 , 二是为所有应用赋予弹性伸缩的能力 ,最终直观看到各应用及总体资源使用率的明显提升 。
「Java虚拟机」从 Ops 到 NoOps,阿里文娱智能运维的关键:自动化应用容量管理
本文插图
技术挑战与解法
1. 单机性能
既然谈到容量问题 , 已知的压测方案有链路压测方案、模拟流量压测方案等 。 为什么还要 自研一套基于单机引流的压测方案来评估应用容量水平?
1)更接近日常真实水平;
2)无人工决策 , 纯机器决策单机性能瓶颈;
3)全自动 , 比如配置成发布结束后进行单机性能压测 。
2. 弹性
弹性指标选择:仅靠集群 CPU 水位弹性确实可以解决绝大多数类型应用 , 但若基于集群QPS 水位则可更精准的进行弹性伸缩 。
1)多维度弹性指标 , 同时也需要支持自定义指标;
2)多方位弹性方案 , 使用条件编排策略来达到多个弹性指标之间的协同 。
「Java虚拟机」从 Ops 到 NoOps,阿里文娱智能运维的关键:自动化应用容量管理
本文插图
技术方案
1. 全自动单机性能探索与各接入层对接 , 自动配置权重完成单机引流 , 配合性能拐点算法支撑 , 完成自动识别性 能拐点并终止压测 , 最后一并记录单机能力值 。 并允许每天定时压测、发布结束压测来感知每 天、或每次发布给单机性能带来的变化 , 使用户更亲近自身应用的容量水平 。
2. 弹性伸缩
与底层交付系统联动 , 打造从规划 , 交付 , 计费 , 弹性水平扩展、回收、资源排布调度全 生命态面向业务需求的自驱动统筹调度资源管理系统 。 一方面 , 业务资源统一平台构建与维护 ,挖掘空闲资源 , 共享弹性计算力 , 整体提高部署密度 , 降低业务单位成本;另一方面 , 面向不 同应用场景 , 自动化容量管理 , 按需分配 , 保证应用服务可用性 , 提高容量运维效能 。
3. 方案结合
全自动单机性能探索与弹性伸缩的结合框架 , 如下图:
「Java虚拟机」从 Ops 到 NoOps,阿里文娱智能运维的关键:自动化应用容量管理
本文插图
1)应用接入:无缝接入;
2)单机性能压测自定义配置:无需再定义配置过多配置 , 默认“智能探索”可以支持大部分 场景;
3)单机引流:从集群中其他机器的流量引流至被压测机器;
4)智能拐点识别:使用时间序列数据趋势转折点提取算法 , 进行拐点识别;
5)单机性能预测:详见技术细节;
6)基础弹性配置:详见技术细节 。
技术细节1. 单机引流权重优化1)调整权重就是调整单机流量 , 且权重越高 , 单机流量越高;