容器应用使用阿里云文件存储NAS最佳实践

容器应用需要使用共享文件存储吗

应用程序需要数据, IT方案被创造出来是为了解决商业业务数据的问题。容器问世之时,它最初的目的是应对无状态化服务。随着容器技术的成熟,越来越多的人希望容器化应用可以直接关联数据。不论是传统的还是新型应用,都需要持久化存储。
阿里云文件存储NAS以简单,易用,弹性扩展的特点,自然而然成为容器存储的一个主要选择。

通常来说,共享文件存储存储主要应用在需要长时间运行,多POD间需要共享访问数据,同时还需要进行故障切换的有状态容器业务场景,例如如下的一些场景:

  • 内容管理应用程序像WordPress和Drupal需要扩展到多个实例来获取性能和冗余型,并在多个实例间共享上传数据、插件、模板。
  • 开发工具比如JIRA, Artifactory, Git需要实例之间共享代码和编译数据并实现高可用性。
  • 机器学习框架MXNet和Tensorflow需要通过文件系统接口访问数据,并持久存储允许多个用户共享访问和运行相同的数据集。
  • 共享笔记本系统PAI-Notebook需要持久存储笔记本和用户工作区,并允许多个研究员合作共享访问数据。

可以通过哪些方式将共享文件系统到容器

阿里云文件存储NAS单文件系统默认可以创建两个根目录的挂载地址(可申请更多数量),挂载地址对应的是DNS域名,可以归属于不同的VPC,因此通过不同VPC的挂载地址将文件系统挂载到不同VPC的ECS或者容器应用。

挂载单文件系统到容器

  • 每个POD挂载一个文件系统
    对于不需要数据在多个POD间共享的场景(Deployment无状态服务为主),但又需要持久化存储具备较好的性能和灵活的弹性扩展能力,不同POD间的数据需要完全的隔离以保证数据安全和性能的QOS,我们可以为每个POD挂载一个独立的文件系统。单POD可以独享文件系统的吞吐和IOPS能力。
  • 多个POD挂载一个文件系统
    对于需要在多个POD间共享数据,并且需要POD具备Failover故障恢复能力的场景(Stateful有状态服务为主),我们可以将一个文件系统通过同一挂载地址同时挂载到多个POD上。数据可以被多个POD同时共享访问,单个POD销毁或故障后在其它节点拉起。

挂载文件系统子目录到容器

前面提到,单文件系统默认有两个根路径的挂载地址,但是使用挂载地址+子目录的形式将子目录挂载给单个POD,这样该POD只拥有这个被挂载子目录的权限,无法看到其它子目录的数据。
对于很多微服务化的容器应用,容器POD随着业务规模的变化动态灵活的创建和销毁,为了管理的方便简单,我们可以使用单一文件系统的多目录挂载给不同应用的POD,例如,/application1和/application2,这样application1的POD只能看到自己挂载目录的数据。因为单文件系统的吞吐能力是随存储容量弹性增长,所以使用单一文件系统还有个优势,就是可以通过多目录聚集的容量获得更大的吞吐性能。

什么是静态文件存储卷和动态文件存储卷

静态存储卷是预先创建好PVC和PV,再创建应用时使用对应PV进行存储映射。动态存储卷则只需要预先定义StorageClass,在创建应用的时候动态创建文件系统或者目录后,映射为PV关联给容器使用。例如,当为不同的用户提供不同的nas子目录进行挂载的时候,或者当使用有状态的SatefulSet部署应用,每个pod配置使用不同nas数据卷的时候,推荐使用动态存储卷。

如何选择正确的文件存储规格类型

  • 通用型NAS
    通用型NAS主要特点是容量可以随数据写入或者删除弹性伸缩,吞吐能力也随容量的伸缩弹性变化,通过数据存储容量获得较高的聚合吞吐能力。支持NFS和SMB协议、Quota、ACL、加密,具备较广的企业应用兼容性,同时还支持生命周期管理降低存储成本。通用型NAS在同一个地域内可以跨可用区挂载,配合容器的多AZ实现高可用能力。

应用场景:Linux/Windows企业应用、WEB内容管理、数据库备份、主目录

  • 极速型NAS
    极速型NAS主要特点是提供低时延高IOPS的读写能力,适用于大量小文件,元数据密集型操作的应用场景,可提供百微秒级的时延和200K的IOPS能力。极速型NAS支持NFS协议、快照和加密,建议和容器POD部署在同一个可用分区以获得更低的时延。

应用场景:时延敏感型企业应用、CI/CD开发测试环境、PHP网站、日志存储、轻量级数据库

  • CPFS
    并行文件存储CPFS是专为高性能计算和AI训练设计的高性能并行文件存储,主要针对大容量、高吞吐和高IOPS的高性能计算业务,可提供上百GB/s的吞吐能力。目前阿里云的EHPC镜像,基因容器镜像和AI容器镜像都和CPFS进行了深度集成。

应用场景:HPC高性能计算、AI训练、基因分析、影视渲染、EDA仿真、油气勘探、气象分析

如何备份容器存储的数据

文件系统快照

阿里云文件存储NAS极速型规格支持文件系统快照,可以针对容器挂载的文件系统进行快照保护,快照可配置灵活的策略周期性的创建副本数据,如果发生容器数据人为误删除或者文件系统误删除,都可以通过快照回滚来恢复数据。

文系统备份服务

阿里云文件存储NAS通用型规格支持文件系统备份服务,可以配置备份服务针对容器挂载的文件系统进行备份保护,备份任务周期性的降数据副本保存到备份库。如果你不小心删除数据,需要从备份恢复,你可以恢复备份现有文件系统中的一个目录或一个新的文件系统。

如何加密容器的数据

阿里云文件存储NAS支持数据存储加密功能,当前已经支持使用KMS托管密钥进行数据加密。可以在为容器创建文件系统时选择使能加密功能,KMS服务会默认创建一个托管密钥,并使用该密钥对存储数据进行加密。

通过文件存储生命周期管理降低容器存储成本

阿里云文件存储NAS支持低频存储类型,可以配置生命周期管理策略,将指定时间内没有读写访问的数据自动迁移到低频NAS里存储,最低成本可降低90%,如果后续需要访问这些数据,用户可以直接读写访问,后台透明将数据取回,应用无感知。例如,像基因测序、大数据分析等应用场景,用户生产的大部分数据都不会频繁访问,但是需要长期存储。基于生命周期管理的低频NAS就可以很好的帮助用户解决存储成本和应用访问接口一致的问题。
生命周期管理的配置也非常简单,只需要对需要挂载到容器的文件系统或者子目录启用该功能,并且配置对应策略即可。

如何监控容器存储的状态

阿里云文件存储NAS支持接入阿里云监控服务,可以对文件系统的吞吐、IOPS/元数据OPS和时延进行监控统计,同时可以配置阀值告警。

  • IOPS
    统计了单文件系统总的IOPS性能,如果你使用的是通用型NAS,并且监控到IOPS已经达到了规格上限,则可以考虑拆分为多个文件系统或者更换使用极速型NAS。
  • 吞吐
    统计了所有访问该文件系统的客户端读写带宽总和,如果监控到使用的通用型NAS吞吐达到了上限,可以考虑更换使用CPFS文件存储或者提交吞吐配额提升申请。
  • 时延
    该项统计了文件存储后端的IO读写时延,但并不包含计算节点到文件存储的网络时延,因此对时延数据的分析还要综合考虑跨可用区的因素和VPC网络是否存在异常。
上一篇:用Nginx+Redis实现session共享的均衡负载


下一篇:什么是爬虫|Python爬虫的原理是什么