自动缩放负载平衡的 Web 应用程序
要在云中运行 Web 应用程序,您需要可靠和安全的基础结构、灵活易于维护的拓扑和基于使用的计费。满足所有这些要求的 Oracle Cloud 功能是自动缩放。
自动扩展可确保云中的资源得到高效利用并在需要时可用。您可以将云部署配置为基于性能度量(例如 CPU 占用率)自动调整计算资源。即使负载较高,您的用户也会体验到一致的性能。在需求较低的期间,您的成本按比例较低。
体系结构
此引用体系结构显示由负载平衡器 (LB)、自动缩放 Web 层和高可用性数据库组成的三层拓扑。
所有资源都部署在 Oracle Cloud Infrastructure 区域的单个可用性域中。LB 层、Web 层和数据库层在单个 VCN 中的单独的子网中隔离。网络安全组 (Network Security Group, NSG) 充当防火墙,用于管理每个层中资源之间的网络通信。附加到每个子网的路由表包含用于将通信定向到 VCN 外部目标的规则。
下图说明了参考体系结构。
此体系结构包含以下组件:
- 区域
Oracle Cloud Infrastructure 区域是一个本地化地理区域,包含一个或多个数据中心,称为可用性域。各区域独立于其他区域,它们之间的广阔距离可以分开(跨越国家或甚至大陆)。
此体系结构中的所有资源都在单个区域中。
- 可用性域
可用性域是区域内的独立独立数据中心。每个可用性域中的物理资源与提供故障容差的其他可用性域中的资源隔离。可用性域不共享基础设施,例如电源、冷却或内部可用性域网络。因此,一个可用性域的故障不可能影响该区域中的其他可用性域。
此体系结构中的资源部署在单个可用性域中。
- 故障域
故障域是可用性域中的硬件和基础结构的分组。每个可用性域都有三个具有独立电源和硬件的故障域。在多个故障域之间分配资源时,应用程序可以容忍故障域中的物理服务器故障、系统维护和电源故障。
此体系结构中每个层中的资源分布在多个故障域上。
- 虚拟云网络 (VCN) 和子网
VCN 是在 Oracle Cloud Infrastructure 区域中设置的可自定义、软件定义的网络。与传统的数据中心网络一样,VCN 为您提供了对网络环境的完全控制。VCN 可以有多个非重叠 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 细分为子网,子网可以被限定为区域或可用性域。每个子网包含一系列与 VCN 中的其他子网不重叠的地址。您可以在创建后更改子网的大小。子网可以是公共的或专用的。
此体系结构中的负载平衡和 Web 层使用单独的公共子网。数据库已附加到专用子网。
- 负载平衡器
Oracle Cloud Infrastructure Load Balancing 服务提供从单个入口点到后端多个服务器的自动通信分配。
- 网络安全组 (Network Security Group, NSG)
NSG 用作云资源的虚拟防火墙。使用 Oracle Cloud Infrastructure 的零信任安全模型,将拒绝所有流量,您可以控制 VCN 中的网络流量。NSG 包含一组入站和出站安全规则,这些规则仅应用于单个 VCN 中的一组指定 VNIC。
单独 NSG 用于此体系结构中每个层中的资源。
- 路由表
虚拟路由表包含用于将流量从子网路由到 VCN 外部的目标的规则,通常是通过网关路由。
- Internet 网关
Internet 网关允许 VCN 中的公共子网与公共 Internet 之间的通信。
- 实例配置
实例配置是一个模板,用于定义创建计算实例时要使用的设置,包括基本图像、形状和元数据等详细信息。还可以为实例指定关联的资源,例如块存储卷附件和网络配置。
- 实例池
实例池是区域中基于同一实例配置创建并作为组进行管理的一组实例。
- 自动缩放
使用自动缩放可以基于性能度量(例如 CPU 占用率)自动调整实例池中的计算实例数。
实例池向外扩展或向内扩展时,关联负载平衡器的后端集会自动更新。
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing 是一种自主驱动、自我安全、自我修复的数据库服务,针对事务处理工作负载进行了优化。无需配置或管理任何硬件,也不需要安装任何软件。Oracle Cloud Infrastructure 处理创建数据库以及备份、打补丁、升级和优化数据库。
建议
您的要求可能不同于此处介绍的体系结构。使用以下建议案作为起点。
- VCN
创建 VCN 时,根据计划附加到 VCN 中子网的资源数确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。
选择不与您打算设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure、内部部署数据中心或其他云提供商中)重叠的 CIDR 块。
创建 VCN 后,可以更改、添加和删除其 CIDR 块。
设计子网时,请考虑流量和安全要求。将特定层或角色中的所有资源附加到可用作安全边界的同一子网。
使用区域子网。
- 实例池
如果没有限制,请在池中包括所有可用的可用性域。
- 实例配置
选择提供最佳性能成本比并满足工作量最低要求的实例形状。
- 自动缩放配置
评估应用程序的资源需求,并在放大时使用该信息定义缩放限制和冷却行为。这将确定实例池的最大成本。
考虑事项
部署自动缩放多层应用程序堆栈时,请考虑以下因素:
- 数据库可扩展性
您可以随时手动向上或向下扩展数据库的 CPU 核心数。自治数据库的自动缩放功能允许数据库在任何时候最多使用当前 CPU 核心数的三倍。随着需求的增加,自动缩放会自动增加正在使用的核心数。自治数据库允许您在不影响可用性或性能的情况下随时扩展存储容量。
- 数据库可用性
体系结构图显示单个 Oracle Autonomous Transaction Processing 数据库。部署体系结构时,您可以使用 Oracle Autonomous Data Guard 预配和管理备用数据库。
- 应用程序可用性
故障域提供可用性域中的弹性。在可行的情况下,请考虑在多个可用性域或多个区域之间分配资源。
- 访问控制
使用策略可以限制谁可以访问云中的资源以及他们可以执行的操作。
- 性能
池的大小可以自动放大或缩小,但了解应用程序的行为非常重要,以便您可以微调自动缩放策略。资源限制会影响池向外扩展的能力。
部署
部署此引用体系结构所需的代码在 GitHub 中可用。单击一次即可将代码拉入 Oracle Cloud Infrastructure Resource Manager,创建堆栈并部署该堆栈。或者,也可以使用 Terraform CLI 将代码从 GitHub 下载到计算机,定制代码并部署体系结构。
- 使用 Oracle Cloud Infrastructure Resource Manager 部署:
- 使用 Terraform CLI 进行部署:
- 转到 GitHub。
- 将代码下载或克隆到本地计算机。
- 按照
README文件中的说明操作。
