使用 MySQL Database Service 在 Oracle Linux 上部署 Drupal CMS

Drupal 是一种常用的内容管理系统 (Content Management System, CMS) 之一。它是免费的开源,根据 GNU 公共许可证发布的。

Drupal 基于 LAMP 堆栈,为用户和企业提供了可扩展且强大的架构、低实施和维护工作,以及基于社区的大型知识库。其设置和使用方法不需要高级技术技能。它为全球各地的网站提供了基础设施,包括个人博客、企业政治和政府网站。它非常可扩展且模块化,在各种情况下非常有用。

体系结构

您可以在单个节点中部署 Drupal,也可以在高可用性多节点配置中部署。此参考体系结构包括与两个配置兼容的 Terraform 自动化。

有关生产级的高可用性体系结构,请参阅下图,其中说明了多节点方案。

后面是 drupal-mds-multi.png 的说明
插图 drupal-mds-multi.png 的说明

drupal-mds-multi-oracle.zip

上图说明了 OCI 上简化的高可用性应用环境,重点介绍负载平衡器后面的两个虚拟机实例。这些实例位于可用性域内的两个不同容错域中。此体系结构使用 OCI 文件存储服务;Drupal 安装在共享网络文件系统 (Network File System, NFS) 中。该文件系统存在于专用专用子网中,该子网中的网络安全组 (Network Security Group, NSG) 允许从所有实例访问挂载目标。

下图说明了简单的单节点体系结构。它包括一个轻量级部署,它可能适用于学习目的或作为概念证明。

后面是 drupal-mds-single.png 的说明
插图 drupal-mds-single.png 的说明

drupal-mds-single-oracle.zip

此单节点体系结构具有单个 VM 实例和独立 MySQL 数据库系统 (MDS) 功能。实例放置在公共子网中,可以从 Internet 访问,而 MDS 则放置在专用子网中。安全列表和路由表用于限制和路由流量。

多节点体系结构包含以下 OCI 组件:
  • 租户

    租户是安全隔离的分区,在您注册 Oracle Cloud Infrastructure 时,Oracle 将在 Oracle Cloud 中设置该分区。您可以在租户中的 Oracle Cloud 中创建、组织和管理资源。租户与公司或组织同义词。

  • 策略

    Oracle Cloud Infrastructure Identity and Access Management 策略指定谁可以访问哪些资源以及如何访问。在组和区间级别授予了访问权限,这意味着您可以编写在特定区间或租户中为组提供特定类型的访问权限的策略。

  • 划分

    区间是 Oracle Cloud Infrastructure 租户中的跨区域逻辑分区。使用区间在 Oracle Cloud 中组织资源、控制对资源的访问并设置使用限额。要控制对给定区间中资源的访问,您可以定义策略来指定谁可以访问资源以及他们可以执行的操作。

  • 虚拟云网络 (VCN)

    您在 OCI 中的第一步是为云资源设置虚拟云网络。VCN 是您在 OCI 区域中设置的软件定义网络。VCN 可以划分为多个子网,具体取决于区域或可用性域。特定于区域和可用性域的子网可以共存于同一 VCN 中。子网可以是公共子网,也可以是专用子网。

  • 可用性域

    可用性域是一个区域中的独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,以提供容错功能。可用性域不共享基础设施(例如电源或冷却设备)或内部可用性域网络。因此,一个可用性域出现故障不太可能影响区域中的其他可用性域。

  • 负载平衡器

    Oracle Cloud Infrastructure Load Balancing 服务可提供从单个入口点到后端多个服务器的自动流量分配。

  • 计算实例

    使用 Oracle Cloud Infrastructure 计算,可以预配和管理计算主机。您可以根据自己的资源需求(CPU、内存、网络带宽和存储)启动计算实例。创建计算实例后,您可以安全地访问该实例,重新启动它,连接和分离卷,然后在不需要时终止它。

  • Internet 网关

    互联网网关允许在 VCN 中的公共子网与公共互联网之间通信。

  • 动态路由网关 (DRG)

    DRG 是虚拟路由器,用于为内部部署网络和 VCN 之间的专用网络流量提供路径,还可以用来在同一区域或不同区域中的 VCN 之间路由流量。

  • 网络安全组 (NSG)

    NSG 用作云资源的虚拟防火墙。通过 Oracle Cloud Infrastructure 的零信任安全模型,所有流量都将被拒绝,并且您可以控制 VCN 中的网络流量。NSG 包含一组入站和出站安全规则,这些规则仅应用于单个 VCN 中的一组指定 VNIC。

  • 文件存储

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

建议

