去年,火山引擎边缘云边缘计算架构师郭少巍在 LiveVideoStack Con 2023 上海站围绕火山引擎边缘云海量分布式节点和上百 T 带宽,结合边缘计算在云基础设施架构方面带来的挑战,分享了面对海量数据新的应用形态对低时延和分布式架构的需求,边缘计算将成为新一代边缘计算云基础设施以及未来边缘计算发展的未来展望。
近十几年众多云厂商纷纷涌现,出现了基础设施即服务、平台即服务、软件即服务,云计算的形态上演变出了公有云、私有云和混合云等多种模式,当前“云”已经触达了企业应用的方方面面。传统的中心式部署架构已无法满足新型资源下的部署模式,业务架构采取云边端配合的模式进行部署,才能够充分的发挥云边端的优势,未来会有越来越多的业务向着云边端混合部署的新架构方向发展。
随着云计算和边缘结合,出现了边缘计算概念,在数据源和云中心路径之间提供轻量、弹性、智能、异构、低时延的边缘计算服务能力。
郭少巍表示:首先,边缘计算是对云计算最有力的补充,两者互相补充而非简单的替代概念。其次,云边协同放大了云计算和边缘计算的价值,只有更好地协同云和边,才能发挥两者最大的价值。
业务发展为边缘计算云基础设施带来新的挑战
边缘计算的发展带来好处的同时,也在云基础设施架构方面带来许多挑战。
边缘计算的优势如下:
低延迟:边缘计算节点分布在全国各地,并且覆盖全链路运营商,为用户提供低延迟体验。
高带宽:边缘计算就近处理和传输,能够承载更大的带宽。
节约成本:边缘计算可以减少客户端与中心节点通信的数据量,从而帮助客户节约了较多的带宽成本。
数据安全:数据在边缘节点进行预处理和预聚合,无需在整个网络传输,从而降低数据在公网传输被窃取的风险。
边缘计算主要带来以下四点挑战:
资源限制:边缘计算节点规模通常较小,机器数量通常为几台到几十台的规模,甚至有些边缘节点只有一台服务器,因此必须考虑如何在小规模节点下管理资源,在有限的资源下尽可能提高资源售卖率。
分布式管理:边缘计算节点的数百个集群分布在全国各地,存在弱网管理及边缘自治问题。
需求多样:由于客户的业务是多种多样的,客户在边缘节点的需求也比较多,客户需要在边缘提供云主机/容器/裸金属等各种资源类型。此外,在网络层面客户希望我们提供 VPC、PIP、EIP 等能力,在存储层面客户希望我们提供云盘、本地盘、文件存储、对象存储等能力。
安全管理:需要在很小的节点之内实现租户隔离,并保证公网和边缘节点协同的公网传输的安全性。
应对挑战:边缘计算云基础设施逐步完善
为了应对以上挑战,边缘计算云基础设施正在逐步完善。
正如上文提到,边缘计算面临着小型化、分布式和安全隔离等挑战。
对此,云原生技术首先被想到,它具有以下特点:
资源管理方面,云原生技术支持弹性伸缩和资源按需分配,为在边缘小型节点构建一个弹性伸缩的边缘节点提供可能性。
技术架构方面,云原生技术具有松耦合、可插拔和良好的扩展性。为边缘节点异构及按需部署提供可能性。
应用部署方面,云原生技术提供了标准部署、自动化运维和可观测性。为在边缘构建简单化运维及可自动恢复的能力提供可能性。
云原生是面向云应用设计的一种思想理念,有助于构建弹性可靠、松耦合、易管理、可观测的系统。
边缘计算的架构演进与业务架构演进相契合,经历了三个阶段:
面向资源阶段:业务初期基本都是直接运行在虚拟机或物理机上的,这时的业务直接面向资源,并没有解决应用如何编排、如何快速部署、如何运维,如何观测等面向应用云上使用的能力。
面向应用:随着容器技术的兴起,2014 年出现 kubernetes,2018 年出现 Cloud Native 的概念,与此同时,边缘也演进到了以云原生为主流架构的时期。然而,云原生并没有解决所有边缘的问题,边缘场景其自身特点:在资源层面,边缘有着广泛的节点覆盖,单个节点资源十分有限,这对海量节点管控和单节点资源优化提出了非常高的要求。在网络层面,存在云边弱网环境的问题,这对边缘自治提出了要求。
由此,迎来了边缘云技术架构的第三个阶段,将云原生与边缘特性结合,形成边缘独有的技术方案,即边缘原生。
边缘计算架构演进分为以下三个阶段:
第一个阶段是传统虚拟化阶段,此阶段将虚拟化技术和边缘结合,提供将大粒度资源拆分成小粒度资源,以及资源间的隔离能力,其主要着力点是面向资源。客户需要自行解决部署,运维,监控等一系列问题,这种管控模式对客户基础运维能力要求极高,要求客户有非常专业的运维和管控系统。
随着容器技术和云原生技术的成熟,云原生应用越来越多,此时出现了在虚拟机中部署容器,容器和虚拟机相互嵌套。这一方案中,虚拟化仍然是主要技术,容器是辅助,是传统超融合应对云原生趋势的“过渡”方案。此阶段虽然解决了部分编排能力,但容器的弹性能力受限于虚拟机的弹性能力。
基于边缘计算的特色,最终演变出了云原生超融合的架构。在同一套资源池上既实现了虚拟机也实现了容器和裸金属的管控和部署,具有以下两点优势:
第一,资源共池,三种资源形态共享一个资源池,可以灵活调配不同的资源池,提升整体的资源售卖率。
第二,满足更多业务形态,通过不同容器为云原生应用提供服务。用虚拟机为有基础运维能力的客户提供服务,用虚拟机解决 Windows 生态问题,在边缘的大流量场景下,用裸金属为用户提供更高性能的资源。
边缘原生结合了边缘和云原生技术的特点和优势,因此它具有云原生的应用和服务的可移植性,可观测性,易管理、统一编排的能力,同时也具有云边协同、边边协同、中心管控和边缘自治能力。在全局调度方面,具有全局资源调度和局部资源优化能力,在边缘节点具有异构能力。结合云原生和边缘的特性,使得应用和服务能够充分发挥边缘的能力。
内外统一的边缘原生云基础设施架构
火山引擎是如何构建边缘原生的云基础设施的呢?
火山引擎边缘原生技术方案
图示为整体的技术方案,从底层开始介绍:
火山引擎边缘计算节点分布在全国各省市、各个运营商、具有优质的网络线路。同时,结合丰富的边缘硬件设备,如定制 x86 服务器、ARM 服务器、GPU 异构服务器资源、高性能 nvme 存储、100G 带宽的智能网卡设备。
基于这些高质量的基础设施,火山引擎边缘云设计出了边缘云原生操作系统的能力,包含边缘自治管理、系统组件管理、以及面向边缘的镜像服务能力。自治管理包含集群管理、应用生命周期管理。系统组件包含网络组件、服务发现、消息队列。镜像组件包含公共镜像、自定义镜像、镜像预热及镜像加速。
云边管理提供云边通道、集群管理、智能调度等子系统,优化了云边协同。
数据管理提供数据采集、监控告警、数据大屏及数据仓库。将边缘数据进行预处理后发送到中心进行分析告警。
最终在产品形态层面为客户提供边缘计算服务,包含边缘虚拟机、裸金属、容器等多种形态,同时提供云上一致的边缘网络、边缘存储等多种云服务能力。此外,火山引擎边缘云还构建了 FaaS 和 SaaS 等边缘服务。
场景应用层面能够支撑 CDN、视频直播、实时音视频、云游戏、动态加速、边缘智能等各个业务场景的需求。
架构设计的整体理念为云边协同,边缘自治,分层治理。
边缘原生操作系统
边缘原生操作系统融合了云原生和边缘特点,提供以下四点关键能力:
统一编排:通过云原生操作系统,可以实现对算力资源、存储资源、网络资源、以及自身云服务资源的统一编排。
协同管控:支持中心和边缘协同管控,实现中心与边缘的高效融合。
按需部署:通过算力混合部署和服务混合部署及组件可插拔,能够在不同资源场景下的提供异构算力和异构产品能力。
云边协同:实现了云边通道、边边协同等能力。
统一资源编排
边缘节点对资源编排的需求可以归纳为小型化和多样化:
小型化:通常节点规模较小,只有数台机器,甚至有的节点只有 1 台机器。
计算需求:由于业务的诉求多样,需要在边缘节点同时支持虚拟机、容器和裸金属等多种产品形态。
存储层面:需要块存储,文件存储和对象存储等能力。
网络方面:需要自定义 VPC 网络、负载均衡、弹性公网 IP 等能力。
对此采用的方案是统一资源编排。
最底层是 Kubernetes,在此之上通过 CRD 统一抽象,比如需要虚拟机,定一个 Virtual Machine 的 CRD,通过 CRD 实现控制器逻辑,从而实现对资源的管控。生态方面,可以直接复用在 Kubernetes 之上现有的网络、存储、GPU 等资源类型,实现容器和虚拟机存储和网络资源的统一。
统一服务编排
统一服务编排的需求是组件统一管理。包括两点诉求,第一点是轻量化,边缘集群通常较小,因此管控服务需要实现轻量化。第二点是服务运行依赖,由于服务种类繁多,因此底层依赖的组件库也多种多样,部分服务对 OS 也有特定场景诉求。
对此的方案是统一服务编排,将所有的组件进行微服务化设计,将组件统一容器化打包和发布,使得组件运行时不依赖特定宿主机的 OS 和组件库版本。
图片最底层是引擎层,通过复用 Kubernetes 的基础管理能力,直接接入 Kubernetes 提供的网络、存储等基本能力。在引擎层之上自研了日志、监控、报警等能力,使用并强化了云原生的扩缩容、健康探测、故障迁移及自动恢复能力。在此之上,对外统一提供虚拟机、容器实例、裸金属等外部能力。
协同管控
协同管控的需求是统一管控和调度,包括云边联动管控和统一资源调度。方案是自研的云边协同管控系统,包括三个关键点:
全局感知:在中心基于 Watch 机制,实现了对边缘资源的实时感知,更快感知到资源和库存变化。
边缘自治:利用多 Master 机制保障边缘的可用性,即使与中心失联,边缘仍可以独立工作。
统一调度:实现了虚拟机、容器统一库存管理。
图示为创建虚机调度的过程,首先用户发起创建虚机实例请求,虚机管控收到后再向库存服务发起请求,调度系统经过全局最优的调度策略,返回结果,管控系统将资源下发至对应的边缘节点,通过边缘管控及边缘调度器执行轻量化调度,最终将实例运行到具体节点之上。
按需部署
按需部署的需求是能力多样性,主要包括以下几点:
规模异构:有的节点会比较小,有的节点规模会比较大
资源异构:不同节点提供的服务器类型包括 X86、ARM、GPU
存储资源:不同节点提供的存储能力包括云盘、本地盘、文件存储等
产品能力:不同节点会提供 X86 虚拟机或 ARM 虚拟机
对此的方案是组件标准化和按需部署。
首先是标准化节点规格,我们对节点类型及组件进行标准化,前者分为小规格节点、通用型节点、大规格节点等,后者分为虚拟机、容器、网络等。
同时在部署方案针对不同节点类型和产品需求做了固定编排,在节点建设时,根据节点类型和产品需求,选择不同的部署方案。图片上可以看到,在小规格节点为用户提供标准的虚拟机、容器和 LB 能力,在通用节点还额外提供裸金属能力,只需在通用节点基础上部署裸金属插件即可。在大规格节点之上为用户提供更多能力如 GPU 和文件存储产品能力,同样只需在大规格节点基础上部署对应插件即可。
云边协同
云边协同解决了云边弱网问题,包括网络和安全层面。前者包括网络丢包、链路不稳定、网络链路中断等问题。后者主要是公网链路传输安全问题。
相应方案是自研的云边通道。
首先,通过边缘与中心建立长链接的方式,复用边缘与中心的链路,在中心实现了各个边缘节点的数据缓存,保障中心更快地感知到边缘变化,中心组件在操作边缘时能够对读请求加速。
其次,在安全性保障方面,通过身份认证、双向证书等机制保证客户端和服务端双向认证的安全性。在传输安全方面,通过全链路 SSL 加解密,保障传输数据的安全性。在 SSL、ACL 访问控制方面,保证只有白名单的边缘节点才可以注册到中心,增强了云边通信的安全性。
最后在网络容灾方面,采用多机房、多副本、负载均衡和故障自动迁移等技术,确保云边通道的高可用性。
边缘节点的最佳技术实践
实例创建加速
第一个是实例创建加速,其问题是边缘节点创建实例慢,包括两方面原因:一是镜像下载慢,由于边缘节点从中心下载镜像较慢,由于镜像下载需要走公网进行传输,因此镜像下载的时间是不可控的。二是实例创建需要从基础镜像完整拷贝一份,如果镜像较大,拷贝也会较耗时。
对此采用的方案是预热及快照。
首先,将虚拟机镜像和用户自定义镜像提前预热到边缘节点。再对边缘的镜像预创建快照,当需要创建虚拟机时直接基于快照进行创建,虚拟机底层共享同一快照层,快照采用 Copy On Write 机制,虚拟机创建时并不会完全拷贝镜像数据,而是当真正要写入数据时才对需要变动的数据进行拷贝,通过快照机制,可以做到虚拟机的秒级创建。
性能优化-虚拟化
我们在性能优化层面进行了虚拟化性能优化。顾名思义,虚拟机是由软件虚拟而来,因此虚拟机在一定程度上存在性能损耗,体现在以下三点:
第一,vCPU 在操作系统上是被当做普通用户态进程进行调度的,因此 vCPU 之间可能会存在性能争抢。
第二,由于虚拟机是大颗粒内存拆分为小颗粒内存,存在内存转化性能开销。
第三,VMM Exit 可能影响 CPU 性能。
为了更加深入地了解以上问题,现为大家介绍一下虚拟机的基本原理:
CPU 的运行级别分为 Ring0~3 这 4 个运行状态等级,Linux 只使用了其中的 Ring0 和 Ring3,分别表示内核态和用户态。
虚拟机主要由 VMM(Hypervisor)和 Guest 组成,X86 服务器为了支持虚拟化提供了两种运行模式,root 模式和 non-root 模式。CPU 的虚拟机运行过程实际上就是 CPU 受控制地在 root 和 non-root 两个操作模式之间进行切换。
VMM 与 Guest 的操作模式切换主要分为两个部分。假设当前运行的代码在 VMM 层,如果想要运行客户的代码,就需要进入到 Guest 层,可以手动调用 VMLAUNCH 或 VMRESUME 指令将当前运行的代码切换到客户侧,这个过程我们叫做 VM Entry。假设在客户侧运行过程中需要响应外部中断或缺页异常(page fault),此时 CPU 运行会切换到 VMM,我们将这个过程叫做 VM Exit。
为了减少虚拟机的性能损耗,我们做了以下几件事:
vCPU 绑定:通过将 vCPU 和物理机 CPU 一对一绑定,减少了 CPU 的频繁切换,从而减低了 CPU 的上下文切换损耗;
Hugepage:通过利用内存大页,减少内存页表,减低了 TLB 的 miss,提升虚机的访存性能;
Exit 优化:通过将 Timer/IPI 等 Exit 透传,消除了大部分的 VM Exit,使虚拟化损耗降至 5%以下。
性能优化-I/O 优化
I/O 层面的优化主要包括两点:
网络 I/O:超大带宽,例如 vCDN 场景
存储层面:本地化缓存场景需要较强的存储带宽和 IOPS 能力
对应方案是采用硬件 Offloading、硬件直通、Polled I/O 等方式:
硬件 Offloading:将网络流量卸载到专用网卡设备中,使用专用网络设备做网络包的转发,不仅提升了转发的吞吐能力,还可以释放部分 CPU 资源
设备直通:将磁盘或网卡设备直通到虚拟机中,减少软件转发路径提升了整体 IO 性能
Polled I/O:通过用户态 Polling,减少对于通知机制的依赖,更快感知数据变化
未来展望
未来,边缘计算会继续呈现增长的趋势,边缘计算的崛起也会带来更多便利。未来边缘计算主要会向着轻量化、算网融合和开放生态的方向努力发展。
轻量化
当前火山引擎边缘云在边缘提供了标准的虚拟化能力及非常完善的功能,但当前存在虚拟化较重的问题。
未来,火山引擎边缘云会通过优化 Hypervisor 实现更轻量的 Overhead,进一步降低虚拟化损耗。此外,在管控层面通过云边协同将部分管控能力统一在中心,边缘做轻量的自治能力,做到边缘的管控面和 Hypervisor 轻量级。
算网融合
其次是算网的深度融合,当前火山引擎边缘云更依赖于单个节点的弹性能力以及单个节点的算力资源调度。应用需要自己做多机房的容灾能力,未来我们会做算力网络深度融合,统一调度网络资源和 CPU 算力资源,实现跨节点的弹性伸缩能力,使得部分业务在不同节点间自由迁移,更好地利用不同节点的资源。
开放生态
最后是更加开放的生态。当前,火山引擎边缘云基于云原生技术构建了边缘原生的操作系统,对外统一提供虚拟机、容器及裸金属等公有云服务。
未来,火山引擎边缘云会为用户开放更多云原生能力,吸纳更多云原生生态的合作伙伴,通过更加开放的模式,使得云原生技术不仅可以服务于自身,也可以让更多的客户享受云原生带来的生态便利。
评论