部署高可用性 Web 应用程序

Web 应用堆栈通常包括负载平衡器、多个 Web 服务器和数据存储。为了实现高可用性,您需要一个包含堆栈所有层中的冗余资源的拓扑。

体系结构

此参考体系结构显示使用 Oracle Autonomous Transaction Processing 数据库在 Oracle Cloud 中运行的高可用性 Web 应用程序。

公共负载平衡器从互联网接收客户端请求,并将请求路由到分布在多个容错域中的 Web 服务器池。数据层由具有专用端点的自治数据库组成。

下图说明了此参考体系结构。

后面是 ra-webapp-oci.png 的说明
插图 ra-webapp-oci.png 的说明

ra-webapp-oci-atp-oracle.zip

该体系结构具有以下组成部分:

  • 区域

    Oracle Cloud Infrastructure 区域是一个局部地理区域,其中包含一个或多个数据中心(称为可用性域)。区域与其他区域无关,它们的距离可以分离(跨国家 / 地区甚至大陆)。

    此体系结构中的所有资源都部署在单个区域中。

  • 可用性域

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

    此体系结构中的资源部署在单个可用性域中。

  • 容错域

    容错域是可用性域内的一系列硬件和基础设施。每个可用性域都具有三个具有独立电源和硬件的容错域。当您在多个容错域中分配资源时,应用可以承受容错域中的物理服务器故障、系统维护和电源故障。

    此体系结构中显示的拓扑跨越多个容错域。

  • 虚拟云网络和子网

    VCN 是可在 Oracle Cloud Infrastructure 区域中设置的自定义软件定义网络。与传统的数据中心网络一样,VCN 允许您完全控制您的网络环境。一个 VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 细分到子网,从而限定在区域或可用性域范围内。每个子网都包含不与 VCN 中的其他子网重叠的连续地址范围。创建子网后可以更改子网的大小。子网可以是公共子网,也可以是专用子网。

    在此体系结构中,Web 服务器连接到公共子网,数据库使用专用子网。

  • 负载平衡器

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

  • Web 服务器

    Oracle Cloud Infrastructure Compute 服务允许您在云中预配和管理计算主机。您可以通过配置启动计算实例,以满足 CPU、内存、网络带宽和存储的资源需求。创建计算实例后,您可以安全地访问它,重新启动它,连接和分离卷,并在不再需要时终止它。

    此体系结构中的 Web 服务器在计算虚拟机上运行。

  • Autonomous Transaction Processing 数据库

    Oracle Autonomous Transaction Processing 是一款针对事务处理工作负载进行了优化的自主运行、自我保护和自我修复数据库服务。您无需配置或管理任何硬件,也不需要安装任何软件。Oracle Cloud Infrastructure 用于处理数据库创建以及备份、打补丁、升级和优化数据库。

  • 网络安全组 (NSG)

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

    在此架构中,为负载平衡器、Web 服务器和数据库使用单独的 NSG。

  • 路由表

    虚拟路由表包含将流量从子网路由到 VCN 外部的目标(通常通过网关)的规则。

  • Internet 网关

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

  • 网络地址转换 (NAT) 网关

    NAT 网关允许 VCN 中的专用资源访问互联网上的主机,同时不会向传入的互联网连接公开这些资源。

建议

您的要求可能不同于此处介绍的体系结构。将以下建议用作起点。

  • Web 服务器的计算配置

    部署架构时,根据应用的内存和处理要求,为托管 Web 服务器的计算实例选择合适的配置。

  • 网络设计

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

    选择不与要设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure、内部部署数据中心或其他云提供商中)重叠的 CIDR 块。

    创建 VCN 后,您可以更改、添加和删除其 CIDR 块。

    设计子网时,请考虑流量和安全要求。将特定层或角色中的所有资源连接到同一子网,这些子网可以用作安全边界。

    使用区域子网。

考虑事项

在云中设计高可用性应用堆栈时,请考虑以下因素:

  • 可扩展性
    • 数据库

      您可以随时手动扩展或收缩数据库的 CPU 核心数。自治数据库的自动缩放功能允许您的数据库随时使用当前基本 CPU 核心数的三倍。随着需求的增加,自动缩放会自动增加正在使用的核心数。利用自治数据库,您可以随时扩展存储容量,而不会影响可用性或性能。

    • 应用程序

      您可以使用实例池和自动缩放功能来扩展您的应用。

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

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

  • 可用性
    • 数据库

      该体系结构图显示一个 Oracle Autonomous Transaction Processing 数据库。部署体系结构时,您可以启用 Oracle Autonomous Data Guard 来预配和管理备用数据库。

    • 应用程序

      容错域提供可用性域内的弹性。如果可行,请考虑在多个可用性域或多个区域中分配资源。

  • 安全性
    • 访问控制

      使用策略来限制谁可以访问云中的资源以及他们可以执行的操作。

    • 网络安全性

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

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

部署

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

  • 使用 Oracle Cloud Infrastructure Resource Manager 部署:
    1. 单击 部署到 Oracle Cloud

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

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

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

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

更改日志

此日志仅列出重要的更改: