关于使用 Oracle Cloud Infrastructure Object Storage 进行存储现代化

此解决方案手册将帮助您了解如何设计和执行将长期存储从本地或 NFS 文件系统迁移到 Oracle Cloud Infrastructure Object Storage ( OCI Object Storage )。这样的解决方案可以帮助降低成本,并将保留、生命周期规则和预先验证的请求作为新增功能来应用。

在本解决方案手册中,我们将使用客户用例来重点介绍成功实施现代化工作的起点。

我们经常在同一场对话中讨论云迁移和现代化,讨论可用的所有方法、服务和产品。谈话通常需要采取分阶段的方法,即整个数据中心系统地迁移到云端,按原样提升和移动,然后所有其他事情都效仿。

在初始阶段完成后,与安全性、监视、当前和持续集成挑战相比,应用现代化通常会失去重要性。它还强调了从基础设施团队可以完成的工作转变为应用团队的工作。预算、时间安排和其他优先级优先,因此应用可以按原样在云中运行。为了实现云可以提供的真正潜在节省,企业应该寻求对象存储等技术,以节省成本。

文件归档是一个很好的起点,因为它们可以从 NFS 转换为 OCI 对象存储,而很少需要进行开发和测试。根据具体用例,实现这样的解决方案可以按存储的 10-50x 顺序保存。企业已经意识到运营数据中心正在成为一种责任,并可能导致看不见的额外成本,随着潜在攻击,服务损失和竞争对手不断创新。

这应使使用 OCI Object Storage 等云原生服务成为优先事项,从而节省成本、保护业务、分担使用超大规模设备运行各种不同工作负载的负担等。

了解迁移后的挑战

这里的关键是专注于迁移后的痛点,并重新设计一个足够大的应用程序,使其具有影响力,但足够小,可以在单个设计冲刺中处理。这样,企业既可以节省成本,又可以放心地进行开发,同时降低开发和测试成本。

对于本解决方案手册中的用例而言,共享文件存储 (NFS) 的成本在云中成为一个问题,而应用程序的原始设计成为不那么容易更改的原因。在从内部部署到云的迁移项目中,我们谈到了对象存储作为文件存储更便宜、更可靠的替代方案,纸上谈到了节省 10x 的成本。添加备份和复制,该 10x 可能更高。跨区域复制、保留锁定和生命周期策略等高效功能可以协同工作,使对象存储成为存储重要文档的具有成本效益、可靠性和安全性的系统的基础。但是,当应用程序围绕 NFS 文件系统设计用于文档存储并且需要 POSIX 语义时,会变得更加困难。

在此用例中现代化的应用程序是一个标准的 3 层应用程序,但有几个外部组件必须运行协调和 CPU 密集型流程来生成客户账单,将其发布到有组织的目录结构中,并将其编目为下载和长期存储。这些 PDF 和其他文件存储在具有非常特定的文件命名模式的大型 NFS 文件系统中,以便通过生成的路径进行访问。另一个应用程序是围绕 Apache HTTP 服务器构建的,使用这个 NFS 共享的长期存储区域作为其文档根目录,以便从应用程序生成的 URL 可以用于从过去 2 年的任何时间下载文件。最后,可以从在线归档中删除超过一定年龄的文件,但仍然可以由寻求记录的审计人员请求。

因此,所有不超过 10 年的文件都必须保存在 NFS 文件系统上,基本上每天都要花费更多的钱来生成新文件。问题存在于多个不同的应用程序中,因此成本问题只会随着时间的推移而变得更糟。

利用 OCI 对象存储

对象存储非常适合不经常变化的文件。这与 NFS 形成鲜明对比,NFS 专注于混合使用的共享存储。

通过利用 OCI Object Storage 服务的多个对象存储设计元素和一些特定功能,我们可以提高可用性并降低适合工作负载的成本。

在此用例中,为中期访问和长期归档创建的文件非常适合。这些文件可能被写入一次,并且需要存储数月或数年而无需更改。事实上,企业可能希望确保它们在一段时间内是不可变的。

总体而言,以下是对象存储相对于传统文件存储在这些类型文件中的优势的一些基本原因。

  • 可用性:对象存储是一个区域性服务,这意味着它与单个可用性域无关。
  • 搜索:与仅依赖文件名和 POSIX 样式的查找命令相比,使用对象元数据可能更有用。
  • 保留规则:编写对象后,可以确保整个存储桶不会发生更改,以确保立即符合要求。
  • 存储层:对象存储层(自动或手动)可大幅降低不经常访问或业务规则所需的保留对象成本。
  • 生命周期策略:在保留后优化存储层与自动删除(清除)之间的移动将节省存储和管理。
  • 复制:轻松、自动地将整个存储桶复制到其他区域可以提高可用性和数据访问能力。
  • 成本:正确构建和维护的对象存储成本远低于复制和杂乱的 NFS 文件系统。

对于需要挂载的共享 POSIX 式文件系统的应用程序,NFS 仍然非常有用。客户对于共享存储仍需要 NFS,但其使用仅限于“运行”文件,而不是“归档”文件。此处介绍的解决方案包括如何设置和访问对象存储,以及如何修改应用以同时使用 NFS 存储和为长期存储创建的新对象存储归档。

