Redian新闻
>
哈啰云原生架构落地实践

哈啰云原生架构落地实践

公众号新闻


弹性伸缩技术实践

全网容器化后一线研发的使用问题


全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择。


使用原生弹性HPA遇到的问题


当时第一时间考虑用原生HPA组件,但在实际调研和小规模使用的时候发现了很多问题。一方面是内置的问题,如原生不支持自定义指标和定时扩缩容,使用率计算基于resources.requests,使用单个Goroutine执行。更大的痛点在业务场景上,微服务在线实例拉出状态,特殊业务Job任务实例不能中断,要考虑下游DB层可用性。


基于业务实例实际水位、有效负载的弹性能力


我们基于业务实例实际水位、有效负载构建弹性能力。

  • 高低双阈值控制,像一些有浮动的业务,可以尽量把底层的稳定性去做有效的约束;

  • 最大可用原则,扩容用Ceil向上取整,缩容使用Floor向下取整;

  • 数据降噪,去除实例状态不ready的,去除强业务关系的实例计算,应用启动毛刺问题缓解,metrics空值、获取不到值;

  • 性能增强,按业务namespace监听,实现并发度控制。

水位阈值弹性和定时弹性的融合实现


这里同时做了水位阈值弹性和定时弹性的融合,保证单个的应用能够同时使用阈值和定时弹性。基本原则是扩容时大者取大,缩容时不能低于定时副本数。


业务使用弹性后的生产效果


业务使用弹性后产生了一定的效果,如图是高低阈值和定时的区间。这里解决了一些问题:

  • 代码预热,在高峰前准备就绪;

  • 周期性波动型应用变更明显减少;

  • 应用冗余减少,业务“初见原型”;

  • 突发流量应对,稳定性提升;

  • 告警、应用状态可控性。


最终弹性接入90%以上,扩缩容消息触达率100%,业务可用算力增加了 30%以上。


混合云模式下的 ClusterAutoScale


集群可用资源变多,不等于整体开支降低,因此我们考虑去做混合云模式下的ClusterAutoScale。这里有一些关注点,包括镜像即服务、CloudProvider 适配、节点初始化和节点回收。



右图是基本流程,有两个触发策略,一是基于不可调度事件,二是基于资源池水位阈值。这里我们也解决了一些问题,包括 CloudProvider 对接私有云资源API,Pod网段分配域路由宣告,私有云可用容量评估及资源打散,以及资源灰度回收逻辑。


注意事项


在实际业务时生产使用的时候,有很多关注点,包括业务池的容量、应用维度的实例波动率标准、存活探测和就绪探测的接口区别、指标阈值和弹性规则的合理性巡检、不做过多filter、不强依赖其他系统平台。


中间件容器化及混部填谷

业务独立池水位与混部预期


针对业务特性,将redis和flink资源池进行融合,达到分时复用的效果。之前的形态会带来很多问题:

  • 每种业务独占一个资源池或集群,产生大量资源碎片,造成成本浪费;

  • 多个集群多个对外API,数据需要多次聚合计算;

  • 各业务池服务器规格不一致,运维管理复杂。


混部的总体思路


混部里面这里做了一些思考,考虑了应用分级、资源需求、潮汐分布等等。将这些因子抽象归纳,分为应用分级、混部调度、资源QOS三层。我们也确定了几个总体方向,包括服务资源保障的策略实现和资源分配决策的算法实现。



在服务资源保障上,主要是对应用分级打标。我们把所有的业务做了S1-S4的分级,并落到了CMDB里,最终落到K8S的优先级标签里面。第二部分是资源池化,优先去考虑以底层的业务为重保,把一些优先级较低的应用分别打散到各个资源池。



在资源分配决策上, 第一部分是Request推荐。主要基于VPA Histogram计算百分位算法,通过获取7x24小时周期的应用资源量,根据P95百分位数据,再乘以水位系数放大后得到最终推荐值,并结合弹性、coolhealth状态机优化毛刺问题。



第二部分是实际负载调度,主要基于集群理想值权重算法和BinPacking装箱打分算法。过滤掉高水位节点,避免单node资源打爆;水位偏离度缩小,pod调度尽可能靠近理想水位;历史阈值计算应用负载,对节点未来水位预测;兼顾单node最大pod数限制。



第三部分是资源打散,通过问题推导,完全打散是不可能的,我们希望尽可能打散,在私有云IDC加入MDU策略。常用的策略有宿主机打散、可用区打散和MDU打散。


成效和问题

最终资源使用率有明显提高,成本账单同比持续降低。这里也带来了一个无法回避的问题:物理机宕机。爆炸半径增大,稳定性怎么保障,是我们基础设施的同学都需要去思考的问题。二是对根因下钻和故障定位带来挑战,如何观测和评估影响。