在具有 MySQL Database Service 的 Oracle Linux 上部署 Drupal CMS 时,请使用以下建议作为起点。您的要求可能不同于此处描述的体系结构。
  • VCN

    创建 VCN 时,请确定您在每个子网中的云资源需要多少个 IP 地址。使用无类域间路由 (Classless Inter-Domain Routing, CIDR) 表示法,指定足以容纳所需 IP 地址的子网掩码和网络地址范围。使用标准专用 IP 地址空间内的地址范围。

    选择与内部部署网络或任何其他网络不重叠的地址范围,以便您可以根据需要设置 VCN 与内部部署网络之间的连接。

    设计子网时,请考虑流量和安全要求。将同一层或角色中的所有计算实例连接到同一子网,以实现安全边界。

  • 安全性

    使用策略来限制哪些人可以访问贵公司拥有的 OCI 资源及其访问方式。使用 Vault 对密钥、证书和密钥进行额外保护。

    网络服务提供了两个虚拟防火墙功能,这些功能使用安全规则来控制数据包级别流量:安全列表和网络安全组 (NSG)。NSG 由一组入站和出站安全规则组成,这些规则仅应用于您在单个 VCN 中选择的一组 VNIC。例如,您可以选择在 VCN 中多层应用的 Web 层中用作 Web 服务器的所有计算实例。

    NSG 安全规则的作用与安全列表规则相同。但是,对于 NSG 安全规则的源或目标,您可以指定 NSG 而不是 CIDR 块。因此,您可以轻松编写安全规则来控制同一 VCN 中两个 NSG 的流量或单个 NSG 中的流量。创建数据库系统时,您可以指定一个或多个 NSG。您还可以更新现有数据库系统以使用一个或多个 NSG。

  • 计算

    根据需要为每个实例选择具有适当 OCPU 和内存组合的配置,并根据需要预配本地 NVMe 和 / 或块存储。考虑使用可用的弹性配置,这种配置可以在合并 OCPU 和内存时提供更高的灵活性。

  • 数据库

    根据计划的工作负载选择 Oracle MySQL 数据库服务配置。为三个冗余节点启用 MySQL 高可用性。

考虑事项

在具有 MySQL Database Service 的 Oracle Linux 上部署 Drupal CMS 时,请考虑以下因素:

  • 应用程序可用性和可扩展性

    在此示例中,在高可用性体系结构中,我们显示了同一可用性域内不同容错域中的两个实例。您可以选择将实例放在不同的可用性域(在可用的区域中)中,来实现更高的容错能力。

    一种替代方法是使用实例池和自动缩放,这种方法代表对更苛刻和不同的性能需求的更动态的适应。通过实例池,您可以基于同一区域中的相同配置预配和创建多个计算实例。

    利用自动缩放,您可以根据性能指标(例如 CPU 占用率)自动调整实例池中的计算实例数。自动缩放有助于您在高需求期间为用户提供一致的性能,并帮助您在低需求期间内降低成本。

  • 数据库可用性和可扩展性

    高可用性架构中显示的 MySQL Database 系统使用内置的 MySQL 高可用性选项,该选项创建三个实例并将它们放置在不同的容错域中。

  • 数据库备份
    MySQL Database Service 支持两种类型的备份:完全备份数据库系统中包含的所有数据,增量备份仅支持自上次完整备份以来添加或更改的数据。备份按以下方式运行:
    • 手动:控制台中的操作或通过 API 发出的请求将启动备份。手动备份至少可以保留一天,最多保留 365 天。
    • 自动:自动调度的备份在用户选择时无需进行任何必需的交互。自动备份保留 1 到 35 天。默认保留值为 7 天。如果已定义,则无法编辑自动备份的保留期
  • 计算备份

    Oracle Cloud Infrastructure Block Volumes 服务用于对块存储卷上的数据进行时间点备份。然后,您可以立即或稍后将这些备份还原到新卷。您还可以使用该服务对引导卷进行具有崩溃一致的时间点备份,而不会出现应用中断或停机。引导卷备份功能与块存储卷备份功能相同。

  • 安全策略

    使用策略来限制谁可以访问公司的 OCI 资源以及他们如何访问它们。

  • 网络安全性

    网络服务提供了两个虚拟防火墙功能,这些功能使用安全规则控制数据包级别流量:安全列表网络安全组 (network security group, NSG)。NSG 由一组入站和出站安全规则组成,这些规则仅应用于您在单个 VCN 中选择的一组 VNIC。例如,您可以选择在 VCN 中多层应用的 Web 层中用作 Web 服务器的所有计算实例。

    NSG 安全规则的作用与安全列表规则相同。但是,对于 NSG 安全规则的源或目标,您可以指定 NSG 而不是 CIDR 块。因此,您可以轻松编写安全规则来控制同一 VCN 中两个 NSG 的流量或单个 NSG 中的流量。创建数据库系统时,您可以指定一个或多个 NSG。您还可以更新现有数据库系统以使用一个或多个 NSG。

    在这些示例中,实例显示为公共子网中的现有实例。考虑将它们放在专用子网中以提高安全性。在这种情况下,需要堡垒才能访问实例。

部署

此参考体系结构的 Terraform 代码作为 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈提供。您也可以从 GitHub 下载代码,并对其进行定制以满足您的特定需求。

  • 使用 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈进行部署:
    1. 单击 部署到 Oracle Cloud

      如果您尚未登录,请输入租户和用户凭证。

    2. 选择要将堆栈部署到的区域。
    3. 按照屏幕上的提示和说明创建堆栈。
    4. 创建堆栈后,单击 Terraform Actions,然后选择 Plan(计划)
    5. 等待作业完成,然后查看计划。

      要进行任何更改,请返回 "Stack Details"(堆栈详细信息)页面,单击 Edit Stack(编辑堆栈),然后进行所需的更改。然后,再次运行计划操作。

    6. 如果不需要进一步更改,请返回 "Stack Details"(堆栈详细信息)页面,单击 Terraform Actions(Terraform 操作),然后选择 Apply(应用)
  • 在 GitHub 中使用 Terraform 代码部署:
    1. 转到 GitHub
    2. 将资料档案库克隆或下载到本地计算机。
    3. 按照 README 文档中的说明进行操作。

致谢

  • 作者:Nuno Gonçalves