云原生存储的思考 (一)什么是云原生存储

本文涉及的产品
对象存储 OSS,20GB 3个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
对象存储 OSS,内容安全 1000次 1年
简介: # 云原生存储的思考 (一)什么是云原生存储 ### Abstract 最近有幸参加了有PingCap和CNCF组织的面向云原生面相持久化应用的Meetup,结合最近对云存储,开源存储,云原生存储的思考,对云原生存储到底是什么,需要做些什么,云原生存储未来挑战是什么,做了更多的反思和梳理,一家之言,分享了几个初步观点。 1. 云原生存储是云存储UI,面向应用的申明式应用层存储

云原生存储的思考 (一)什么是云原生存储

Abstract

最近有幸参加了有PingCap和CNCF组织的面向云原生面相持久化应用的Meetup,结合最近对云存储,开源存储,云原生存储的思考,对云原生存储到底是什么,需要做些什么,云原生存储未来挑战是什么,做了更多的反思和梳理,一家之言,分享了几个初步观点。

  1. 云原生存储是云存储UI,面向应用的申明式应用层存储

公有云
Cloud Native Storage = Declarative API + Cloud Storage

专有云
Cloud Native Storage = Declarative API + Native Storage

  1. 云原生存储是重用云存储基础设施红利,是构建在核心存储,应用存储之上的分层存储,不需要重新发明轮子。
  2. 云原生控制平面实现效率,自治方面能力,最大化减小存储稳定和安全隐患。

结合企业生产落地场景中,针对目前云原生应用需求,对存储性能,弹性,高可用,加密,隔离,可观测性,生命周期面临着各种挑战,整理出了部分云原生存储v2的解决方案和演进路径。其中就TiDB在云原生架构中的扩容能力,存储选择可行性和演进,以及不同云原生存储的QoS的保障能力和遇到的挑战与会者做了互动沟通。

容器和云原生计算被企业快速接纳

image.png

Forrester 预测到2022年, 全球组织/公司在生成环境运行容器化应用,从今天不足30%的比例将大幅度提升到超过75%,企业应用容器化的趋势势不可挡。

image.png

从另一方面,根据IDC对未来企业级存储市场的增长趋势预测,云存储的需求相比于2015年,到2020将会有3倍以上的增长,企业存储市场中数据管理类企业核心数据消耗的存储所占的比例将从15%提升到23%,结构化数据和DBMS数据在企业存储市场中将进一步加强。对云原生来说,核心企业应用/智能应用使用云原生存储来部署生产可用的有状态应用呈现加速上升趋势,海外存储巨头EMC,NetApp拥抱云原生,积极布局REX-Ray flexrex,Trident等云原生存储编排方案。

Kubernetes逐渐成为云原生时代的基础设施

过去的一年(2018-2019)中,Kubernetes逐渐成为云原生时代的基础设施,越来越多的互联网,数据库,消息队列等有状态企业核心应用逐步迁移到云原生平台Kubernetes,对不同的云上块存储的性能在时延,和吞吐,以及稳定性上提出了不同的要求,比如

  1. 毫秒级NvME SSD级别的稳定时延来满足高性能KVstore和数据库需求。
  2. 随着应用单机部署密度的提升,对块存储单机密度的挑战
  3. 本地块存储共享,对块存储的弹性和隔离性也提出的更高需求

在云原生环境下,如何以声明方式来满足不同的业务场景,成为了云原生存储在控制面和数据面实现上的挑战。

在智能应用AI场景下,高性能计算, 流式计算也尝试通过Kubernetes云原生平台来部署,使用云存储方式来完成训练,计算,推理等方面的工作,这对云存储在Kubernets环境的选择,使用也提出了挑战。比如,有证据表明Spark生态正在逐步从Hadoop YARN向Kubernets原生的调度器以及扩展调度器 e.g. Gang Scheuler迁移。在云计算环境中,由于成本和存储计算分离的模型,HDFS仍然会以存储协议的方式存在,但存储方式会逐步从HDFS的3副本向对象存储(OSS,S3)迁移。云计算环境中,GPU多机多卡MPI计算,Flink流式计算的Kuberntes化已经逐步成为主流了,存储访问方式也多以对象存储方式。但是使用对象存储过程中,大数据/AI应用的计算效率仍然面临严峻的挑战

  1. 减少同一节点对同一Block的反复拉起产生的网络IO。
  2. 减少数据的Shuffle产生的写IO。
  3. 实现计算对数据感知,计算向数据迁移的就近计算。

