「深度解析」告诉你如何选择容器存储
随着容器技术在生产环境中越来越多被使用,实际用户应用正在从无状态应用程序扩展到需要持久化存储支持的有状态应用程序。IT 技术专业人员需要知道如何选择适合在容器中运行有状态应用程序的存储。我们深度解读 Gartner 报告,就存储类型及应用类型两个维度来帮技术专业人员分析容器存储的选择。
01 容器存储分类
自 2013 年 Docker 技术出现以来,容器的持久存储需求逐渐显现。近些年,存储供应商一直在提供各种类型的存储用于在容器和外部存储系统之间建立直通连接的存储插件。
CSI 的引入大大加强了容器存储生态系统,因为它标准化了外部存储系统与许多容器编排系统的集成。使用基于 CSI 的驱动程序,一个容器化的有状态应用程序不需要知道关于底层存储系统的任何信息,应用程序只需将其数据写入文件系统或块设备的容器存储卷,而容器编排系统将透明地处理存储编排和调度的事情。
2018 年 12 月,云原生计算基金会(CNCF)发布了 Kubernetes 1.13,CSI 正式 GA,使得 CSI 可以在该平台上使用。因此,基于 Kubernetes 的编排平台现在可以无缝集成任何为存储产品或服务实现 CSI 的第三方驱动程序。
接下来,我们需要了解一下所有能够提供容器存储卷的方法:
服务器本地存储:固定在容器正在运行的主机上的存储
传统存储设备:由其他供应商提供的容器存储驱动程序配置的 SAN、NAS 或超融合系统(HCIS)平台
分布式文件系统:由多个服务器提供的统一命名空间的共享文件系统
容器原生存储:一种软件定义的容器化存储系统,专门为容器化应用程序提供数据管理
云块存储服务:IaaS 平台的块存储服务
云文件存储服务:IaaS 平台的文件存储服务
02 容器化应用分析
容器化应用分类
在容器环境下,每个容器化的应用程序必须实现在启动时确定其数据状态的流程,以及与其他应用程序实例协调状态的流程。下表显示了可以部署在容器中的有状态应用程序的示例。
适合容器化的有状态应用程序可以分为以下几个类,每个类具有不同的集群化特征:
SQL 数据库:MySQL 和 PostgreSQL 等开源数据库深受云原生应用程序开发人员的欢迎。传统 SQL 数据库通常使用 HA 集群配置,当 HA 集群部署在容器中时,可以使用容器编排系统自动重新启动失败的数据库实例——只要容器在故障转移之后与原始存储重新连接。
NoSQL 数据库:NoSQL 数据库是为超大规模设计的非关系型数据库。这类数据库具有模块化、特性,将它们部署到容器中非常简单。容器可以使用编排系统进行管理,使用数据复制来确保在组件实例失败时数据副本仍然可用。
分析:分析应用程序,如 Elasticsearch、Solr 和 Spark,使用集群等方式来做负载均衡及维护可用性。它们的核心组件通常适合在容器中部署, Elasticsearch 可以执行自己的数据复制;Hadoop 和 Spark 依赖 Hadoop 分布式文件系统来同步对数据的访问。
内容管理:内容管理应用程序(如 Drupal 和 WordPress)在数据库(如 MySQL 或 PostgreSQL)中维护它们的状态。
CI/CD:容器可用于构建 CI/CD 工具(如 Jenkins)。Jenkins 使用主从模型构建分布式集群,它用一个文件目录来维护其状态。因此,有必要使用共享文件系统在运行在不同主机上的容器之间共享该目录。
数据处理:数据处理应用程序,如图形绘制和视频转码工具,都可以使用应用程序实例集群化来处理大型批处理作业。它们通常依赖于共享文件系统来协调分布式任务的状态和传输数据。
Kafka 流处理平台是个例外,它使用自己的复制机制在实例之间共享数据。如果应用程序实例失败,它的数据仍然对其他实例可用,而不依赖于共享存储。
高性能计算:当这些应用程序部署在容器中时,可以使用容器编排来调度它们的多个实例,以便跨主机集群并行处理任务。与数据处理应用程序一样,HPC 应用程序通常依赖于并行共享文件系统在应用程序实例之间传输数据。
机器学习:容器适用于部署 ML 应用程序,比如 TensorFlow。TensorFlow 使用分布式计算处理不同进程中的图形部分,每个进程都可以在单独的容器中运行。
03 应该使用哪种容器存储?
我们该怎样选择适合的容器存储呢?在选择存储之前,需要回答以下问题:
应用程序将使用集群架构吗?
应用程序集群将使用复制或共享存储进行数据同步吗?
应用程序使用什么数据格式?
应用程序是否需要高级数据服务?
应用程序容器的启动和停止的频率是多少?
应用程序部署的基础架构(公有云、私有云、混合云)?
集群架构
容器化应用程序使用的数据同步方法从根本上决定了持久化存储方案。对于独立应用程序和无共享集群方法(基于主从复制或多主机复制),Gartner 建议将容器存储卷绑定到提供最高性能的本地存储资源。
在本地,使用容器主机上的硬盘,这些硬盘不需要通过网络。
在云计算中,使用能提供最高性能的存储服务,共享存储。
对于需要共享存储的应用程序,应该选择 NAS 或者分布式文件系统解决方案。
在本地,可以使用传统的 NAS 设备,也可以使用分布式文件系统产品。
在云计算中,使用云平台提供的本地文件服务。但是,这种方法不一定会产生最大的性能,因为公有云中的文件服务本质上必须通过多租户网络访问。
容器原生存储解决方案可保证容器运行中的可伸缩性和可靠性,同时还提供企业数据管理特性。
存储数据类型
根据容器存储驱动程序的实现,容器存储卷有以下两种方式来对容器编排提供存储资源:
块:块存储卷,将作为容器内部的一个虚拟块设备出现。这些设备直接通过 FC、FCoE、小型计算机系统接口(SCSI)或 Internet SCSI (iSCSI)等底层协议。块存储主要提供给管理块级数据的数据库服务。
文件:使用文件系统挂载的卷,它将作为容器内的目录出现。容器化的应用程序使命令(如打开、关闭、创建和删除)与存储进行通信。
高级的数据服务
在生产环境中,一些企业应用程序需要高级数据服务,比如加密、快照、备份和 DR。
随着有状态应用程序的容器化,一些应用可能需要重新设计数据服务。例如,可能要求能够跨集群备份和恢复该容器的存储卷。在公共云中,可能需要跨区域复制,或者将存储卷备份到云服务的对象存储服务。在这些情况下,在迁移或恢复之后,都需要有通过一些方法将存储卷与容器重新绑定。
容器的生存期
有状态应用程序有不同的存储需求,还取决于以下几点:
应用规模
应用的性能需求(吞吐量或延迟)
容器的生命周期及启动和停止运行的频率
根据 Datadog 对 Docker 采用情况的调查,容器的启停频率是 vm 的 12 倍,平均使用寿命为 2 天(而 vm 为 23 天)。
高启停频率的系统会带来数据持久化的挑战,因为有些存储系统的设计目的不是处理容器存储资源的频繁、快速供应和回收。容器启停后可能面临跨服务器重新挂载数据的挑战。焱融科技 YRCloudFile 就这一问题单独做了改进,适应容器高频启停的挑战。
部署基础设施:公有云、私有云或混合云
容器不管在共有云环境还是在私有云环境中,同样能运行得很好。根据风险分类、策略、工作负载需求或延迟和带宽需求,可以将数据放在公有云或者私有云环境中。
04 YRCloudFile,我们为容器做了什么?
自从云原生计算基金会(CNCF) 对 Kubernetes 1.13 版本正式 GA 了 Container Storage Interface (CSI),国内一些 SDS 厂家也纷纷宣布对 CSI 接口的支持。焱融科技是国内最早支持 CSI 容器存储接口的厂商之一,也是国内首家进入 CNCF Landscape 存储图谱的厂商。
YRCloudFile 是一款分布式文件系统,可以部署在私有云或者公有云中。使用分布式文件系统挂载容器存储卷的一个关键特性是,它们可以由多个容器同时访问,这些容器可以在同一台主机上或者不同的主机上(ReadWriteMany 访问模式)。此功能允许分布式文件系统支持需要共享存储的容器化应用程序。另外,YRCloudFile 还支持 ReadWriteOnce 访问模式,此模式仅允许单个 pod 访问,满足独享存储应用程序(如数据库应用)的需求。
可以说,YRCloudFile 在容器存储支持上有着天然优势。为了保持焱融科技在国内容器存储市场的绝对领先的优势,YRCloudFile 还为容器支持做了什么?
容器编排对 CSI 故障的动态感知
YRCloudFile CSI 接口对故障动态感知功能,当 CSI 状态出现问题时,K8S 可标记该 Node,从而避免 Master 节点把新建有状态 Pod 分发到该 CSI 故障 Node。从而,单个 CSI 接口出现故障,不会影响整个 Kubernetes 集群的效能。
列表及过滤
首先,我们把 Kubernetes 目录列表(Pod、PVC、PV)引入了 YRCloudFile 管理界面,并且以可管理性和可操作性为出发点,支持对相关列表(Pod、PVC、PV)的名称、容量、label 等进行检索、过滤、排序等。
PV 粒度的热点分析及性能监控和告警
针对实际应用环境中,大量 PV 共享存储资源,单个 PV 热点无法排查的问题,YRCloudFile 做了专门的改进方案,列出 top hot spot,方便用户管理。
另外 YRCloudFile 还增加了针对每一个 PV 的性能告警功能,可以针对重点需要监控的 PV,设置 PV 性能告警阈值,实现细粒度的管理和监控。
PV 性能 QoS
YRCloudFile 能够在管理界面设置持久卷(Persistent Volume)的 IOPS 和带宽 BW 的 QoS,从而达到有效利用存储资源的效果。
PV Insight
PV Insight 功能使用户可以快速浏览三维的 PV 使用情况,使用 PV Insight,通过图形化的方式,能够快速查看 PV 内的数据层次、文件大小、数据温度,从而帮助用户对业务进行分析和调整。
PV Resize
YRCloudFile PV resize 功能,不需要将应用程序或服务脱机。只需一个简单的操作,即可以调整 PV 的大小。
Prometheus 及 Grafana 支持
YRCloudFile 不仅提供自定义的 Prometheus exporter,向 Prometheus server 提供集群监控数据,并且提供基于 Grafana 的集群监控 Web 展现模板。用户可以统一观察到所有集群的状态,从而提高运维的效率。
YRCloudFile 同城双活数据中心
企业越来越多地考虑基于容器平台的 IT 架构,容器平台跨数据中心的需求和场景也越来越多,YRCloudFile 创新性地实现了双活容器存储、本地优先读、双活存储池加本地存储池统一管理的功能,为客户提供了更灵活的 IT 架构。
焱融科技通过收集实际客户反馈信息,调研行业主流发展方向,在容器持久化存储方向不断改进,致力于为用户提供一个成熟的容器存储解决方案。
关于焱融科技
焱融科技是一家以软件定义存储技术为核心竞争力的高新技术企业,在分布式存储等关键技术上拥有自主知识产权,是高性能文件存储和容器存储的领导者。焱融科技核心产品 YRCloudFile 在全球 IO500 性能测试中,进入世界前六。同时,YRCloudFile 是国内首个进入 CNCF Landscape 的容器存储产品。焱融科技针对各行业业务特性,打造个性化行业解决方案,提供一站式的产品与服务。焱融科技系列产品已服务于人工智能、金融、政府、制造业、互联网等行业的众多客户。了解更多焱融科技信息,请访问官网http://www.yanrongyun.com。
版权声明: 本文为 InfoQ 作者【焱融科技】的原创文章。
原文链接:【http://xie.infoq.cn/article/bc078abea257307b68d654547】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论