重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
创新互联建站是一家专注于成都网站设计、成都网站建设、外贸网站建设与策划设计,阳东网站建设哪家好?创新互联建站做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:阳东等地区。阳东做网站价格咨询:18982081108
作者 | 壮怀 阿里云智能事业群高级技术专家
导读:新的企业负载/智能工作负载容器化、迁云、存储方面遇到的性能、弹性、高可用、加密、隔离、可观测性以及生命周期等方面的问题,不但需要存储产品层次的改进,更需要在云原生的控制/数据平面的改进,推进云原生存储和云存储的演进。本文将介绍一下问题场景,探讨可行的解决方案,最终得出云原生存储以及云存储目前可以做什么和未来还需要做什么。
最近有幸参加了由 Infra Meetup 联合 Kubernetes & Cloud Native Meetup 共同组织的面向云原生持久化应用的 Meetup,结合最近对云存储、开源存储、云原生存储的思考,对云原生存储到底是什么,需要做些什么,云原生存储未来挑战是什么,做了更多的反思和梳理,一家之言,分享了几个初步观点。
随着云原生应用对可迁移性、扩展性和动态特性的需求,相应的,对云原生存储也带来了密度、速度、混合度的要求,所以对云存储基本能力又提出了在效率、弹性、自治、稳定、应用低耦合、GuestOS 优化、安全等方面的诉求。
Forrester 预测:到 2022 年, 全球组织/公司在生成环境运行容器化应用,从今天不足 30% 的比例将大幅度提升到超过 75%,企业应用容器化的趋势势不可挡。
另一方面,根据 IDC 对未来企业级存储市场的增长趋势预测:云存储的需求相比于 2015 年,到 2020 将会有 3 倍以上的增长,企业存储市场中,数据管理类企业核心数据消耗的存储所占的比例将从 15% 提升到 23%,结构化数据和 DBMS 数据在企业存储市场中将进一步加强。
对云原生来说,核心企业应用/智能应用,使用云原生存储来部署生产可用的有状态应用,呈现加速上升趋势。海外存储巨头 EMC、NetApp 拥抱云原生,积极布局 REX-Ray flexrex、Trident 等云原生存储编排方案。
过去的一年(2018-2019)中,Kubernetes 逐渐成为云原生时代的基础设施,越来越多的互联网、数据库、消息队列等有状态企业核心应用,逐步迁移到云原生平台 Kubernetes,对不同的云上块存储的性能在时延和吞吐,以及稳定性提出了不同的要求,比如:
在云原生环境下,如何以声明方式来满足不同的业务场景,成为了云原生存储在实现控制面和数据面上的挑战。
在智能应用 AI 场景下,高性能计算、流式计算也尝试通过 Kubernetes 云原生平台来部署,使用云存储方式来完成训练、计算、推理等方面的工作,这对云存储在 Kubernetes 环境的选择及使用方面提出了挑战。比如,有证据表明 Spark 生态正在逐步从 Hadoop YARN 向 Kubernetes 原生的调度器以及扩展调度器 e.g. Gang Scheuler 迁移。
在云计算环境中:由于成本和存储计算分离的模型,HDFS 仍然会以存储协议的方式存在,但存储方式会逐步从 HDFS 的 3 副本向对象存储(OSS,S3)迁移;GPU 多机多卡 MPI 计算、Flink 流式计算的 Kubernetes 化已经逐步成为主流,存储访问方式也多以对象存储方式呈现。
但是在使用对象存储过程中,大数据/AI 应用的计算效率仍面临着严峻的挑战:
目前的 Kubernetes 调度器以及云存储特性并未给出好的解决方案,所以这也给云原生存储在加速大数据计算、弥补 IO 吞吐不足方面提供了发挥的舞台。
大数据离线计算比如基因计算,已经通过 Kubernetes 云原生平台来大规模的运行计算任务:对文件存储峰值吞吐 10GBps - 30GBps 的峰值刚性兑付,需要独立的高吞吐的文件存储形态和交付方式在云原生环境下的演进和变革。
随着企业应用上云越来越多地选择使用容器化方式,容器服务在不同的云厂商中都有大幅度的业务增长,容器服务已经逐步成为云原生时代新的基础设施和最佳使用云资源的入口。云原生存储对云计算/云存储来说也有了新的内涵,有必要重新思考云存储和云原生存储的本质区别和联系。
Cloud Native Storage vs Cloud Storage:
云原生存储声明的六要素:
为了更好的理解在云环境中如何构建云原生存储,先看几个在 Kubernetes 企业环境中部署主流的云原生存储,以及对比云存储的形态:
Ceph 是圣克鲁兹加利福尼亚大学的 Sage Weil 在 2003 年开发的,也是他博士学位项目中的一部分。Ceph LTS 成熟稳定、高可用、生态强大,在云原生时代和 Kubernets 紧密集成。Ceph 基于 RADOS(Reliable Autonomic Distributed Object Store )的高可用存储,在云原生时代之前 2003 年发行起,已经广泛生产部署的高可用存储,支持最广泛的块存储 RBD、文件 POSIX Cephfs,以及对象存储访问协议。
RedHat/SUSE 目前是 Ceph 最主要的商业化支持者,在多个容器平台落地案例中,RBD、CephFS 都被采用作为容器平台实施的主要存储,用来弥补基础云存储的缺失。
Rook 目前是在 Kubernetes 产品级可用的部署和运维 Ceph 编排工具。
Ceph 的基本架构由数据面 OSDs(RADOS) 和控制面 MON/RBD/RADOSGW/CEPHFS 组成,以 CRUSH Algorithm 作为核心算法处理数据冗余和高可用, 上层的应用存储通过 librados 同数据面 OSDs 直接完成数据的读写,能够支持快照、备份、监控可观测性等能力,可以通过 Rook 直接通过 Kubernetes 输出,RedHat/SUSE 也提供独立的集群安装能力。
Ceph 的一些基本架构特征和能力:
Portworx 以容器服务的方式部署,每个节点称为 PX,向下对接各种公有云的块存储或者裸金属服务器,向上提供块或文件服务。
不绑定硬件形态和厂商,可接入任何一家公有云或者自建服务器集群(只需支持 iSCSI 或 FC 协议),目前 Portworx 主打能力云灾备 DR、多云复制,具备完备的快照(ROW)、多云管理、同步复制(RTO,秒级)异步复制(RPO<=15min),可以通过 Kubernetes CRD 申明方式,优雅实现持久化云下应用带数据自动迁移云上能力。PX 可以独立部署,并不强依赖 Kubernetes 的容器网络。
Portworx 的一些基本功能/性能特征:
弹性扩展, PX 自动识别服务器节点的能力,可动态调度 IO
控制面
IO面
OpenEBS 基于 Kubernetes 构建的开源版 EBS,软件定义 PV:将各种介质,包括本地磁盘、云等各种存储统一池化和管理。使用 iSCSI 作为存储协议。没有绑定某一个厂商的存储,可以灵活的接入各种存储的一个原因。从某种意义上也是更加灵活,轻量。但是强依赖容器网络,增加了抽象层 OpenEBS layer, 写入操作要通过抽象层,并且每个卷 PV 都有独立的 controller,增加了额外的开销,虽然可以做到更灵活,但相比于 Portworx、Ceph 来说,其在性能上有比较大的劣势。
OpenEBS 的一些基本功能/性能特征:
对比以上三种开源/企业存储,为了更容易的理解云存储架构,我们把盘古的分层架构和 Ceph 存储的分层做一个对比。
可以把 CS(Chunk Server)类比 Ceph OSDs 服务进程,把盘古的 Master 进程类比于 Ceph MDSs 进程。
把云产品块存储类比于 Ceph RBD, 文件存储类别于 CephFS, 对象存储类比于 RADOSGW,本地块存储/高性能文件存储 CPFS 产品暂没有对应。
随着盘古架构的演进,和盘古 2.0 的全面推广、用户态 TCP 网络协议栈的推广、全面的 RDMA 存储网络、全面优化的 RPC 性能,上层产品存储也享受到了底层存储变革的巨大红利,进入了亚毫秒级别时延,和百万 IOPS 的时代,云原生存储也必然是要在产品存储层次之上,能够继承这些能力。
通过分析了市场上云原生存储,我们可以发现这些存储都有共同的特征就是支持声明化的 API,可以实现对性能、容量、功能等方面的度量和声明,或多或少对质量/稳定/安全都有不同支持。
进一步来说,云原生负载可以直接通过数据平面无损耗的使用产品存储在容量、性能、可访问性的能力,在控制平面继续提升面向用户应用的 IO 可观测性、应用级的 QoS、多租户的隔离能力,通过控制平面接口实现 CSI/Flexvolume 等可声明的存储接口,并提供对部分存储生命周期的 Operator,容器编排把业务应用和存储粘合成为实际的负载声明,可能是更加正确使用云存储的姿势。
由于公有云的基础设施产品存储的完备,可以使用更加轻量化的数据平面(virtio, nfs-utils, cpfs-sdk, oss-sdk)来访问产品存储。
专有云环境差异较大,部分虚拟化或者无虚拟化环境,SAN 和裸盘是主要存储方式,需要通过类似构建 ceph RADOS 或者盘古实现 SDS,然后通过数据平面(librados/px/pv-controller)实现存储的访问。
针对 vSphere,OpenStack,飞天所构建的专有云,有接近于公有云的存储提供方式,但因为部署模块的差异,也存在不同的控制/数据平面支持能力的差异。
简单来说就是:
在控制平面通过与 Aliyun Linux 2 OS 结合使用 Kernel Cgroup blkio 实现进程级别的 buffer IO 控制,提升了在应用层对本地盘、云盘的 QoS 控制的粒度。通过对本地盘的 LVM 切分可以实现对单机云盘的密度提升。通过对挂载点/设备 IO 指标测采集能力,实现 IO 的可观测性。
云原生存储- 块存储的主要特征指标:
详情见:云盘性能
在控制平面可以通过对 Pod Security Policy 和 SecuritContext 的控制,实现应用的强制 UID/GID 控制,实现应用对文件系统的 ACL 控制。控制平面实现对文件系统生命周期的控制,通过对挂载点 IO 指标测采集能力,实现 IO 的可观测性。
云原生存储- 文件存储的主要特征指标:
在控制平面实现对文件系统 ACL 控制,对 QoS 提供客户端限速的可配置性,文件系统提供生命周期的声明式管理能力 Operator,再进一步,在云原生环境内实现 CPFS 文件系统的声明式部署。
云原生存储- 高性能文件存储的主要特征指标:
今天的云原生存储已经实现了在控制平面/控制平面接口对阿里云产品存储的全品类支持,在数据平面也完成了大部分系统级和客户端层的优化。但随着大量的持久化企业应用和智能化应用的容器化迁移,我们依然面临着更多的问题和挑战。
在整个云原生存储 v1 的开发过程中,感谢阿里云存储团队,在文件存储、块存储和对象存储的通力合作和帮助,共同打造的云原生时代的存储。
随着云原生应用对可迁移性,扩展性和动态特性的需求,对云原生存储也带来了相应的密度,速度,混合度的要求,所以对云存储基本能力之上又提出了在效率,弹性,自治,稳定,应用低耦合,GuestOS优化,安全等方面的诉求。新的企业负载/智能工作负载容器化,迁云,存储方面遇到的性能,弹性,高可用,加密,隔离,可观测性,生命周期等方面的问题,不但是需要存储产品层次的改进,更需要在云原生的控制/数据平面的改进,推进云原生存储和云存储的演进,这是对云原生存储v2的展望和规划,我们会在后续文章进一步揭示这些新的场景,需求,方案以及发展方向。
“ 阿里巴巴云原生微信公众号(ID:Alicloudnative)关注微服务、Serverless、容器、Service Mesh等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术公众号。”