部署高可用性 Web 应用程序
Web 应用堆栈通常包括负载平衡器、多个 Web 服务器和数据存储。为了实现高可用性,您需要一个包含堆栈所有层中的冗余资源的拓扑。
体系结构
此参考体系结构显示使用 Oracle Autonomous Transaction Processing 数据库在 Oracle Cloud 中运行的高可用性 Web 应用程序。
公共负载平衡器从互联网接收客户端请求,并将请求路由到分布在多个容错域中的 Web 服务器池。数据层由具有专用端点的自治数据库组成。
下图说明了此参考体系结构。

插图 ra-webapp-oci.png 的说明
该体系结构具有以下组成部分:
- 区域
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 部署:
- 使用 Terraform CLI 部署:
- 转到 GitHub。
- 将代码下载或克隆到本地计算机。
- 按照自述文件中的说明进行操作。