Oracle Cloud Infrastructure 上部署具有高可用性的 Oracle REST Data Services

Oracle Cloud Infrastructure (OCI) 和 REST 上部署具有高可用性的 Oracle REST Data Services (ORDS),以启用数据库并公开微服务架构和功能的优势。

ORDS 桥接 HTTPS 和 Oracle 数据库。作为 Java 中间层应用,它提供数据库管理 REST API、SQL Developer Web、PL/SQL 网关、SODA for REST,并支持发布 RESTful Web 服务来与 Oracle 数据库中的数据和存储过程进行交互。

ORDS 还支持使用 Oracle WebLogic Server 或 Apache Tomcat 或处于独立模式的部署,从而提高灵活性。由于嵌入式 JDBC 驱动程序提供连接,ORDS 进一步简化了部署过程,因为不需要 Oracle 主目录。

此参考架构介绍了如何跨多个 VM 计算实例部署 ORDS,从而为 Oracle 数据库实例创建高可用性中间层。

体系结构

此架构展示了如何在 OCI 上部署具有高可用性的 Oracle REST Data Services。

该架构从单个区域中的虚拟云网络 (Virtual Cloud Network,VCN) 开始。虽然此 VCN 可以跨多个可用性域 (Availability Domain,AD),但对于此参考架构,它使用单个 AD。该 AD 包含多个故障域,这些域在一个 AD 中对硬件和基础结构进行了分组。具有 ORDS 的计算 VM 部署在多个容错域中,以帮助实现高可用性。

在 VCN 中,多个子网包含特定的架构组件。它从互联网网关开始,此网关仅允许通过指定端口将流量传输到公共子网中此 VCN 前端的负载平衡器。如果需要,负载平衡器还具有面向公众的 IP。您可以稍后使用它来应用定制域名。负载平衡器将与包含 ORDS 计算中间层的子网通信。通信由子网范围的安全列表以及网络安全组 (NSG) 保护。您可以将这些 NSG 应用于计算和负载平衡器上的一组 VNIC,以便为这些资源之间的通信提供细粒度安全规则。

最后,再次采用安全列表和 NSG,ORDS 中间层可以访问专用子网中的 Oracle 数据库。使用专用子网的资源不是面向公共的 IP。通过这种方式,您可以将 NSG 用于公共子网和专用子网之间的安全通信层。此专用子网中的 Oracle 数据库实例可以是 VM DB 实例、自治数据库或 Exadata Cloud Service 数据库。

下图说明了此引用体系结构。

下面是 ha-ords-oci3.png 的说明
插图 ha-ords-oci3.png 的说明

ha-ords-oci3.zip

