本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 a 中启动您的亚马逊 OpenSearch 服务域名 VPC
您可以将诸如 Amazon S OpenSearch ervice 域之类的 Amazon 资源启动到虚拟私有云中 (VPC)。A VPC 是专为您服务的虚拟网络 Amazon Web Services 账户. 它在逻辑上与 Amazon 云中的其他虚拟网络隔绝。将 OpenSearch 服务域置于中VPC可以实现 OpenSearch 服务与其中的其他服务之间的安全通信,VPC而无需互联网网关、NAT设备或VPN连接。所有流量都安全地保存在 Amazon 云中。
注意
如果将 OpenSearch 服务域置于VPC中,则您的计算机必须能够连接到VPC。这种连接通常采用传输网关VPN、托管网络或代理服务器的形式。您不能直接从外部访问您的域名VPC。
VPC与公共域名相比
以下是域名与公共VPC域名的一些区别。每个差异都有更加详细的介绍。
-
由于其逻辑隔离,因此与使用公共端点的域相比,位于中的域VPC具有额外的安全层。
-
虽然公共域名可以从任何联网的设备上访问,但VPC域名需要某种形式的VPN或代理。
-
与公共域相比,VPC域名在控制台中显示的信息较少。具体而言,集群运行状况选项卡中不包含分片信息;不存在索引选项卡。
-
域端点采用不同的形式(
https://search-domain-name
与https://vpc-domain-name
)。 -
您不能将基于 IP 的访问策略应用于驻留在中的域,VPC因为安全组已经强制实施了基于 IP 的访问策略。
限制
在中操作 OpenSearch 服务域VPC有以下限制:
-
如果您在中启动新域VPC,则以后无法将其切换为使用公共终端节点。反之亦然:如果您创建带有公共终端节点的域,则以后无法将其放置在中VPC。您必须创建一个新的域,然后迁移数据。
-
您可以在中启动您的域名,VPC也可以使用公共终端节点,但不能两者兼而有之。在创建域时只能选择其一。
-
您无法在使用专用租赁的域名VPC中启动您的域名。必须使用租期设置为 “默认” 的。VPC
-
将域放置在中后VPC,您无法将其移至其他域VPC,但可以更改子网和安全组设置。
-
要访问位于中的域的 OpenSearch 仪表板的默认安装VPC,用户必须有权访问VPC。此过程因网络配置而异,但可能涉及连接到VPN或托管网络,或者使用代理服务器或传输网关。要了解更多信息关于VPC域名的访问策略,请参阅《Amazon VPC 用户指南》和控制对仪表板的访问权限 。
架构
为了提供支持VPCs, OpenSearch 服务将终端节点放置在您的VPC一个、两个或三个子网中。如果您为域启用多个可用区,则每个子网必须位于同一区域中的不同可用区中。如果您只使用一个可用区,S OpenSearch ervice 会将一个终端节点放入一个子网中。
下图显示了一个可用区的VPC架构:
下图显示了两个可用区的VPC架构:
OpenSearch 服务还会在中为您的每个数据节点放置一个 el astic n VPC etwork inter face (ENI)。 OpenSearch 服务会根据您的子网地址范围为每个人分配ENI一个私有 IP IPv4 地址。该服务还为 IP 地址分配公共DNS主机名(即域端点)。您必须使用公共DNS服务将端点(DNS主机名)解析为数据节点的相应 IP 地址:
-
如果您通过将
enableDnsSupport
选项设置为true
(默认值)来VPC使用亚马逊提供的DNS服务器,则 OpenSearch 服务端点的解析将成功。 -
如果您VPC使用私有DNS服务器,并且该服务器可以访问公共权威DNS服务器来解析DNS主机名,则 OpenSearch 服务端点的解析也将成功。
因为 IP 地址可能会发生更改,所以您应定期解析域终端节点,以便可以始终访问正确的数据节点。我们建议您将DNS解决间隔设置为一分钟。如果您使用的是客户端,则还应确保清除客户端中的DNS缓存。
从公共访问迁移到VPC访问权限
创建域时,您可以指定该域应具有公有终端节点还是位于域中VPC。一旦创建,就无法再切换,而只能创建一个新域,手动重建索引或迁移您的数据。快照提供了一种迁移数据的便捷方法。有关拍摄和还原快照的信息,请参阅在 Amazon OpenSearch Service 中创建索引快照。
关于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域名。
除了此连接要求外,还VPCs允许您通过安全组管理对域的访问。对于许多使用案例,这种安全功能的组合方式已足够,并且您可能愿意将开放访问策略应用于域。
使用开放访问政策并不意味着互联网上的任何人都可以访问 OpenSearch 服务域。相反,这意味着,如果请求到达 OpenSearch 服务域并且相关的安全组允许,则该域将接受该请求。唯一的例外是,如果您使用的是精细的访问控制或指定IAM角色的访问策略。在这些情况下,意味着要让域接受某个请求,安全组必须允许该请求并且必须使用有效凭证的签署该请求。
注意
由于安全组已经强制执行基于 IP 的访问策略,因此您无法将基于 IP 的访问策略应用于位于中的 OpenSearch 服务域。VPC如果使用公有访问权限,则基于 IP 的策略仍可用。
开始之前:VPC访问的先决条件
在启用与新 OpenSearch 服务域之间的连接之前,必须执行以下操作:VPC
-
创建一个 VPC
要创建您的VPC,您可以使用 Amazon VPC 控制台 Amazon CLI、或其中一个 Amazon SDKs。有关更多信息,请参阅《Amazon VPC 用户指南》VPCs中的 “使用”。如果您已经有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 实例入门。
-
将互联网网关添加到您的VPC.
-
在您的路由表中VPC,添加一条新路线。在 “目标” 中,指定一个包含您计算机的公共 IP 地址的CIDR块
。对于 Target (目标),请指定您刚刚创建的 Internet 网关。 例如,您可能只为您的计算机指定
123.123.123.123/32
,或者为一系列计算机指定123.123.123.0/24
。 -
对于安全组,指定两条入站规则:
类型 协议 端口范围 来源 SSH(22) TCP(6) 22 your-cidr-block
HTTPS(443) TCP(6) 443 your-security-group-id
第一条规则允许你SSH进入你的EC2实例。第二个允许EC2实例通过服务域与 OpenSearch 服务域通信HTTPS。
-
从终端运行以下命令:
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 控制台的 “网络接口” 部分查看网络接口及其关联的 IP 地址。描述列显示网络接口与哪个 OpenSearch 服务域相关联。
提示
我们建议您为 OpenSearch 服务预留 IP 地址创建专用子网。通过使用专用子网,可以避免与其他应用程序和服务重叠,并确保在将来需要扩展集群时可以预留额外 IP 地址。要了解更多信息,请参阅在中创建子网VPC。
您也可以考虑配置专用的协调器节点,以减少VPC域名所需的私有 IP 地址预留数量。 OpenSearch将 elastic network interface (ENI) 连接到您的专用协调器节点,而不是您的数据节点。专用协调器节点数通常为总数据节点数的 10% 左右。因此,将减少为VPC域保留的私有 IP 地址。
用于VPC访问的服务关联角色
服务相关角色是一种独特的IAM角色类型,它向服务委派权限,使其可以代表您创建和管理资源。 OpenSearch 服务需要服务相关角色才能访问您的VPC、创建域终端节点以及将网络接口放置在您的VPC子网中。
OpenSearch 当您使用服务控制台在中创建域时, OpenSearch 服务会自动创建角色VPC。为使这种自动创建成功,您必须具有 iam:CreateServiceLinkedRole
操作的权限。要了解更多信息,请参阅IAM用户指南中的服务相关角色权限。
在 S OpenSearch ervice 创建角色后,您可以使用IAM控制台对其进行查看 (AWSServiceRoleForAmazonOpenSearchService
)。
有关此角色的权限以及如何删除它的完整信息,请参阅使用 Amazon OpenSearch Service 的服务相关角色。