体系结构

此架构展示了将长期存储迁移到 OCI 对象存储的设计和执行,这有助于降低成本,并应用保留、生命周期规则和预先验证的请求作为新增功能。

以下图像描述了体系结构“之前”和“之后”实现。Oracle File System Service (FSS) 用于大型共享文件系统。在此从内部部署数据中心迁移的文件系统上,应用程序组件使用批处理来持续生成归档文件。因此,同一 NFS 文件系统同时包含执行中间处理所需的应用程序元素(脚本、临时文件等)实际文件归档,这些归档存储在必须根据业务要求维护长达 10 年的分层结构中。

设置后, OCI Object Storage 存储桶用于托管 NFS 正在执行的归档部分。狭义地定义了读取和写入存储桶的权限,并建立了保留和生命周期规则,以便为大量数据流入做好准备。归档文件的大层次结构将复制到 OCI 对象存储,并且批处理会重构以在新对象存储桶上放置新归档文件。还对访问机制进行了略微重构,以便从对象存储访问文件,从而阻止了应用程序其余部分和最终客户对其访问这些归档的方式进行更改。

下图说明了实施之前的体系结构:



oci-object-storage-modernization-arch-oracle1.zip

下图说明了实施后的体系结构:



oci-object-storage-modernization-arch-oracle.zip

a:默认 OSS 策略:
  • 租户管理员 - 完全访问权限
  • 应用程序管理员 - 无对象读取的有限访问
  • 只读 - 无对象读取的存储桶检验
b:动态组 IAM 策略:
  • 每个动态组添加的语句
  • 狭义地为特定资源定义
c:动态组定义(以下任一):
  • 实例 OCID 列表
  • 实例区间 OCID
d:保留规则:
  • 3650 天(10 年)
  • 已锁定

e:生命周期规则:

  • 90 天后 - 不经常存储
  • 180 天后—归档存储
  • 3651 天后 - 删除

此体系结构支持以下组件:

  • 对象存储

    Oracle Cloud Infrastructure Object Storage 支持您快速访问任意内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据以及图像和视频等丰富内容。您可以安全地存储数据,然后直接从互联网或云平台检索数据。您可以在不降低性能或服务可靠性的情况下扩展存储。将标准存储用于需要快速、立即和频繁访问的“热”存储。将归档存储用于长期保留、很少访问或很少访问的“冷”存储。

  • 文件存储

    Oracle Cloud Infrastructure File Storage 服务提供持久、可扩展、安全的企业级网络文件系统。您可以从 VCN 中的任何裸金属、虚拟机或容器实例连接到文件存储服务文件系统。您还可以使用 Oracle Cloud Infrastructure FastConnect 和 IPSec VPN 从 VCN 外部访问文件系统。

  • Identity and Access Management (IAM)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) 是 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Applications 的访问控制层。通过 IAM API 和用户界面,您可以管理身份域和身份域中的资源。每个 OCI IAM 身份域代表一个独立的身份和访问管理解决方案或不同的用户群体。

身份管理的注意事项

使用专用对象存储桶意味着要设置正确的使用权限。缺省情况下,通常不会向用户组和动态组授予对宽权限集(例如 object-family )的访问权限,除非该权限集限定在某个区间中。

在开始此解决方案之前,需要确保只有您希望有权访问对象存储的组具有权限。此处非常有用的一点是遵循有关限制访问的 CIS 体系框架方法。实施此解决方案时,我们将讨论动态组的创建,因此有必要了解租户的区间结构以及落地区域讨论的概念。还可以阅读 OCI Policy Syntax ,包括如何狭义地定义动态组和策略语句。

尽管 RCLONE 和 OCIFS 都支持标准 OCI API 密钥作为验证机制,但我们选择了实例主用户和动态组进行验证。这样可以改善整体安全状况—不需要创建、分发或旋转密钥。而是使用单独的动态组,以确保每个动态组具有尽可能窄的权限。例如,允许 RCLONE 动态组的策略允许创建存储桶,而 Apache 动态组只允许读取对象。

归档存储的注意事项

为了节省成本并利用 OCI 对象存储的最低成本层,此解决方案实施了生命周期规则,将对象移至“不常用层”,在创建后的一段时间后移至“归档层”。

归档对象后,无法将其直接重新分类为标准层。由于归档对象存储的脱机性质,需要开发一个进程,在该进程中可以请求审计(业务流程),从归档中提取某些文件,然后文件在有时间限制的时段内可供访问。

再次,使用对象存储的固有功能,可以临时撤回文件,复制到临时位置(另一个存储桶),并使用预先验证的请求 (PAR) 在外部公开文件。这些是默默无闻的 URL(默默无闻的安全性),允许访问存储桶中的特定文件,并且可以在设置的时间后过期,从而撤消访问。

在撤回期间,可以将文件复制到新的标准层存储桶,然后这些文件会自动恢复为归档模式,并且不需要维护。可以将 RCLONE 和 OCI CLI、Java、REST 或 Python 类似地用于主解决方案,还可以再次授予对特定审计存储桶的访问权限。