目前的Kubernetes调度器以及云存储特性并未给出好的解决方案,所以这也给云原生存储在加速大数据计算,弥补IO吞吐不足提供了发挥的舞台。

大数据离线计算比如基因计算已经通过Kubernetes云原生平台来大规模的运行计算任务

  1. 对文件存储峰值吞吐10GBps - 30GBps的峰值刚性兑付

需要独立的高吞吐的文件存储的形态,和交付方式在元原生环境下的演进和变革。

image.png

容器服务成为云原生时代基础设施

随着企业应用上云越来越多的选择使用容器化方式,容器服务在不同的云厂商都有大幅度的业务增长,容器服务已经逐步成为云原生时代新的基础设施和最佳使用云资源的入口。云原生存储对云计算/云存储来说也有了新的内涵,有必要重新思考云存储和云原生存储的本质区别和联系。

image.png

云原生存储和云存储的思考

Cloud Native Storage vs Cloud Storage

对立还是统一?
两者之间的联系?
差异和侧重点?

1. 云原生存储 = 云存储UI,面向应用的申明式应用层存储

云原生存储声明的六要素:

  1. 容量Size
  2. 性能IOPS, 吞吐,时延
  3. 可访问性,共享/独享
  4. IO可观测性
  5. QoS
  6. 多租户隔离

2. 分层存储,重用基础设施红利,不重新发明轮子,针对新的负载类型部分存储形态上移。

3. 在控制平面实现效率,自治方面能力,最大化存储稳定和安全

为了更好的理解在云环境中,如何构建云原生存储,先看几个在Kubernetes企业环境中部署主流的云原生存储,以及对比云存储的形态。

  1. Ceph on Kubernetes with Rook
  2. Portworx
  3. OpenEBS

Ceph on Kubernetes with Rook

Ceph是圣克鲁兹加利福尼亚大学的Sage Weil在2003年开发的,也是他的博士学位项目的一部分。Ceph LTS 成熟稳定,高可用,生态强大在云原生时代和Kubernets紧密集成。Ceph基于RADOS(Reliable Autonomic Distributed Object Store )的高可用存储,在云原生时代之前2003年发行起已经广泛生产部署的高可用存储,支持最广泛的块存储RBD,文件POSIX Cephfs,以及对象存储访问协议。RedHat/SUSE 目前是Ceph最主要的商业化支持者,在多个容器平台落地案例中RBD,CephFS都被采用作为容器平台实施的主要存储,用来来弥补基础云存储的缺失。
image.png

Rook目前是在Kubernetes产品级可用的部署和运维Ceph编排工具。
image.png

Ceph的基本架构由数据面OSDs(RADOS)和控制面MON/RBD/RADOSGW/CEPHFS 组成,以CRUSH Algorithm作为核心算法处理数据冗余和高可用, 上层的应用存储通过librados同数据面OSDs直接完成数据的读写。能够支持快照,备份,监控可观测性等能力,可以通过Rook直接通过Kubernetes输出,RedHat/SUSE也提供独立的集群安装能力。

控制面MON/RBD/RADOSGW/CEPHFS
数据面:OSDs(RADOS)
快照,备份,支持IO监控等存储性能监控,支持RBD QoS的服务端限速能力

Portworx

image.png

Portworx以容器服务的方式部署,每个节点称为PX,向下对接各种公有云的块存储或者裸金属服务器,向上提供块或文件服务
不绑定硬件形态和厂商,可接入任何一家公有云或者自建服务器集群(只需支持iSCSI或FC协议),目前Portworx主打能力云灾备DR,多云复制,具备完备的快照(ROW),多云管理,同步复制(RTO,秒级)异步复制(RPO<=15min), 可以通过Kubernetes CRD申明方式来优雅实现持久化云下应用带数据自动迁移云上能力。PX可以独立部署,并不强依赖Kubernetes的容器网络。

弹性扩展, PX自动识别服务器节点的能力,可动态调度IO

控制面
支持主流容器编排工具:Kubernetes、Mesos、Swarm等
支持IO级别的性能监控

IO面
数据块和元数据打散到不同的节点
使用了缓存和高性能RPC
QOS隔离:不支持
根据底层存储的特性IOPS(4k) 768 - 65024
时延(4k): 0.58ms - 23ms

增值特性
加密(三方秘钥托管,传输加密,落盘加密),支持云厂商KMS集成和Vault
快照(ROW),多云管理,同步复制(RTO,秒级),异步复制(RPO<=15min)
可扩展性 >1000个节点,>10000个Volume
支持拓扑感知计算

OpenEBS

image.png

