在具有 MySQL Database 服务的 Oracle Linux 上部署 Magento eCommerce

您可以在具有 MySQL Database Service 的 Oracle Linux 上部署 Magento eCommerce,以便为用户和企业提供强大的可扩展架构、低实施和维护工作以及访问社区主导的大型知识库。

Magento 是在 PHP 中编写的开源电子商务平台,可以使用 Laminas 和 Symfony 等其他 PHP 框架。其源代码在 Open Software License (OSL) v3.0 下分发。Magento 采用 MySQL 关系数据库管理系统、PHP 编程语言和 Zend Framework 元素。它应用面向对象的编程和模型视图控制器体系结构的约定。

体系结构

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

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

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

Magento-mds-multi-oracle.zip

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

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

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

Magento-mds-single-oracle.zip

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

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

  • 划分

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

  • 虚拟云网络 (VCN)

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

  • 可用性域

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

  • 负载平衡器

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

  • 计算实例

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

  • Internet 网关

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

  • 动态路由网关 (DRG)

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

  • 文件存储

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

  • 网络安全组 (NSG)

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

建议

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

    创建 VCN 时,根据您计划连接到 VCN 中子网的资源数,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    选择与内部部署网络或任何其他网络不重叠的地址范围,以便您可以根据需要设置 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 上部署 Magento eCommerce 时,请考虑以下因素:

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

    在此示例中,在高可用性体系结构中,我们显示了同一可用性域内不同容错域中的两个实例。您可以选择将实例放在不同的可用性域(在可用的区域中)中,来实现更高的容错能力。一种替代方法,通过使用实例池和自动缩放,可以呈现更动态地适应更苛刻和不同的性能需求。

    通过实例池,您可以基于同一区域中的相同配置预配和创建多个计算实例。

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

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

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

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

    Oracle Cloud Infrastructure Block Volumes 服务用于对块存储卷上的数据进行时间点备份。然后,您可以立即或稍后将这些备份还原到新卷。

    您还可以使用该服务对引导卷进行具有崩溃一致的时间点备份,而不会出现应用中断或停机。引导卷备份功能与块存储卷备份功能相同。

  • 安全策略

    使用策略来限制谁可以访问您公司拥有的 OCI 资源以及如何访问。

  • 网络安全性

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

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

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

部署

GitHub 上提供了此引用体系结构的 Terraform 代码。只需单击一下即可将代码拉入 Oracle Cloud Infrastructure Resource Manager,创建堆栈并部署堆栈,或者可以将代码从 GitHub 下载到计算机,定制代码,并使用 Terraform CLI 部署体系结构。

  • 使用 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 文档中的说明进行操作。

致谢

  • 作者:Lukasz Feldman
  • 贡献者:Nuno Gonçalves