云原生对象存储架构:单租户与多租户
软件定义的对象存储是一种横向软件方案,因此 MinIO 在各个行业和工作负载中都有客户。没有两个部署是相同的。客户根据位置(公有云、私有云、边缘)和用例(备份、AI/ML、数据湖、物联网、分析、制品库)有不同的需求。
我们的客户和社区面临的一个架构问题是部署的性质。MinIO 是否将支持单个应用程序(如 Veeam 备份)或替换存储设备以支持云原生应用程序?或者 MinIO 是否将支持具有多个应用程序的更动态的环境,例如 对象存储即服务 或 云原生 AI/ML 计划?
软件定义的 MinIO 凭借其灵活性和丰富的云原生集成,可以在单租户或多租户模式下部署,本文旨在帮助您确定适合您部署的架构。
单应用程序、单租户
一个比较简单的经验法则是,如果您正在运行单个应用程序,可以选择单租户、多用户架构。例如,在前面提到的 Veeam 备份用例中,我们建议运行单个 MinIO 租户。在这种情况下,您的单租户可以在裸机、虚拟机或 Kubernetes 上。MinIO 灵活且高效的二进制文件提供了底层硬件支持的最佳对象存储性能。
替换 NAS 设备是另一个具有多个用户的单一应用程序的示例。我们始终建议您通过将所有主目录从现有 NAS 设备导出到单个 MinIO 租户上的单个存储桶来开始迁移。然后,更新登录脚本以使用驱动器映射挂载该存储桶,同时配置 MinIO IAM 和 PBAC 来设置和强制执行权限。这样,就没有人可以在没有明确许可的情况下访问他人的数据,并且您消除了 NAS 设备的孤岛以及 NAS 主目录结构带来的复杂性负担。
单租户、多用户场景的关键是专注于数据访问和文件共享,而不是基于文件和目录结构建立和应用控制。更好的方法是使用 特定于存储桶的 S3 访问策略 来保护数据。
对象存储即服务——基础的多租户用例
MinIO 更常在 Kubernetes 上作为多个租户部署。这种架构在租户之间提供完全隔离,并随着用户和应用程序的数量以及存储在 MinIO 中的数据量的增加而有效地扩展。
一个常见的用例是 对象存储即服务,为开发人员、DevOps 和数据科学团队提供自助服务门户。在 Kubernetes 上部署 MinIO 插件和 MinIO 运算符带来的运营效率克服了您自己构建和维护此类环境所需的大量复杂性障碍。MinIO 运算符可在任何 Kubernetes 发行版上运行——Red Hat OpenShift 4.7+、VMware vSphere 7.0u1、SUSE Rancher 或标准上游。此外,MinIO 可在任何公有云提供商上运行,例如 Amazon Elastic Kubernetes Service、Google Kubernetes Engine 或 Azure Kubernetes Service。
在 Kubernetes 编排的容器化架构中运行多个 MinIO 租户非常高效。这种架构经常部署,因为它可以有效地进行大规模操作。大量用户和应用程序访问多 PB 对象存储会将资源(系统和运行它们的人员)推向极限。实现云原生超大规模需要根据需要独立分离功能并进行扩展,这包括对象存储。
MinIO 专为超大规模操作而设计,这需要简单性。简单意味着可预测性——当出现故障时,您确切地知道发生了故障,并且可以对其进行故障排除。从一开始,企业云架构师就必须隔离工作负载,但要采用整体系统方法,以便他们了解系统应该如何表现以及组件应该如何交互。
通过命令行或图形用户界面创建租户很简单。但对象存储即服务不仅仅是创建租户。每个 MinIO 租户都拥有可用的完整功能集,完全隔离且独立配置。使用 MinIO 运算符的多租户简单、可重复、声明性,并且可以在运行每个租户时在单独的命名空间中进行更新,以实现安全隔离。现在,您可以轻松地获得超大规模的能力:Kubernetes 以租户为扩展单元,以非侵入式方式管理操作和配置。
与其他云原生应用程序和服务的集成进一步简化了操作,从而实现对象存储即服务。使用 LDAP/Active Directory 或 OpenID 提供商等外部身份提供商来保护 MinIO 租户非常容易。MinIO 集成到现有基础设施中,用于监控和警报,例如 Prometheus 和 Grafana。分层可以通过使用 Kubernetes StorageClasses 来声明性地完成,以根据每个租户的性能要求分配 HDD 和 NVMe 驱动器集。
以应用程序为中心
作为一般规则,在规划 MinIO 部署时,围绕应用程序创建存储桶和安全策略比围绕用户设计它们更重要。每个应用程序都使用自己的存储桶。对于多个组和用户,我们建议使用外部 身份和访问管理 (IAM) 解决方案,并依赖于 特定于存储桶的 S3 访问策略.
单租户或多租户:您来选择
云原生方法是专注于微服务、应用程序和框架。为了取得成功,您需要在选择和部署对象存储时保持这种关注。软件定义的 MinIO 可以以单租户或多租户配置部署在任何地方。与外部 IAM 和 S3 访问策略的集成完善了企业方程式。
您是否有关于部署 MinIO 以满足您的要求的问题?请在 Slack 上提问或发送电子邮件至 hello@min.io.