OpenEBS基于Kubernetes构建的开源版EBS,软件定义PV:将各种介质,包括本地磁盘,云等各种存储统一池化和管理。使用iSCSI作为存储协议。没有绑定某一个厂商的存储,可以灵活的接入各种存储的一个原因。从某种意义上也是更加灵活,轻量。但是强依赖容器网络,增加了抽象层OpenEBS layer, 写入操作要通过抽象层,并且每个卷PV都有独立的controller增加了额外的开销,虽然可以做到更灵活,但相比于Portworx,Ceph在性能上有比较大的劣势。

控制面:扩展容器编排系统,支持超融合。相比块,卷的数量多,卷的大小任意配置,更灵活。
高可用:每个卷可以有多副本,数据实时同步,数据同步是在不同的存储池间进行同步。
快照,备份,监控存储性能功能。
和Cloud-Native Tools有很好的集成:可以使用云原生工具(如Prometheus,Grafana,Fluentd,Weavescope,Jaeger等)来配置,监控和管理存储资源

性能对比

image.png

image.png

测试环境:3台“2 vCPU 以及 16GB 的内存”虚拟机创建的Azure AKS集群,每台虚机挂载1个1TB的Premium SSD存储,测试工具FIO

在这个测试中,以hostPath为云盘的性能基准

  1. Portworx性能最好,PX优化了读性能超过了hostPath模式,但写性能应该是在多副本,PX和裸存储之间的交互损失。
  2. Ceph操作管理复杂,Rook简化了运维复杂性,读性能优化很好,写性能猜测因为写请求进入多个OSDs的通过RPC走以太网造成了数量级的降低。
  3. OpenEBS微服务架构,猜测因为增加了额外的虚拟层,使用了容器overlay网络,以及额外的controller的内存换出的代价,性能优化空间很大

盘古 vs RADOS

对比以上三种开源/企业存储,为了更容易的理解云存储的架构,我们把盘古的分层架构和Ceph存储的分层做一个对比。
可以把CS(Chunk Server)类比Ceph OSDs服务进程,把盘古的Master进程类比于Ceph MDSs进程。
把云产品块存储类比于Ceph RBD, 文件存储类别于CephFS, 对象存储类比于RADOSGW,本地块存储/高性能文件存储CPFS产品暂没有对应。

image.png

随着盘古架构的演进,和盘古2.0的全面推广,用户态TCP网络协议栈的推广,全面的RDMA存储网络,全面优化的RPC性能,上层产品存储也享受到了底层存储变革的巨大红利,进入了亚毫秒级别时延,和百万IOPS的时代,云原生存储也必然是要在产品存储层次之上能够继承这些能力。

云原生存储

通过分析了市场上云原生存储,我们可以发现这些存储都有共同的特征就是支持声明化的API,可以实现对性能,容量,功能等方面实现度量和声明,或多或少对质量/稳定/安全都有不同支持。

  1. 容量Size
  2. 性能IOPS, 吞吐,时延
  3. 可访问性,共享/独享
  4. IO可观测性
  5. QoS
  6. 多租户隔离

进一步来说,云原生负载可以直接通过数据平面无损耗的使用产品存储在1, 2,3的能力,在控制平面继续提升面向用户应用的IO可观测性,应用级的QoS,多租户的隔离能力,通过控制平面接口实现CSI/Flexvolume等可声明的存储接口,并提供对部分存储生命周期的Operator,容器编排把业务应用和存储粘合成为实际的负载声明,可能是更加正确的使用云存储的姿势。

image.png

由于公有云的基础设施产品存储的完备,可以使用更加轻量化的数据平面(virio, nfs-utils, cpfs-sdk, oss-sdk)来访问产品存储,

专有云环境差异较大,部分虚拟化或者无虚拟化环境,SAN和裸盘是主要存储方式,需要通过类似构建ceph RADOS或者盘古实现SDS,然后通过数据平面(librados/px/pv-controller)实现存储的访问。

针对vSphere,OpenStack,飞天所构建的专有云,有接近于共有云的存储提供方式,但因为部署模块的差异,也存在不同的控制/数据平面支持能力的差异。

简单来说就是:

公有云
Cloud Native Storage = Declarative API + Cloud Storage

专有云
Cloud Native Storage = Declarative API + Native Storage

公有云,云原生存储做什么,不做什么

  1. 存储分层,重用基础设施红利,不重新发明轮子

