13

「深度解析」告诉你如何选择容器存储

 3 years ago
source link: https://xie.infoq.cn/article/bc078abea257307b68d654547
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

随着容器技术在生产环境中越来越多被使用,实际用户应用正在从无状态应用程序扩展到需要持久化存储支持的有状态应用程序。IT技术专业人员需要知道如何选择适合在容器中运行有状态应用程序的存储。我们深度解读Gartner报告,就存储类型及应用类型两个维度来帮技术专业人员分析容器存储的选择。

01 容器存储分类

自2013年Docker技术出现以来,容器的持久存储需求逐渐显现。近些年,存储供应商一直在提供各种类型的存储用于在容器和外部存储系统之间建立直通连接的存储插件。

CSI的引入大大加强了容器存储生态系统,因为它标准化了外部存储系统与许多容器编排系统的集成。使用基于CSI的驱动程序,一个容器化的有状态应用程序不需要知道关于底层存储系统的任何信息,应用程序只需将其数据写入文件系统或块设备的容器存储卷,而容器编排系统将透明地处理存储编排和调度的事情。

2018年12月,云原生计算基金会(CNCF)发布了Kubernetes 1.13,CSI正式GA,使得CSI可以在该平台上使用。因此,基于Kubernetes的编排平台现在可以无缝集成任何为存储产品或服务实现CSI的第三方驱动程序。

mumEVrF.jpg!mobile

接下来,我们需要了解一下所有能够提供容器存储卷的方法:

  • 服务器本地存储 :固定在容器正在运行的主机上的存储

  • 传统存储设备 :由其他供应商提供的容器存储驱动程序配置的SAN、NAS或超融合系统(HCIS)平台

  • 分布式文件系统 :由多个服务器提供的统一命名空间的共享文件系统

  • 容器原生存储 :一种软件定义的容器化存储系统,专门为容器化应用程序提供数据管理

  • 云块存储服务 :IaaS平台的块存储服务

  • 云文件存储服务 :IaaS平台的文件存储服务

m6zQn27.jpg!mobile

02 容器化应用分析

容器化应用分类

在容器环境下,每个容器化的应用程序必须实现在启动时确定其数据状态的流程,以及与其他应用程序实例协调状态的流程。下表显示了可以部署在容器中的有状态应用程序的示例。

yye63ir.jpg!mobile

适合容器化的有状态应用程序可以分为以下几个类,每个类具有不同的集群化特征:

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存储图谱的厂商

nIfi6rE.jpg!mobile

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK