本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建和管理 Amazon Elasticsearch Service 域
本章介绍如何创建和管理 Amazon Elasticsearch Service (Amazon ES) 域。Amazon ES 域与 Elasticsearch 集群同义。域是具有您指定的设置、实例类型、实例计数和存储资源的集群。
与入门教程中的简短说明不同,本章描述了所有选项,并提供了相关的参考信息。您可以使用针对 Amazon ES 控制台、AWS Command Line Interface (AWS CLI) 或 AWS SDKs 的说明完成每个过程。
创建 Amazon ES 域
本部分介绍如何使用 Amazon ES 控制台或将 AWS CLI 与 create-elasticsearch-domain
命令结合使用来创建 Amazon ES 域。
创建 Amazon ES 域 (控制台)
使用以下步骤使用控制台创建一个 Amazon ES 域。
创建 Amazon ES 域 (控制台)
-
转至 https://aws.amazon.com
,然后选择 Sign In to the Console (登录控制台)。 -
在 Analytics (分析) 下,选择 Elasticsearch Service。
-
选择 Create a new domain (创建新域)。
-
对于 Choose deployment type (选择部署类型),选择与您的域的目的最匹配的选项:
-
Production (生产) 域使用多可用区和专用主节点来实现更高的可用性。
-
Development and testing (开发和测试) 域使用单个可用区。
-
Custom (自定义) 域能让您从所有配置选项中进行选择。
重要 不同部署类型在后续页面上显示不同的选项。这些步骤包括所有选项(Custom (自定义) 部署类型)。
-
-
对于 Elasticsearch version (Elasticsearch 版本),建议您选择最新版本。有关更多信息,请参阅支持的 Elasticsearch 版本。
-
选择 Next (下一步)。
-
对于 Elasticsearch domain name (Elasticsearch 域名),请输入域名。名称必须符合以下标准:
-
对于您的账户和区域而言是唯一的
-
以小写字母开头
-
包含 3 到 28 个字符
-
只包含小写字母 a-z、数字 0-9 和连字符 (-)
-
-
如果要使用自定义终端节点而不是
https://search-
的标准终端节点,请选择 Enable custom endpoint (启用自定义终端节点)。然后,提供名称和证书。有关更多信息,请参阅创建自定义终端节点。mydomain
-1a2a3a4a5a6a7a8a9a0a9a8a7a
.us-east-1
.es.amazonaws.com -
对于 Availability Zones (可用区),选择 1-AZ、2-AZ 或 3-AZ。有关更多信息,请参阅配置多 AZ 域。
-
对于 Instance type,为数据节点选择实例类型。有关更多信息,请参阅支持的实例类型。
注意 并非所有可用区都支持所有实例类型。如果您选择 3-AZ,我们建议您选择最新一代实例类型,如 R5 或 I3。
-
对于 Number of nodes (节点数),选择数据节点数。
有关最大值,请参阅群集和实例限制。单节点集群适合开发和测试,但不应用于生产工作负载。有关更多指导,请参阅调整 Amazon ES 域大小和配置多 AZ 域。
-
对于 Data nodes storage type (数据节点存储类型),选择 Instance (实例)(默认)或 EBS。
有关创建超大型域的指南,请参阅 PB 规模。如果您选择 EBS,下列选项将会出现:
-
对于 EBS volume type (EBS 卷类型),选择一个 EBS 卷类型。
如果您选择 Provisioned IOPS (SSD) (预配置 IOPS (SSD)) 作为 EBS 卷类型,则对于 Provisioned IOPS (预配置 IOPS),请输入所需的基准 IOPS 性能。有关更多信息,请参阅 文档中的
Amazon EBS 卷Amazon EC2。 -
对于 EBS storage size per node (每个节点的 EBS 卷大小),请输入要附加到每个数据节点的 EBS 卷的大小。
EBS volume size (EBS 卷大小) 是按节点计算的。您可以通过将数据节点数乘以 EBS 卷大小来计算 Amazon ES 域的总集群大小。EBS 卷最小容量和最大容量取决于指定的 EBS 卷类型及其挂载到的实例类型。要了解更多信息,请参阅 EBS 卷大小限制。
-
-
(可选)启用或禁用专用主节点。专用主节点可增强集群稳定性,对于包含 10 个以上实例的域而言是必需的。对于生产域,我们建议使用 3 个专用主节点。
注意 对于专用主节点和数据节点,可以选择不同的实例类型。例如,您可以为数据节点选择通用或存储优化实例,但为专用主节点选择计算优化实例。
-
(可选)要启用 UltraWarm 存储,请选择启用 UltraWarm 数据节点。每种实例类型都有其可处理的最大存储量。将该数量乘以总可寻址温存储的温数据节点数。
-
(可选)对于运行 Elasticsearch 5.3 及更高版本的域,自动快照开始时间不起作用。有关自动制作快照的更多信息,请参阅使用 Amazon Elasticsearch Service 索引快照。
-
(可选)选择 Optional Elasticsearch cluster settings (可选 Elasticsearch 集群设置)。有关这些选项的摘要,请参阅高级选项。
-
选择 Next (下一步)。
-
在 Network configuration (网络配置) 部分中,选择 VPC Access (VPC 访问权限) 或 Public access (公有访问权限)。如果您选择 Public access (公有访问权限),请跳至下一步。如果选择 VPC access (VPC 访问权限),则确保您满足先决条件,然后执行下列操作:
-
对于 VPC,选择要使用的 VPC 的 ID。
注意 VPC 和域必须位于同一 AWS 区域,并且您必须选择一个租赁设置为 Default (默认) 的 VPC。Amazon ES 尚不支持使用专用租赁的 VPCs。
-
对于 Subnet (子网),选择一个子网。如果您启用了多可用区,则必须选择两个或三个子网。Amazon ES 会将 VPC 终端节点和弹性网络接口 放入子网中。
注意 必须在子网中为网络接口预留足够的 IP 地址。有关更多信息,请参阅在 VPC 子网中预留 IP 地址。
-
对于 Security groups (安全组),选择需要访问 Amazon ES 域的 VPC 安全组。有关更多信息,请参阅Amazon Elasticsearch Service 域的 VPC 支持。
-
对于 IAM role (IAM 角色),保留默认角色。Amazon ES 使用此预定义角色(也称为服务相关角色)访问您的 VPC 并将 VPC 终端节点和网络接口放入 VPC 的子网中。有关更多信息,请参阅用于 VPC 访问的服务相关角色。
-
-
在 Fine-grained access control (精细访问控制) 部分中,启用或禁用精细访问控制:
-
如果要使用 IAM 进行用户管理,请选择 Set IAM role as master user (将 IAM 角色设置为主用户),然后为 IAM 角色指定 ARN。
-
如果要使用内部用户数据库,请选择 Create a master user (创建主用户) 并指定用户名和密码。
无论您选择哪个选项,主用户都可以访问集群中的所有索引和所有 Elasticsearch APIs。 有关选择哪个选项的指南,请参阅重要概念。
如果您禁用精细访问控制,则仍可以通过将域放置在 VPC 中并/或应用限制性访问策略来控制对域的访问。您必须启用节点到节点加密和静态加密才能使用精细访问控制。
-
-
(可选)如果要对 Kibana 使用 SAML 身份验证,请选择 Prepare SAML authentication (准备 SAML 身份验证)。在域可用后,请参阅用于 Kibana 的 SAML 身份验证以了解其他步骤。
-
(可选)如果要对 Kibana 使用 Amazon Cognito 身份验证,请选择 Enable Amazon Cognito authentication (启用 Amazon Cognito 身份验证)。
-
选择想要用于 Kibana 身份验证的 Amazon Cognito 用户池和身份池。有关创建这些资源的指南,请参阅Amazon Cognito用于 Kibana 的 身份验证。
-
-
对于 Domain access policy (域访问策略),添加所需的 ARNs 或 IP 地址,或者从下拉列表中选择预配置的策略。有关更多信息,请参阅 Amazon Elasticsearch Service 中的 Identity and Access Management 和 关于 VPC 域的访问策略。
注意 如果您在步骤 18 中选择 VPC access (VPC 访问),则禁止基于 IP 的策略。但您可以使用安全组来控制哪些 IP 地址可以访问该域。有关更多信息,请参阅关于 VPC 域的访问策略。
-
(可选)如果要求对域的所有请求都通过 HTTPS 到达,请选中 Require HTTPS for all traffic to the domain (要求到域的所有流量都使用 HTTPS) 复选框。
-
(可选)要启用节点到节点加密,请选中 Node-to-node encryption (节点到节点加密) 复选框。有关更多信息,请参阅 的节点到节点加密Amazon Elasticsearch Service。
-
(可选)要启用静态数据加密,请选中 Enable encryption at rest (启用静态数据的加密) 复选框。
选择 (Default) aws/es ((默认) aws/es) 以让 Amazon ES 代表您创建 KMS 加密密钥(或使用它已创建的加密密钥)。否则,请从 KMS 主密钥菜单中选择您自己的 KMS 加密密钥。有关更多信息,请参阅 的静态数据的加密Amazon Elasticsearch Service。
-
选择 Next (下一步)。
-
在 Review (审核) 页面上,查看您的域配置,然后选择 Confirm (确认)。
创建 Amazon ES 域 (AWS CLI)
除了使用控制台创建 Amazon ES 域之外,您还可以使用 AWS CLI。有关语法,请参阅 Amazon Elasticsearch ServiceAWS CLI
命令参考 中的
示例命令
这第一个示例演示了以下 Amazon ES 域配置:
-
使用 Elasticsearch 版本 5.5 创建名为 mylogs 的 Amazon ES 域
-
用
m4.large.elasticsearch
实例类型的两个实例填充该域 -
使用 100 个 GiB 磁盘 EBS 卷作为每个数据节点的存储
-
允许匿名访问,但只能从单个 IP 地址访问:192.0.2.0/32
aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [{"Action": "es:*", "Principal":"*","Effect": "Allow", "Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'
下一个示例演示了以下 Amazon ES 域配置:
-
使用 Elasticsearch 版本 5.5 创建名为 mylogs 的 Amazon ES 域
-
用
m4.large.elasticsearch
实例类型的六个实例填充该域 -
使用 100 个 GiB 通用型 (SSD) EBS 卷作为每个数据节点的存储
-
将对服务的访问限制为单个用户(由用户的 AWS 账户 ID 标识):555555555555
-
跨三个可用区分配实例
aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=6,ZoneAwarenessEnabled=true,ZoneAwarenessConfig={AvailabilityZoneCount=3} --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::555555555555:root" }, "Action":"es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/*" } ] }'
下一个示例演示了以下 Amazon ES 域配置:
-
使用 Elasticsearch 版本 5.5 创建名为 mylogs 的 Amazon ES 域
-
用
m4.xlarge.elasticsearch
实例类型的十个实例填充该域 -
用
m4.large.elasticsearch
实例类型的三个实例作为专用主节点填充该域 -
使用 100 个 GiB 预配置 IOPS EBS 卷作为存储,并为每个数据节点配置基准性能 1000 IOPS
-
限制对单个用户和单个子资源的访问,
_search
API
aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=10,DedicatedMasterEnabled=true,DedicatedMasterType=m4.large.elasticsearch,DedicatedMasterCount=3 --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,Iops=1000 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::555555555555:root" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/_search" } ] }'
如果您尝试创建 Amazon ES 域并且已存在具有相同名称的域,则 CLI 不会报告错误。相反,它会返回现有域的详细信息。
创建 Amazon ES 域 (AWS SDKs)
AWS SDKs(除 Android 和 iOS SDKs 之外)支持 Amazon ES 配置 API 参考中定义的所有操作,包括 CreateElasticsearchDomain
。 有关示例代码,请参阅将 AWS SDKs 与 Amazon Elasticsearch Service 结合使用。有关安装和使用 AWS SDKs 的更多信息,请参阅 AWS 软件开发工具包
配置访问策略
Amazon Elasticsearch Service 提供了多种方式来配置对您的 Amazon ES 域的访问权限。有关更多信息,请参阅 Amazon Elasticsearch Service 中的 Identity and Access Management 和 中的精细访问控制Amazon Elasticsearch Service。
控制台提供了预配置的访问策略,您可以针对自己域的特定需求自定义这些策略。您也可以从其他 Amazon ES 域导入访问策略。有关这些访问策略如何与 VPC 访问交互的信息,请参阅关于 VPC 域的访问策略。
配置访问策略 (控制台)
-
转至 https://aws.amazon.com
,然后选择 Sign In to the Console (登录控制台)。 -
在 Analytics (分析) 下,选择 Elasticsearch Service。
-
在导航窗格中的 My domains (我的域) 下,选择要更新的域。
-
选择 Actions (操作) 和 Modify access policy (修改访问策略)。
-
编辑访问策略 JSON,或使用下拉列表选择预配置的选项。
-
选择 Submit。
高级选项
使用高级选项来配置以下内容:
- rest.action.multi.allow_explicit_index
-
指定是否允许在 HTTP 请求正文中显式引用索引。将此属性设置为
false
可防止用户绕过子资源的访问控制。默认情况下,该值为true
。 有关更多信息,请参阅高级选项和 API 注意事项。 - indices.fielddata.cache.size
-
指定分配到字段数据的 Java 堆空间的百分比。默认情况下,该设置为 JVM 堆的 20%。
注意 许多客户查询轮换每日索引。对于大多数这些使用案例,我们建议您将
indices.fielddata.cache.size
配置为 JVM 堆的 40% 来开始基准测试。对于非常大的索引,您可能需要大型字段数据缓存。 - indices.query.bool.max_clause_count
-
指定 Lucene 布尔查询中允许的子句的最大数量。默认值为 1024。如果查询具有的子句数超过了允许的子句数,则会导致
TooManyClauses
错误。有关更多信息,请参阅 Lucene 文档。