在 VPC 中启动您的 Amazon OpenSearch Service 域 - Amazon Opensearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

在 VPC 中启动您的 Amazon OpenSearch Service 域

您可以启动 Amazon 资源(例如 Amazon OpenSearch Service 域)转换为虚拟私有云(VPC)。VPC 是专供您的 Amazon Web Services 账户 使用的虚拟网络。它在逻辑上与 Amazon 云中的其他虚拟网络隔绝。通过在 VPC 中放置 OpenSearch Service 域,您可以在 OpenSearch Service 和 VPC 中的其他服务之间进行安全通信,而无需 Internet 网关、NAT 设备或 VPN 连接。Amazon 云中的所有流量都会保持安全。

注意

如果您将 OpenSearch Service 域置于 VPC 中,则您的计算机必须能够连接到 VPC。此连接通常采用以下格式:VPN、过渡网关、托管网络或代理服务器。您无法从 VPC 外部访问您的域。

VPC 与公有域对比

以下是 VPC 域与公有域不同的一些方式。每个差异都有更加详细的介绍。

  • 由于进行了逻辑隔离,与使用公共端点的域相比,驻留在 VPC 中的域有一层额外的安全性。

  • 虽然可以从任何连接互联网的设备访问公有域,但 VPC 域需要某种形式的 VPN 或代理服务器。

  • 与公共域相比,VPC 域在 控制台中显示的信息较少。具体而言,集群运行状况选项卡中不包含分片信息;不存在索引选项卡。

  • 域端点采用不同的形式(https://search-domain-namehttps://vpc-domain-name)。

  • 您无法将基于IP的访问策略应用于驻留在 VPC 中的域,因为安全组已强制实施基于 IP 的访问策略。

限制

在 VPC 中运行 OpenSearch Service 域存在以下限制:

  • 如果在 VPC 中启动了新域,以后就不能将其切换为使用公共终端节点。反过来也是如此:如果使用公共终端节点创建了域,则以后就不能将该域放入 VPC 中,您必须创建一个新的域,然后迁移数据。

  • 可以在 VPC 中启动域,也可以使用公共终端节点,但两者不能同时进行。在创建域时只能选择其一。

  • 您无法在使用专用租赁的 VPC 内启动您的域。您必须使用具有设置为 Default 的租赁的 VPC。

  • 将域放入 VPC 中之后,不能再将其移到其他 VPC 中,但可以更改子网和安全组设置。

  • 要访问驻留在 VPC 中的域的 OpenSearch 控制面板的原定设置安装,用户必须具有 VPC 的访问权限。此过程因网络配置而异,但可能涉及连接到 VPN 或托管网络或使用代理服务器或过渡网关。要了解更多信息,请参阅 关于 VPC 域的访问策略Amazon VPC 用户指南控制对 Opensearch 控制面板的访问

架构

为了支持 VPC,OpenSearch Service 将一个端点放入您的 VPC 的一个、两个或三个子网中。如果您为域启用多个可用区,则每个子网必须位于同一区域中的不同可用区中。如果您只使用一个可用区,则 OpenSearch Service 将端点只放在一个子网中。

下图显示了一个可用区的 VPC 架构。

下图显示了两个可用区的 VPC 架构。

OpenSearch Service 还会为您的每个数据节点将一个弹性网络接口 (ENI) 放入 VPC 中。OpenSearch Service 会为每个 ENI 分配一个来自您的子网的 IPv4 地址范围的私有 IP 地址。该服务还会分配这些 IP 地址的公有 DNS 主机名 (域终端节点)。您必须使用公共 DNS 服务将终端节点 (DNS 主机名) 解析为数据节点的相应 IP 地址:

  • 如果您的 VPC 通过将 enableDnsSupport 选项设置为 true(原定设置值)来使用 Amazon 提供的 DNS 服务器,则 OpenSearch Service 端点的解析将会成功。

  • 如果您的 VPC 使用私有 DNS 服务器,并且该服务器可以访问公共权威 DNS 服务器来解析 DNS 主机名,则 OpenSearch Service 端点的解析也会成功。

因为 IP 地址可能会发生更改,所以您应定期解析域终端节点,以便可以始终访问正确的数据节点。我们建议您将 DNS 解析时间间隔设置为一分钟。如果您在使用客户端,还应确保客户端中的 DNS 缓存已清除。

注意

OpenSearch Service 不支持对 VPC 使用 IPv6 地址。您可以使用启用了 IPv6 的 VPC,但域将使用 IPv4 地址。

从公有访问迁移到 VPC 访问

在创建域时,您会指定它是应该具有公共终端节点还是驻留在 VPC 中。一旦创建,就无法再切换,而只能创建一个新域,手动重建索引或迁移您的数据。快照提供了一种迁移数据的便捷方法。有关拍摄和还原快照的信息,请参阅在 Amazon OpenSearch Service 中创建索引快照

关于 VPC 域的访问策略

在 VPC 中放置 OpenSearch Service 域将提供一个固有的强大安全层。使用公有访问权限创建域时,终端节点将采用以下形式:

https://search-domain-name-identifier.region.es.amazonaws.com

如“公有”标签所示,此终端节点可从任何连接 Internet 的设备访问,但您可以 (且应该) 控制对它的访问。如果您访问 Web 浏览器中的终端节点,您可能会收到一条 Not Authorized 消息,但请求将达到域。

当您使用 VPC 访问权限创建域时,终端节点看起来 类似于公有终端节点:

https://vpc-domain-name-identifier.region.es.amazonaws.com

但是,如果您尝试访问 Web 浏览器中的终端节点,您可能会发现请求超时。要执行更基本的 GET 请求,您的计算机必须能够连接到 VPC。此连接通常采用以下格式:VPN、过渡网关、托管网络或代理服务器。有关此连接可以采用的各种格式的详细信息,请参阅 Amazon VPC 用户手册中的 VPC 示例。有关专注于开发的示例,请参阅 测试 VPC 域

除了此连接要求,VPC 还可让您通过安全组管理对域的访问。对于许多使用案例,这种安全功能的组合方式已足够,并且您可能愿意将开放访问策略应用于域。

使用开放访问策略运行并意味着 Internet 上的任何人都可以访问 OpenSearch Service 域。相反,它意味着,如果请求到达 OpenSearch Service 域且关联的安全组允许它,则该域将接受请求。唯一的例外是,如果您使用精细访问控制或指定 IAM 用户或角色的访问策略。在这些情况下,意味着要让域接受某个请求,安全组必须允许该请求并且必须使用有效凭证的签署该请求。

注意

因为安全组已强制执行基于 IP 的访问策略,所以您无法将基于 IP 的访问策略应用到驻留在 VPC 中的 OpenSearch Service 域。如果使用公有访问权限,则基于 IP 的策略仍可用。

开始之前:VPC 访问的先决条件

在启用 VPC 和新的 OpenSearch Service 域之间的连接之前,您必须执行以下操作:

  • 创建 VPC

    要创建 VPC,可以使用 Amazon VPC 控制台、Amazon CLI 或 Amazon 开发工具包之一。有关更多信息,请参阅 Amazon VPC 用户指南 中的使用 VPC。如果您已有 VPC,请跳过此步骤。

  • 预留 IP 地址

    OpenSearch Service 通过将网络接口放置在 VPC 的子网中来启用 VPC 到域的连接。每个网络接口都与一个 IP 地址关联。必须在子网中为网络接口预留足够数量的 IP 地址。有关更多信息,请参阅在 VPC 子网中预留 IP 地址

测试 VPC 域

VPC 增强的安全性可能会使连接到您的域并运行基本测试成为挑战。如果您已有一个 OpenSearch Service VPC 域但不愿意创建 VPN 服务器,请尝试以下过程:

  1. 对于域的访问策略,请选择 Only use fine-grained access control(仅使用精细访问控制)。完成测试之后,您可以随时更新此设置。

  2. 在与您的 OpenSearch 服务域相同的 VPC、子网和安全组中创建一个 Amazon Linux Amazon EC2 实例。

    由于此实例用于测试目的且需要做的工作非常少,因此请选择一种便宜的实例类型(如 t2.micro)。为此实例分配一个公有 IP 地址,并创建一个新的密钥对或选择一个现有的密钥对。如果您创建新的密钥,请将其下载到您的 ~/.ssh 目录。

    要了解有关创建实例的更多信息,请参阅 Amazon EC2 Linux 实例入门

  3. Internet 网关添加到 VPC。

  4. 在 VPC 的路由表中,添加新的路由。对于 Destination (目的地),指定一个 CIDR 块,其中包含您的计算机的公有 IP 地址。对于 Target (目标),请指定您刚刚创建的 Internet 网关。

    例如,您可能只为您的计算机指定 123.123.123.123/32,或者为一系列计算机指定 123.123.123.0/24

  5. 对于安全组,指定两条入站规则:

    类型 协议 端口范围
    SSH (22) TCP (6) 22 your-cidr-block
    HTTPS (443) TCP (6) 443 your-security-group-id

    第一条规则可让您的 SSH 连接到您的 EC2 实例。第二条规则允许 EC2 实例通过 HTTPS 与 OpenSearch Service 域进行通信。

  6. 从终端运行以下命令:

    ssh -i ~/.ssh/your-key.pem ec2-user@your-ec2-instance-public-ip -N -L 9200:vpc-domain-name.region.es.amazonaws.com:443

    此命令将创建一个 SSH 隧道,用于通过 EC2 实例将针对 https://localhost:9200 的请求转发到您的 OpenSearch Service 域。指定命令中的端口 9200 将模拟本地 OpenSearch 安装,但使用您想使用的任意端口。OpenSearch Service 仅接受端口 80 (HTTP) 或 443 (HTTPS)。

    该命令不提供反馈并无限期运行。要停止此命令,请按 Ctrl + C

  7. 在 Web 浏览器中导航到 https://localhost:9200/_dashboards/。您可能需要确认安全异常。

    或者,您可以使用 https://localhost:9200curlPostman 或您常用的编程语言将请求发送到

    提示

    如果您由于证书不匹配而遇到 curl 错误,请尝试使用 --insecure 标记。

在 VPC 子网中预留 IP 地址

OpenSearch Service 通过将网络接口放在 VPC 的一个子网(如果您启用多个可用区,则是 VPC 的多个子网)中来将域连接到该 VPC。每个网络接口都与一个 IP 地址关联。在创建 OpenSearch Service 域之前,每个子网中必须有足够数量的 IP 地址来容纳网络接口。

以下是基本公式:OpenSearch Service 在每个子网中预留的 IP 地址数是数据节点数的三倍,除以可用区数量。

示例

  • 如果某个域在 3 个可用区中有 9 个数据节点,则每个子网的 IP 数为 9 * 3 / 3 = 9。

  • 如果某个域在 2 个可用区中有 8 个数据节点,则每个子网的 IP 数为 8 * 3 / 2 = 12。

  • 如果某个域在一个可用区中有 6 个数据节点,则每个子网的 IP 数为 6 * 3 / 1 = 18。

创建域时,OpenSearch Service 保留 IP 地址,将一些 IP 地址用于域,并保留其余 IP 地址用于蓝/绿部署。您可以在 Amazon EC2 控制台的 Network Interfaces 部分看到网络接口及其相关的 IP 地址。描述列显示了与网络接口关联的 OpenSearch Service 域。

提示

我们建议您为 OpenSearch Service 预留 IP 地址创建专用子网。通过使用专用子网,可以避免与其他应用程序和服务重叠,并确保在将来需要扩展集群时可以预留额外 IP 地址。要了解更多信息,请参阅在 VPC 中创建子网

VPC 访问的服务相关角色

服务相关角色是一种独特的 IAM 角色类型,它将权限委派给服务,使之能够代表您创建和管理资源。OpenSearch Service 需要服务相关角色来访问您的 VPC、创建域端点和将网络接口放入您的 VPC 的子网中。

当您使用 OpenSearch Service控制台在 VPC 中创建域时,OpenSearch Service 会自动创建该角色。为使这种自动创建成功,您必须具有 iam:CreateServiceLinkedRole 操作的权限。有关更多信息,请参阅 IAM 用户指南中的服务相关角色权限

当 OpenSearch Service 创建该角色后,您可以使用 IAM 控制台查看它 (AWSServiceRoleForAmazonOpenSearchService)。

有关此角色的权限以及如何删除它的完整信息,请参阅使用服务相关角色为 Amazon OpenSearch Service 提供资源访问权限