image.png

  1. 云原生存储

      1. 提升数据平面的一致性(kernel/OS/net/client/sdk优化参数和版本控制)
      1. 构建统一的控制平面CSI/Flexvolume/Operator, 提供面向客户声明API
      1. 在调度编排层面实现拓扑感知,实现云盘的zone awareness, 本地盘的node awareness。

image.png

云原生- 块存储

在控制平面通过与Aliyun Linux 2 OS结合使用Kernel Cgroup blkio实现进程级别的buffer IO控制,提升了在应用层对本地盘,云盘的QoS控制的粒度。通过对本地盘的LVM切分可以实现对单机云盘的密度提升。通过对挂载点/设备IO指标测采集能力,实现IO的可观测性。

容量: 单盘32TB
时延:0.2ms – 10ms
IOPS: 5K – 1M
吞吐: 300Mbps - 4Gbps (本地NvME ESSD: 2GBps)
可访问性: 单可用区独占
QoS:单盘隔离,进程隔离
多租户: 单盘隔离

image.png

云原生- 文件存储

在控制平面可以通过对Pod Security Policy和SecuritContext的控制,实现应用的强制UID/GID控制,实现应用对文件系统的ACL控制。控制平面实现对文件系统生命周期的控制,通过对挂载点IO指标测采集能力,实现IO的可观测性。

容量:单文件系统10PB
时延:100微妙 – 10ms
IOPS: 15K – 50K
吞吐: 150Mbps - 20GBps
可访问性: 多集群多可用区共享
QoS:IO争抢
多租户: PSP ACL (namespace)

image.png

云原生 - CPFS并行文件系统

在控制平面实现对文件系统ACL控制,对QoS提供客户端限速的可配置性,文件系统提供生命周期的声明式管理能力Operator,再进一步,在云原生环境内实现CPFS文件系统的声明式部署。

容量:单文件系统100PB
时延:0.5ms – 10ms
IOPS: 50K – 1M
吞吐: 10Gbps - 1000GBps
可访问性: 多集群多可用区共享
QoS:支持客户端限速
多租户: PSP ACL (namespace)

image.png

云原生存储 v1 – 功能性

今天的云原生存储已经实现了在控制平面/控制平面接口对阿里云产品存储的全品类支持,在数据平面也完成了大部分系统级和客户端层的优化。但随着大量的持久化企业应用和智能化应用的容器化迁移,我们依然面临着更多的问题和挑战,将会在下一篇文章探讨。

image.png

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
存储 Kubernetes Cloud Native
【阿里云云原生专栏】云原生容器存储:阿里云CSI与EBS的高效配合策略
【5月更文挑战第29天】阿里云提供云原生容器存储接口(CSI)和弹性块存储(EBS)解决方案,以应对云原生环境中的数据存储挑战。CSI作为Kubernetes的标准接口简化存储管理,而EBS则提供高性能、高可靠性的块存储服务。二者协同实现动态供应、弹性伸缩及数据备份恢复。示例代码展示了在Kubernetes中使用CSI和EBS创建存储卷的过程。
273 3
|
3月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
109 1
|
6月前
|
存储 Cloud Native 对象存储
AutoMQ:基于阿里云计算与存储产品实现云原生架构升级
AutoMQ[1] 是新一代基于共享存储架构实现的云原生 Kafka。得益于其存算分离的共享存储架构,通过和阿里云合作,深度使用阿里云可靠、先进的云服务如对象存储OSS、块存储 ESSD、弹性伸缩ESS以及抢占式实例实现了相比 Apache Kafka 10倍的成本优势并且提供了自动弹性的能力。
84314 25
AutoMQ:基于阿里云计算与存储产品实现云原生架构升级
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
296 2
|
4月前
|
存储 SQL Cloud Native
云原生数据仓库使用问题之如何将数据设置为冷存储
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
5月前
|
存储 Kubernetes 安全
云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露
云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露
126 5
|
5月前
|
存储 SQL Cloud Native
云原生数据仓库AnalyticDB产品使用合集之热数据存储空间在什么地方查看
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
117 4
|
6月前
|
存储 弹性计算 Cloud Native
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
|
6月前
|
存储 Cloud Native 关系型数据库
PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
【5月更文挑战第14天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
303 2
|
6月前
|
存储 人工智能 运维
【云原生企业级数据湖:打破数据孤岛,优化存储成本】
【云原生企业级数据湖:打破数据孤岛,优化存储成本】 随着大数据时代的到来,企业对于数据的处理和存储需求日益增长。如何有效地存储和管理大量数据,同时降低运维成本,成为了企业面临的一大挑战。盛通教育的云原生企业级数据湖方案,正是为了解决这一问题而设计的。
211 1