此体系结构包含以下组件:
  • 区域

    OCI 区域是一个本地化地理区域,其中包含一个或多个数据中心,称为可用性域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。

  • 可用性域

    可用性域是区域中的独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供容错能力。可用性域不共用电源、冷却设施或内部可用性域网络等基础设施。因此,一个可用性域出现故障不会影响区域中的其他可用性域。此体系结构中的资源部署在单个可用性域中。

  • 容错域

    容错域是可用性域内的一组硬件和基础设施。每个可用性域具有三个容错域,它们具有独立的电源和硬件。在多个容错域之间分配资源时,应用可以承受容错域内的物理服务器故障、系统维护和电源故障。此体系结构中的资源部署在多个容错域中。

  • 虚拟云网络 (VCN) 和子网

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

    在此参考架构中,具有 ORDS 的计算实例与负载平衡器一起附加到公共子网,而数据库可以使用专用或公共子网。数据库安全优秀实践尽可能将数据库实例置于专用子网中。

  • 负载平衡器

    Oracle Cloud Infrastructure Load Balancing 服务提供从单个入口点到后端多个服务器的自动流量分配。如果需要,此负载平衡器的公共 IP 也可以用来注册定制域名。

  • API 网关

    使用 Oracle Cloud Infrastructure API Gateway,您可以发布具有专用端点的 API,这些专用端点可从网络内访问,并且您可以根据需要向公共互联网公开。这些端点支持 API 验证、请求和响应转换、CORS、验证和授权以及请求限制。

  • 计算实例/ORDS 主机

    Oracle Cloud Infrastructure Compute 支持您预配和管理计算主机。您可以启动具有满足资源要求(CPU、内存、网络带宽和存储)的配置的计算实例。创建计算实例后,您可以安全地访问它,重新启动它,连接和分离卷,并在不需要时终止它。此体系结构中的 Web 服务器使用 x86 或 ARM CPU 体系结构在计算虚拟机上运行

  • 数据库实例

    数据库服务提供自治和共同管理的 Oracle Database 云技术解决方案。自治数据库是预配置的全托管环境,适用于事务处理或数据仓库工作负载。共同管理的解决方案包括裸金属、虚拟机和 Exadata 数据库系统,您可以根据自己的需求通过资源和设置进行定制。

    此参考架构可用于自治数据库或共同管理的数据库实例。

  • 网络安全组 (NSG)

    NSG 充当计算实例的虚拟防火墙。借助 OCI 的零信任安全模型,所有流量都会被拒绝,您可以控制 VCN 内的网络流量。NSG 由一组入站和出站安全规则组成,这些规则仅适用于单个 VCN 中的一组指定的 VNIC。在此体系结构中,单独的 NSG 用于负载平衡器、Web 服务器和数据库。

  • 路由表

    虚拟路由表包含用于将流量从子网路由到 VCN 之外目的地的规则,通常是通过网关。

  • Internet 网关

    通过互联网网关,可以在 VCN 中的公共子网与公共互联网之间进行流量传输。

  • 安全列表

    安全列表是一组传入和传出规则,这些规则指定子网中所有 VNIC/实例允许传入传出通信的类型。安全列表在子网级别应用,NSG 在 VNIC 级别应用。两者有效地充当 VNIC 的防火墙。借助 OCI 的零信任安全模型,VNIC 的所有流量都将被拒绝。SL 和 NSG 都需要明确允许流量,才能将流量允许给 VNIC。

  • Zero-Trust Packet Routing (ZPR)

    除了 SL 和 NSG,OCI 还具有一个名为 Zero-Trust Packet Routing 的网络安全构造。ZPR 是第 4 层基于意图的安全网络,可以用人类可读的政策语言实现。通过将安全属性(“ZPR 标记”)分配给资源,您可以创建细粒度的访问控制,以确保只有授权实体才能与敏感组件(例如数据库和应用服务器)通信。这种方法不仅可以降低未经授权访问的风险,还可以随着应用的发展简化策略管理。ZPR 与现有的 NSG 和 SL 一起运行,提供更全面的安全态势,以适应网络架构的变化。在这里,您可以将安全属性(特殊 ZPR 标记)分配给每个子网中的节点,这样无论网络体系结构将来如何变化/变化,都只能允许所需的流量(流量方向、协议和端口)。

推荐

使用以下建议作为起点。 您的要求可能与此处描述的体系结构不同。
  • VCN

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

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

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

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

    使用区域子网。

    考虑为每个网络边界部署防火墙。

  • 负载平衡

    OCI 提供灵活的负载平衡。您可以创建具有上界和下界的负载平衡器,以便它们可以根据传入的请求数进行扩展。范围可以从 10mbps 到 8000mbps。对于需要多 AD 或多区域负载平衡的实例,请使用具有流量管理引导功能的 DNS Cloud Service。

  • 安全

    使用 Oracle Cloud Guard 主动监视和维护 Oracle Cloud Infrastructure 中资源的安全性。Cloud Guard 使用检测器配方,您可以定义这些配方来检查资源是否存在安全漏洞,以及监视操作员和用户是否有风险活动。检测到任何配置错误或不安全活动时,Cloud Guard 会根据您可以定义的响应器配方推荐更正操作并协助执行这些操作。

    对于需要最高安全性的资源,Oracle 建议您使用安全区域。安全区域是与 Oracle 定义的基于优秀实践的安全策略配方关联的区间。例如,安全区域中的资源必须无法从公共 Internet 访问,并且必须使用客户管理的密钥对它们进行加密。在安全区域中创建和更新资源时,Oracle Cloud Infrastructure 会根据安全区域配方中的策略验证操作,并拒绝违反任何策略的操作。

  • 数据库实例

    对于生产应用,Oracle 数据库实例应遵循 OCI 中的 Oracle 高可用性架构 (Maximum Availability Architecture,MAA) 部署模型。遵循这些准则可确保数据库不仅具有高可用性,而且还可防止出现中断和灾难。这些体系结构还受益于使用 DR 实例的报告数据库。

    MAA 架构内置在 Oracle Cloud Infrastructure Database 服务中,包括协同管理和自治。数据卫士 GoldenGate、RAC 和自动备份立即可用,并应在适用情况下用于生产环境。

    将 RAC 与 Oracle Cluster Registry (OCR)Oracle Database 一起使用时,请确保 ORDS 使用的数据库连接信息指向 SCAN 监听程序,而不是指向单个节点。

  • 计算/ORDS 实例

    调整计算中间层的大小时,请参阅以下图表以获得建议:

    参考体系结构大小(虚拟机)

    要获取区间中可用的配置列表,您还可以通过 CLI/SDK 运行 List Shapes 操作。有关详细信息,请参阅下面的 List Shapes API 文档和“计算配置”,可从下面的“了解更多”访问。

    要了解 OCI 上的预计每月计算成本,您可以使用成本估算器。您可以在“开单和成本管理”页上找到有关开单的详细信息。您可以从下面的“了解更多”访问成本估算器和“计费和成本管理”。

    参考架构大小(裸金属)