K8S观测与稳定性

基于Prometheus的容器监控平台


基于Prometheus构建了监控体系,核心组件包括Thanos + Prometheus 持久化存储、Vertex Exporter 指标采集数据源、SentryD 配置管理、CheckD 告警检测和Alerts 告警系统。


监控高级模式


我们自研了vertex采集工具,实现了快速生成metrics指标的能力,支持用户自定义指标名称,方便按业务、按分组区分。和exporter算力共享,每个实例 limit 2C/4G就可满足一个物理机的采集任务。


event 事件流持久化


实现了事件收集器,K8S全资源类型listwatch收集,同时把所有的event全量打印,针对特别的一些探针做了Response信息返回的打印。


logs 日志平台


把系统日志和业务日志等通过一些消费和采集的收集器,推送到kafka,最终聚合成一个平台。


trace链路


我们通过traceid查询,tags过滤进行数据检索分析;链路拓扑过滤,只看有错误的链路;采样链路搜索,链路分析。


K8S稳定性关注的指标


这里把K8S稳定性关注的指标分为五类,原生组件可用性、集群容量水位、集群资源负载、业务异常实例和云平台可用性。


稳定性大盘


云原生系统内维护的组件系统较多,一个原子管理单元发生问题后可能会影响多个上游链路系统。快速论证回答组件域当前是否正常,对于故障分析、问题定位有重要意义。


未来的展望规划

未来规划主要分为四部分,一是在离线的深度混部与调优,下一阶段还要持续推进哈啰内部云化中间件的混部进程,聚焦大算力应用的资源编排和成本优化。二是数据存储容器化,数据库、NoSQL的容器化工作,基于容器Cgroup隔离、以及类K8S资源编排模型的落地。目前哈啰内部已有部分业务开始生产化,还在持续建设中。三是Serverless业务场景模式探索,中后台的算法模型、数据任务job场景有一定的实践,业务大前端BFF层、无代码工程建设上在持续探索。四是基于AIOPS&可观测性的智能故障预测,基于时序预测模型能力,探索metrics异常指标提前发现,收敛告警系统误报、漏报问题,提升故障发现、故障定位能力。




微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
华为50W起薪招聘,云原生架构师凭什么这么香?如何在面试中巧妙展现架构能力?附200道面试真题+100例经典架构案例拆解 | 极客时间大厂内部AIGC创新案例曝光,拆解腾讯、京东、360“AI+业务”的商业化落地实践银行核心系统多活架构实践哈啰宣布APP注册用户达6亿;12306建议:没买到立即候补;B站将上线“创作者声明”功能,发布AI生成内容需添加声明……云原生 AI 工程化实践:FasterTransformer 加速 LLM 推理双林奇案录第三部之川黔连环案: 第十九节AIGC 开辟云原生全新应用方向,一文带你盘点中国云原生 20+ 细分领域技术成熟度提升效率、降低成本,作业帮数据采集体系架构升级实践万物皆可Reiki高考啊,高考 !性能追平存算一体!StarRocks 3.1 重磅发布,真正的云原生湖仓来了Unity云原生分布式运行时实时分析、融合统一及云原生,现代化数据仓库未来发展必经之路|专访飞轮科技 CEO 马如悦规范即治理函数:LLM 赋能的软件架构治理与架构设计Hadoop 上云: 存算分离架构设计与迁移实践ArchGuard Co-mate:一次关于大语言模型与架构治理、架构设计的探索字节跳动的多云云原生实践之路厂商征集 | 中国云原生成熟度模型报告 2023实践中,老板应当拿出多少股权进行激励?顶层股权架构如何设置?Tengine-Ingress 高性能高可用的云原生网关39 份云原生核心技术文档免费公开,吃透 K8s/Docker!| 极客时间WebAssembly 如何构筑云原生的新未来?CNCF 发布 Wasm 生态全景图面对复杂技术栈,中泰证券如何做云原生转型?微服务架构中的数据一致性:解决方案与实践当 GPT 遇到低代码:低代码平台 AIGC 开发落地实战 | ArchSummit 热门演讲实录葡萄牙金乔海滩(Guincho beach),礁石景点拥抱云原生,下一代边缘计算云基础设施腾讯安全发布云原生安全数据湖【专题速递】触觉反馈、边缘计算+元宇宙、Unity的云原生分布以及GPU加速下的元宇宙无题Apache Doris 迎来重磅升级!云原生存算分离架构来了新计算范式下,Databricks、Snowflake、Doris、字节跳动的数据平台落地实践|QCon哈啰 Quarkc 正式开源,低成本构建跨技术栈前端组件热点探测技术架构设计与实践
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。