本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 VPC 内启动您的亚马逊 OpenSearch 服务域
您可以将诸如亚马逊 OpenSearch 服务域之类的 AWS 资源启动到虚拟私有云 (VPC) 中。VPC 是专为您服务的虚拟网络 AWS 账户。它在逻辑上与 AWS 云中的其他虚拟网络隔绝。在 VPC 中放置 OpenSearch 服务域可实现 OpenSearch 服务与 VPC 内的其他服务之间的安全通信,无需互联网网关、NAT 设备或 VPN 连接。所有流量都安全地保存在 AWS 云中。
注意
如果您将 OpenSearch 服务域置于 VPC 内,则您的计算机必须能够连接到 VPC。此连接通常采用以下格式:VPN、过渡网关、托管网络或代理服务器。您无法从 VPC 外部访问您的域。
VPC 与公有域对比
以下是 VPC 域与公有域不同的一些方式。每个差异都有更加详细的介绍。
-
由于进行了逻辑隔离,与使用公共端点的域相比,驻留在 VPC 中的域有一层额外的安全性。
-
虽然可以从任何连接互联网的设备访问公有域,但 VPC 域需要某种形式的 VPN 或代理服务器。
-
与公共域相比,VPC 域在 控制台中显示的信息较少。具体而言,集群运行状况选项卡中不包含分片信息;不存在索引选项卡。
-
域端点采用不同的形式(
https://search-domain-name
与https://vpc-domain-name
)。 -
您无法将基于IP的访问策略应用于驻留在 VPC 中的域,因为安全组已强制实施基于 IP 的访问策略。
限制
在 VPC 内运营 OpenSearch 服务域有以下限制:
-
如果在 VPC 中启动了新域,以后就不能将其切换为使用公共终端节点。反过来也是如此:如果使用公共终端节点创建了域,则以后就不能将该域放入 VPC 中,您必须创建一个新的域,然后迁移数据。
-
可以在 VPC 中启动域,也可以使用公共终端节点,但两者不能同时进行。在创建域时只能选择其一。
-
您无法在使用专用租赁的 VPC 内启动您的域。您必须使用具有设置为 Default 的租赁的 VPC。
-
将域放入 VPC 中之后,不能再将其移到其他 VPC 中,但可以更改子网和安全组设置。
-
要访问位于 VPC 内的域的默认 OpenSearch 仪表板安装,用户必须有权访问该 VPC。此过程因网络配置而异,但可能涉及连接到 VPN 或托管网络或使用代理服务器或过渡网关。要了解更多信息,请参阅 关于 VPC 域的访问策略,Amazon VPC 用户指南和 控制对 OpenSearch 仪表板的访问权限。
架构
为了支持 VPC, OpenSearch 服务会将终端节点放置在您的 VPC 的一个、两个或三个子网中。如果您为域启用多个可用区,则每个子网必须位于同一区域中的不同可用区中。如果您只使用一个可用区,S OpenSearch ervice 会将一个终端节点放入一个子网中。
下图显示了一个可用区的 VPC 架构。
![VPC architecture showing subnet with security group connecting to OpenSearch Service data nodes.](images/VPCNoZoneAwareness.png)
下图显示了两个可用区的 VPC 架构。
![VPC architecture with two Availability Zones, showing security groups, data nodes, and master nodes.](images/VPCZoneAwareness.png)
OpenSearch 服务还会在 VPC 中为您的每个数据节点放置一个弹性网络接口 (ENI)。 OpenSearch 服务会从您的子网的 IPv4 地址范围内为每个 ENI 分配一个私有 IP 地址。该服务还会分配这些 IP 地址的公有 DNS 主机名 (域终端节点)。您必须使用公共 DNS 服务将终端节点 (DNS 主机名) 解析为数据节点的相应 IP 地址:
-
如果您的 VPC 通过将
enableDnsSupport
选项设置为true
(默认值)来使用亚马逊提供的 DNS 服务器,则 OpenSearch 服务终端节点的解析将成功。 -
如果您的 VPC 使用私有 DNS 服务器,并且该服务器可以访问公共权威 DNS 服务器来解析 DNS 主机名,则 OpenSearch 服务终端节点的解析也将成功。
因为 IP 地址可能会发生更改,所以您应定期解析域终端节点,以便可以始终访问正确的数据节点。我们建议您将 DNS 解析时间间隔设置为一分钟。如果您在使用客户端,还应确保客户端中的 DNS 缓存已清除。
从公有访问迁移到 VPC 访问
在创建域时,您会指定它是应该具有公共终端节点还是驻留在 VPC 中。一旦创建,就无法再切换,而只能创建一个新域,手动重建索引或迁移您的数据。快照提供了一种迁移数据的便捷方法。有关拍摄和还原快照的信息,请参阅在亚马逊 OpenSearch 服务中创建索引快照。
关于 VPC 域的访问策略
将您的 OpenSearch 服务域置于 VPC 内可提供固有的强大安全层。使用公有访问权限创建域时,终端节点将采用以下形式:
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 还可让您通过安全组管理对域的访问。对于许多使用案例,这种安全功能的组合方式已足够,并且您可能愿意将开放访问策略应用于域。
使用开放访问政策并不意味着互联网上的任何人都可以访问 OpenSearch 服务域。相反,这意味着,如果请求到达 OpenSearch 服务域并且相关的安全组允许,则该域将接受该请求。唯一例外的情况是如果您使用细粒度访问控制或指定 IAM 角色的访问策略。在这些情况下,意味着要让域接受某个请求,安全组必须允许该请求并且必须使用有效凭证的签署该请求。
注意
由于安全组已经强制执行基于 IP 的访问策略,因此您无法将基于 IP 的访问策略应用于 VPC 内的 OpenSearch 服务域。如果使用公有访问权限,则基于 IP 的策略仍可用。
开始之前:VPC 访问的先决条件
在启用 VPC 与新 OpenSearch 服务域之间的连接之前,必须执行以下操作:
-
创建 VPC
要创建您的 VPC,您可以使用 Amazon VPC 控制台、 AWS CLI 或其中一个 AWS 软件开发工具包。有关更多信息,请参阅 Amazon VPC 用户指南 中的使用 VPC。如果您已有 VPC,请跳过此步骤。
-
预留 IP 地址
OpenSearch 服务通过将网络接口放置在 VPC 的子网中来实现 VPC 与域的连接。每个网络接口都与一个 IP 地址关联。必须在子网中为网络接口预留足够数量的 IP 地址。有关更多信息,请参阅在 VPC 子网中预留 IP 地址。
测试 VPC 域
VPC 增强的安全性可能会使连接到您的域并运行基本测试成为挑战。如果您已经拥有 OpenSearch 服务 VPC 域并且不想创建 VPN 服务器,请尝试以下过程:
-
对于域的访问策略,请选择 Only use fine-grained access control(仅使用精细访问控制)。完成测试之后,您可以随时更新此设置。
-
在与您的 OpenSearch 服务域相同的 VPC、子网和安全组中创建 Amazon Linux Amazon EC2 实例。
由于此实例用于测试目的且需要做的工作非常少,因此请选择一种便宜的实例类型(如
t2.micro
)。为此实例分配一个公有 IP 地址,并创建一个新的密钥对或选择一个现有的密钥对。如果您创建新的密钥,请将其下载到您的~/.ssh
目录。要了解有关创建实例的更多信息,请参阅 Amazon EC2 Linux 实例入门。
-
将 Internet 网关添加到 VPC。
-
在 VPC 的路由表中,添加新的路由。对于 Destination (目的地),指定一个 CIDR 块
,其中包含您的计算机的公有 IP 地址。对于 Target (目标),请指定您刚刚创建的 Internet 网关。 例如,您可能只为您的计算机指定
123.123.123.123/32
,或者为一系列计算机指定123.123.123.0/24
。 -
对于安全组,指定两条入站规则:
Type 协议 端口范围 来源 SSH (22) TCP (6) 22 your-cidr-block
HTTPS (443) TCP (6) 443 your-security-group-id
第一条规则可让您的 SSH 连接到您的 EC2 实例。第二个允许 EC2 实例通过 HTTPS 与 OpenSearch 服务域通信。
-
从终端运行以下命令:
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 服务域。在命令中指定端口 9200 会模拟本地 OpenSearch 安装,但要使用任何你想要的端口。 OpenSearch 服务仅接受通过端口 80 (HTTP) 或 443 (HTTPS) 进行的连接。 该命令不提供反馈并无限期运行。要停止此命令,请按
Ctrl + C
。 -
在你的网络浏览器中导航到 https://localhost:9200/_dashboards/
。您可能需要确认安全异常。 或者,您可以使用 https://localhost:9200
curl、 Postman 或您常用的编程语言将请求发送到 。 提示
如果您由于证书不匹配而遇到 curl 错误,请尝试使用
--insecure
标记。
在 VPC 子网中预留 IP 地址
OpenSearch 服务通过将网络接口放置在 VPC(如果您启用多个可用区,则为 VPC 的多个子网)中放置网络接口,从而将域连接到 VPC。每个网络接口都与一个 IP 地址关联。在创建 OpenSearch 服务域之前,每个子网中必须有足够数量的 IP 地址来容纳网络接口。
以下是基本公式:S OpenSearch ervice 在每个子网中预留的 IP 地址数量等于数据节点数量的三倍除以可用区数量。
示例
-
如果某个域在 3 个可用区中有 9 个数据节点,则每个子网的 IP 数为 9 * 3 / 3 = 9。
-
如果某个域在 2 个可用区中有 8 个数据节点,则每个子网的 IP 数为 8 * 3 / 2 = 12。
-
如果某个域在一个可用区中有 6 个数据节点,则每个子网的 IP 数为 6 * 3 / 1 = 18。
创建域时,S OpenSearch ervice 会保留 IP 地址,将一些 IP 地址用于域,其余的保留用于蓝/绿部署。您可以在 Amazon EC2 控制台的 Network Interfaces 部分看到网络接口及其相关的 IP 地址。描述列显示网络接口与哪个 OpenSearch 服务域相关联。
提示
我们建议您为 OpenSearch 服务预留 IP 地址创建专用子网。通过使用专用子网,可以避免与其他应用程序和服务重叠,并确保在将来需要扩展集群时可以预留额外 IP 地址。要了解更多信息,请参阅在 VPC 中创建子网。
VPC 访问的服务相关角色
服务相关角色是一种独特的 IAM 角色,它向服务委派权限,使其可以代表您创建和管理资源。 OpenSearch 服务需要服务相关角色才能访问您的 VPC、创建域终端节点以及将网络接口放置在您的 VPC 的子网中。
OpenSearch 当您使用服务控制台在 VPC 内创建域时, OpenSearch 服务会自动创建角色。为使这种自动创建成功,您必须具有 iam:CreateServiceLinkedRole
操作的权限。有关更多信息,请参阅 IAM 用户指南中的服务相关角色权限。
在 S OpenSearch ervice 创建角色后,您可以使用 IAM 控制台查看该角色 (AWSServiceRoleForAmazonOpenSearchService
)。
有关此角色的权限以及如何删除它的完整信息,请参阅在 Amazon OpenSearch 服务中使用服务相关角色。