注意事项

部署此引用体系结构时,请考虑以下几点。

  • 性能

    计算、负载平衡器和数据库云实例都可以扩展来处理增加的负载。通过计算/ORDS 层,可以快速创建其他实例并将其添加到负载平衡器配置中。对于数据库层,Autonomous Database 可以设置为在负载增加时自动缩放 CPU/内存。对于共同管理的实例,基于 VM 的服务可以扩展 VM 上使用的 CPU 数量。对于 Exadata 云服务,X8M 平台不仅可以扩展 CPU,还可以将节点添加到 RAC 集群以增加额外的计算能力。

  • 安全

    请务必在子网和 NSG 入站/出站规则中使用非常细粒度的规则。您只希望通过预期端口传输到子网中实例的特定 IP 的流量。如果需要访问计算层或数据库层,请使用堡垒即服务进行访问。这样可以确保只有授权用户才能访问这些实例,并且只能访问他们被授予访问权限的特定实例。使用堡垒即服务是一种比向公共互联网公开 SSH 端口更安全的方法。

  • 可用性

    有关数据库部署,请遵循 Oracle Maximum Availability Architecture (MAA) 指南。对于 ORDS,建议使用多个具有负载平衡器的中间层。再次提醒您,将 RAC 与 Oracle Database 一起使用时,请确保 ORDS 使用的数据库连接信息指向 SCAN 监听程序,而不是指向单个节点。

  • 成本

    对于每个计算层和数据库层,通常使用自动缩放和缩放有助于控制成本,使您只需为使用的资源付费,而不会产生过剩或浪费的 CPU、内存或实例。还可以使用灵活的负载平衡器控制成本。

部署

只需单击一下,即可将此架构的代码提取到 Oracle Cloud Infrastructure Resource Manager 中,创建堆栈并部署它。

通过 Oracle Cloud Infrastructure Resource Manager Service 提供的体系结构使用单个自治数据库,而在上述体系结构中,Oracle 建议在生产方案中使用灾难恢复数据库。此示例参考架构中使用它来节约成本、提高速度并集中更多关注计算/ORDS 高可用性 (HA) 部署。
使用 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈部署此架构:
  1. Click 部署到 Oracle Cloud

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

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

    要进行任何更改,请返回到“堆栈详细信息”页,单击编辑堆栈,然后进行所需的更改。然后,再次运行计划操作。

  6. 如果不需要进一步更改,请返回“堆栈详细信息”页面,单击 Terraform 操作,然后选择应用

浏览更多

了解有关使用以下其他资源在 Oracle Cloud Infrastructure 上部署具有高可用性的 Oracle REST Data Services 的更多信息:

.

确认

  • 授权者Gagan S。科里
  • 贡献者Eric Peterson, Mayur Raleraskar, Robert Wunderlich, Sherwood Zern

更改日志

此日志列出了重大更改: