云社区 博客 博客详情

华为云第二代裸金属容器技术系列:应对海量并发的网络黑科技

云容器大未来 发表于 2020-08-18 17:19:49 2020-08-18
0
0

【摘要】 大家应该都看过某些明星导致社交媒体平台宕机的新闻吧?明星事件带来的突发流量触发业务扩容,以前是扩容虚机,速度慢还情有可原,现在大部分互联网平台都使用容器了,为什么扩容速度有些时候还是跟不上流量增长的节奏呢?

大家应该都看过某些明星导致社交媒体平台宕机的新闻吧?明星事件带来的突发流量触发业务扩容,以前是扩容虚机,速度慢还情有可原,现在大部分互联网平台都使用容器了,为什么扩容速度有些时候还是跟不上流量增长的节奏呢?


这里主要有两个问题。



01


一是网口发放速度匹配容器扩容速度的问题。如果是即时按需创建容器,比如10秒内启动5000个容器实例,这要求10秒内完成端到端的网口创建、挂接和网络打通。


处理流程上,容器网络控制器需要调用VPC网络API批量创建5000个网口,VPC控制面生成相应的配置,下发到各个主机节点,主机按配置创建好全部网口再挂接到节点上,进而挂接到容器上,与此同时,分布在各个主机和各类网关的数据面转发表也要同步完成刷新。


传统的I层网络架构,无论是管控面还是数据面都存在瓶颈点,全流程网络打通的速度,无法匹配容器扩容速度。


02


再一个就是网口规模的问题,由于ENI原本是针对I层虚机或裸机的网卡扩展机制,数量受节点规格的限制,有的厂商是按照主机的flavor限定ENI的规格数量,某些厂商提供了固定的最大数量,比如8个,这些规格约束有商业成本的考虑,但根本原因还是规模目标不同。


容器为了榨干节点资源,支持0.1核甚至更小的容器,单节点理论上可部署近千容器实例,也就需要近千网口,这与现有VPC网络的管控面和数据面规模有数量级差距。


网络资源预热

让秒级扩容成为可能


如何应对发放速度不匹配问题?


计算机系统结构的经典答案:


加“Cache”层, 就是按预定策略在节点建立预分配ENI的warm pool,集群纳管节点时,自动创建并配置好若干个ENI放入pool中,在批量启动容器的时候只需要把已经ready的ENI从warm pool中取出挂接到容器即可。


网络资源预热能够有效弥补VPC 网络资源分配性能不能匹配容器生命周期的现状。加‘Cache’的机制能够支撑容器大批量创建删除场景。


Warm pool机制主要解决端到端网络打通时间长的问题。目前VPC网络单节点网卡是串行处理的,而且单个网络设备绑定时间也达到了30s-60s,不做预热的情况下容器网络端到端打通时间在一分钟以上。分钟级容器启动时间是不可接受的。


Warm pool机制在裸金属节点上预挂载一定数量ENI(用户可根据服务部署并发量自定义配置),容器随时调度到预热节点上都有即时可用的ENI网卡。经过warm pool的优化,容器网络端到端打通时间缩短为1s-2s。


华为云容器网络Yangtse的warm pool其实早在裸金属容器之前就已经在云容器实例CCI中得到了实践,是CCI能以30秒扩容1000容器的绝对优势领先业界的技术手段之一。


突破ENI数量限制

支持大规模容器扩容


上文中讲到了,单服务器ENI的规格上限,限制了容器的高密度部署和大规模快速扩容,在第二代裸金属容器中,我们把容器网络组件全部卸载到了华为云擎天卡上,突破了传统架构的约束,最大ENI数量提升数十倍,单服务器可部署的容器数量也相应提升。


同时,得益于擎天架构资源共池优势,裸金属容器还可以向虚拟机容器扩容,而在虚拟机容器上,容器网络Yangtse使用了Trunkport技术,结合ENI的优势,在保障性能的前提下,单台服务器理论上可为千容器同时提供直通网络能力。


ELB直通容器

应对海量冲击更平稳


解决了速度和规模的问题后,其实还存在一个隐藏的杀手,处理不好,可能使我们新扩容出来的容器全部命丧于此。


在传统的容器网络对接外部ELB方案中,外部流量会从ELB先到Kubernetes的Node Port(工作节点所在主机的端口),然后再转发给后端容器,增加的这一跳不仅带来了时延和故障几率,也影响了ELB使用时的灵活性。


当应用业务流量增长触发扩容时,如果ELB直接全量发放分摊的流量请求,海量请求会迅速压垮(overload)新扩的容器,造成扩容失败。


发生这种情况跟业务的处理逻辑或运行时行为相关:新扩容的后端实例需要一边处理请求一边加载热点数据到本地Cache,或者需要根据接收到的请求即时编译(JIT)和加载相应的代码模块,这都需要“慢启动”(slow-start)过程,即根据业务模型,自定义初始流量比例和阶梯递增速率,比如:15%的初始流量,每5秒增加10%。


但是,当ELB挂接宿主服务器(节点)的网络端口(Node Port)时,特别是一个节点上部署多个容器时,由于存在节点二次分发,ELB无法感知到最终的后端容器,进而无法做到容器级别的流控,也难以保证稳态后的负载均衡。


容器网络Yangtse实现了与华为云ELB v3独享型负载均衡实例的直通,独享型ELB v3资源独立,实例的性能不受其它实例的影响,而且流量从ELB直通至后端容器,保证转发性能和稳定性。 


image.png

关于裸金属容器网络的揭秘,就到这里了。后续我们将围绕华为云云原生技术平台Vessel,逐一为您解读华为云容器的黑科技。




登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

上一篇:首个容器批量计算项目Volcano 1.0版本正式发布

下一篇:三分钟了解什么是云原生

评论 (0)


登录后可评论,请 登录注册

评论