将 OCI 搜索服务与 OpenSearch 结合使用来构建应用程序内搜索

使用带有 OpenSearch 的 Oracle Cloud Infrastructure 搜索服务,可以构建应用程序内搜索,即使在具有大型数据集的情况下,也可以在毫秒内返回结果。

OpenSearch 由 Apache 2.0 许可的 Elasticsearch 7.10.2 和 Kibana 7.10.2 派生,是基于 Java 搜索和索引库 Apache Lucene 构建的社区驱动的开源搜索和分析套件。它包括:
  • 搜索引擎守护进程:OpenSearch。
  • 可视化和用户界面:OpenSearch 仪表盘。
OpenSearch 具有许多用例,但通常由应用程序用来搜索大型数据集和日志分析,以便快速调查和调试。

体系结构

使用 OpenSearch 在 OCI Search Service 上存储应用程序数据并为其编制索引,以便于快速进行应用程序内搜索依赖于此处介绍的体系结构拓扑和补充。

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

后面是 appsearch-oci-arch.png 的说明
插图 appsearch-oci-arch.png 的说明

appsearch-oci-arch.zip

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

  • 租户

    租户是安全隔离的分区,注册 OCI 时 Oracle 在 Oracle Cloud 中设置该分区。您可以在租户中的 Oracle Cloud 中创建、组织和管理资源。

  • 策略

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

  • 划分

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

  • 虚拟云网络 (VCN)

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

  • 可用性域

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

  • 容错域

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

  • 堡垒主机

    堡垒主机是一个计算实例,用作从云端到拓扑的安全受控入口点。它使您可以访问放置在专用网络中的敏感资源,而这些资源不能直接从云外部访问。拓扑具有一个已知的入口点,您可以定期监视和审计。因此,您可以避免暴露更敏感的拓扑组件而不会影响对它们的访问。

  • 负载平衡器

    负载平衡器将索引操作平衡到数据节点和 Kibana 访问主节点。它使用两个监听程序,一个用于 Kibana,一个用于索引数据访问,使用主节点后端和数据节点后端。负载平衡器位于具有公共 IP 地址的公共子网中。

  • 计算实例

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

  • Internet 网关

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

  • 动态路由网关 (DRG)

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

  • Vault

    通过 OCI Vault,可以集中管理加密密钥,保护数据和用于保护云中资源的密钥身份证明。

  • VPN

    站点到站点 VPN 在您的内部部署网络和 OCI 中的 VCN 之间提供站点到站点 IPSec VPN 连接。IPSec 协议套件在数据包从源传输到目标之前加密 IP 通信,并在数据包到达时解密流量。

  • 应用程序

    体系结构中的应用程序已简化,并说明了单一应用程序。对于多层应用,后端将使用 OpenSearch 连接到 OCI 搜索服务。对于分布式应用程序,任何服务都存储大量数据,以及其他服务或用户需要搜索的位置。

建议

使用以下建议作为起点,将 OCI 搜索服务与 OpenSearch 结合使用,在云应用程序中构建应用程序内搜索功能您的要求可能不同于此处所述的体系结构。
  • VCN

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

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

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

  • 安全性

    使用策略来限制哪些人可以访问贵公司拥有的 OCI 资源及其访问方式。要成功创建 OpenSearch 集群的 OCI 搜索服务,需要指定策略。使用 Vault 对密钥、证书和密钥进行额外保护。

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

    NSG 安全规则的作用与安全列表规则相同。但是,对于 NSG 安全规则的源或目标,您可以指定 NSG 而不是 CIDR 块。因此,您可以轻松编写安全规则来控制同一 VCN 中两个 NSG 的流量或单个 NSG 中的流量。

  • 计算

    可以选择具有适当 OCPU 和内存组合的配置,并根据需要为每个实例预配本地 NVMe 和 / 或块存储。

考虑事项

将 OCI 搜索服务与 OpenSearch 配合使用以在云应用程序中构建应用程序内搜索功能时,请考虑以下选项。

  • 如果找不到 ORM 的 OpenSearch 插件,请搜索 ElasticSearch 7.10.2 兼容插件,或者使用 REST API。
  • 构建搜索模板,将来自用户的搜索查询与预定义搜索参数组合起来。
  • 要使用本地计算机中的 OpenSearch 连接到 OCI 搜索服务,请在公共子网中设置堡垒主机并设置 SSH 端口转发来访问端点。也可以通过 VPN 访问端点。专用子网中存在的应用程序实例也可以通过堡垒主机进行访问。

浏览更多

要了解有关使用 OpenSearch 的 OCI 搜索服务的更多信息以及有关如何更好地实施 OCI 的常规信息,请参阅以下资源:

确认

  • 作者:Hassan Ajan
  • 内容提供者:Nuno Goncalves