Amazon Elasticsearch Service 的冷存储 - Amazon Elasticsearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Elasticsearch Service 的冷存储

冷存储允许您在 Amazon Elasticsearch Service (Amazon ES) 域中存储任何数量不经常访问的数据或历史数据,并以低于其他存储层的成本进行按需分析。如果您需要对旧数据进行定期研究或取证分析,则适合使用冷存储。适用于冷存储的数据的实际示例包括不经常访问的日志、为满足法规遵从性要求而必须保留的数据或具有历史价值的日志。

与相似UltraWarm存储,冷存储由 Amazon S3 提供支持。当您需要查询冷数据时,可以选择性地将其附加到现有 UltraWarm Wine 节点上。您可以手动或使用索引状态管理策略管理冷数据的迁移和生命周期。

Prerequisites

冷存储具有以下先决条件:

  • 冷库需要使用弹性搜索版本 7.9 或更高版本。

  • 要在 Amazon ES 域上启用冷存储,您还必须在同一域中启用 UltraWarm Wine。

  • 要使用冷存储,域必须具有专用主节点.

  • 如果您的域为数据节点使用 T2 或 T3 实例类型,则无法使用冷存储。

  • 如果域使用访问权限的精细控制,非管理员用户必须是mapped添加到cold_manager在 Kibana 的作用,以管理冷指数。

注意

这些区域有:cold_manager角色可能不存在于某些先前存在的 Amazon ES 域中。如果您没有看到 Kibana 的角色,需要手动创建它.

配置权限

如果您在先前存在的 Amazon ES 域上启用冷存储,cold_manager角色可能无法在域上定义。如果域使用访问权限的精细控制,则必须将非管理员用户映射到此角色才能管理冷索引。手动创建cold_manager角色,请执行下列步骤:

  1. 在基巴纳,转到安全,然后选择Permissions (权限).

  2. 选择创建操作组并配置以下组:

    Group name 权限
    cold_cluster
    • cluster:monitor/nodes/stats

    • cluster:admin/ultrawarm*

    • cluster:admin/cold/*

    cold_index
    • indices:monitor/stats

    • indices:data/read/minmax

    • indices:admin/ultrawarm/migration/get

    • indices:admin/ultrawarm/migration/cancel

  3. 选择角色创建角色.

  4. 将角色命名为冷管理器.

  5. 适用于群集权限、选择cold_cluster您创建的组。

  6. 适用于索引,输入*.

  7. 适用于索引权限中,选择cold_index您创建的组。

  8. 选择创建

  9. 创建角色之后,将其映射为设置为管理冷索引的任何用户或后端角色。

冷存储要求和性能注意事项

由于冷存储使用 Amazon S3,因此它不会产生任何热存储的开销,例如副本、Linux 预留空间和 Amazon ES 预留空间。冷存储没有特定的实例类型,因为它没有附加任何计算容量。您可以将任意数量的数据存储在冷存储中。监控ColdStorageSpaceUtilization指标,查看您使用的冷存储空间量。

冷存储定价

与 UltraWarm Wine 存储类似,使用冷存储,您只需为数据存储付费。冷数据没有计算成本,如果冷存储中没有数据,则不会收取计费。

在冷存储和热存储之间移动数据时,您不会产生任何传输费用。当索引在热存储和冷存储之间迁移时,您仍然只需为索引的一个副本付费。迁移完成后,索引将根据其迁移到的存储层计费。有关冷存储定价的更多信息,请参阅Amazon Elasticsearch Service 的定价.

启用冷存储

控制台是创建使用冷存储的域的最简单方法。创建域时,选择启用冷存储. 相同的过程适用于现有域,前提是满足先决条件. 即使域状态从处理处于活动状态,冷库可能会在几个小时内无法使用。

您也可以使用Amazon CLI或者配置 API以启用冷存储。

示例 CLI 命令

以下Amazon CLI命令创建一个具有三个数据节点、三个专用主节点、启用冷存储和启用精细访问控制的域:

aws es create-elasticsearch-domain \ --domain-name my-domain \ --elasticsearch-version 7.10 \ --elasticsearch-cluster-config ColdStorageOptions={Enabled=true},WarmEnabled=true,WarmCount=4,WarmType=ultrawarm1.medium.elasticsearch,InstanceType=r6g.large.elasticsearch,DedicatedMasterEnabled=true,DedicatedMasterType=r6g.large.elasticsearch,DedicatedMasterCount=3,InstanceCount=3 \ --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=11 \ --node-to-node-encryption-options Enabled=true \ --encryption-at-rest-options Enabled=true \ --domain-endpoint-options EnforceHTTPS=true,TLSSecurityPolicy=Policy-Min-TLS-1-2-2019-07 \ --advanced-security-options Enabled=true,InternalUserDatabaseEnabled=true,MasterUserOptions='{MasterUserName=master-user,MasterUserPassword=master-password}' \ --region us-east-2

有关详细信息,请参阅Amazon CLI命令参考.

示例配置 API 请求

对配置 API 的以下请求创建一个域,其中包含三个数据节点、三个专用主节点、启用冷存储和启用精细访问控制:

POST https://es.us-east-2.amazonaws.com/2015-01-01/es/domain { "ElasticsearchClusterConfig": { "InstanceCount": 3, "InstanceType": "r6g.large.elasticsearch", "DedicatedMasterEnabled": true, "DedicatedMasterType": "r6g.large.elasticsearch", "DedicatedMasterCount": 3, "ZoneAwarenessEnabled": true, "ZoneAwarenessConfig": { "AvailabilityZoneCount": 3 }, "WarmEnabled": true, "WarmCount": 4, "WarmType": "ultrawarm1.medium.elasticsearch", "ColdStorageOptions": { "Enabled": true } }, "EBSOptions": { "EBSEnabled": true, "VolumeType": "gp2", "VolumeSize": 11 }, "EncryptionAtRestOptions": { "Enabled": true }, "NodeToNodeEncryptionOptions": { "Enabled": true }, "DomainEndpointOptions": { "EnforceHTTPS": true, "TLSSecurityPolicy": "Policy-Min-TLS-1-2-2019-07" }, "AdvancedSecurityOptions": { "Enabled": true, "InternalUserDatabaseEnabled": true, "MasterUserOptions": { "MasterUserName": "master-user", "MasterUserPassword": "master-password" } }, "ElasticsearchVersion": "7.10", "DomainName": "my-domain" }

有关详细信息,请参阅Amazon Elasticsearch Service 的配置 API 参考

管理基巴纳冷指数

您可以使用亚马逊 ES 域中现有的 Kibana 界面管理热指数、热指数和冷指数。Kibana 允许您在温存储和冷存储之间迁移索引,并监控索引迁移状态,而无需使用 CLI 或配置 API。有关更多信息,请参阅 。管理indices in Kibana.

将索引迁移到冷库

将索引迁移到冷存储时,您可以为数据提供一个时间范围,以便更轻松地发现。您可以根据索引中的数据选择时间戳字段,手动提供开始和结束时间戳,或选择不指定时间戳。

参数 支持的值 描述
timestamp_field 索引映射中的日期/时间字段。

所提供字段的最小值和最大值将计算并存储为start_timeend_time冷索引的元数据。

start_timeend_time

以下格式之一:

  • 严格日期 _ 可选 _ 时间。例如:yyyy-MM-dd'T'HH:mm:ss.SSSZyyyy-MM-dd

  • 以毫秒为单位的时代时间

提供的值存储为start_timeend_time冷索引的元数据。

如果您不想指定时间戳,请将?ignore=timestamp添加到请求。

以下请求将热索引迁移到冷存储,并为该索引中的数据提供开始和结束时间:

POST _ultrawarm/migration/my-index/_cold { "start_time": "2020-03-09", "end_time": "2020-03-09T23:00:00Z" }

然后检查迁移的状态:

GET _ultrawarm/migration/my-index/_status

您可以将索引从热存储迁移到冷存储,最多可以同时发出 100 个请求。迁移过程具有以下状态:

ACCEPTED_COLD_MIGRATION - Migration request is accepted and queued. RUNNING_METADATA_MIGRATION - The migration request was selected for execution and metadata is migrating to cold storage. FAILED_METADATA_MIGRATION - The attempt to add index metadata has failed and all retries are exhausted. PENDING_INDEX_DETACH - Index metadata migration to cold storage is completed. Preparing to detach the warm index state from the local cluster. RUNNING_INDEX_DETACH - Local warm index state from the cluster is being removed. Upon success, the migration request will be completed. FAILED_INDEX_DETACH - The index detach process failed and all retries are exhausted.

自动迁移到冷存储

您可以使用索引状态管理在索引达到特定期限或满足其他条件后自动执行迁移过程。请参阅示例策略策略,其中演示了如何自动将索引从热存储迁移到 UltraWarm Wine 到冷存储。

注意

显式显式显式timestamp_field才能使用 “索引状态管理” 策略将索引移动到冷存储中。

取消迁移到冷存储

如果迁移到冷存储器已排队或处于失败状态,您可以使用以下请求取消迁移:

POST _ultrawarm/migration/_cancel/my-index

如果您的域使用精细访问控制,则需要indices:admin/ultrawarm/migration/cancel权限提出此请求。

列出冷指数

在查询之前,您可以列出冷存储中的索引,以决定哪些索引要迁移到 UltraWarm Wine 进行进一步分析。以下请求列出了按索引名称排序的所有冷索引:

GET _cold/indices/_search

Filtering

您可以根据基于前缀的索引模式和时间范围偏移过滤冷指数。

以下请求列出了与event-*

GET _cold/indices/_search { "filters":{ "index_pattern": "event-*" } }

以下请求返回索引start_timeend_time元数据字段之间2019-03-012020-03-01

GET _cold/indices/_search { "filters": { "time_range": { "start_time": "2019-03-01", "end_time": "2020-03-01" } } }

Sorting

您可以按索引名称或大小等元数据字段对冷索引进行排序。以下请求按降序列出了所有按大小排序的索引:

GET _cold/indices/_search { "sort_key": "size:desc" }

其他有效的排序键是start_time:asc/descend_time:asc/desc, 和index_name:asc/desc.

Pagination

您可以对冷索引列表进行分页。配置每页要返回的索引数,使用page_size参数(默认值为 10)。EVERY_search请求返回一个pagination_id,您可以将其用于后续调用。

以下请求分页_search请求,并显示接下来的 100 个结果:

GET _cold/indices/_search?page_size=100 { "pagination_id": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY" }

将冷指数迁移到温暖存储

使用上一节中的过滤条件缩小冷索引列表的范围后,将其迁移回 UltraWarm Wine,您可以在其中查询数据并使用它来创建可视化效果。

以下请求将两个冷索引迁移回热存储:

POST _cold/migration/_warm { "indices": "my-index1,my-index2" }

要检查迁移的状态并检索迁移 ID,请发送以下请求:

GET _cold/migration/_status

要获取特定于索引的迁移信息,请包括索引名称:

GET _cold/migration/my-index/_status

您可以按索引的当前迁移状态列出索引,而不是指定索引。有效值包括 _failed_accepted_all

以下命令获取单个迁移请求中所有索引的状态:

GET _cold/migration/_status?migration_id=my-migration-id

使用状态请求检索迁移 ID。有关迁移的详细信息,请添加&verbose=true.

您可以将索引从冷存储迁移到热存储批量 10,最多可同时发出 100 个请求。迁移过程具有以下状态:

ACCEPTED_MIGRATION_REQUEST - Migration request is accepted and queued. RUNNING_INDEX_CREATION - Migration request is picked up for processing and will create warm indices in the cluster. PENDING_COLD_METADATA_CLEANUP - Warm index is created and the migration service will attempt to clean up cold metadata. RUNNING_COLD_METADATA_CLEANUP - Cleaning up cold metadata from the indices migrated to warm storage. FAILED_COLD_METADATA_CLEANUP - Failed to clean up metadata in the cold tier. FAILED_INDEX_CREATION - Failed to create an index in the warm tier.

从快照恢复冷索引

联系人Amazon Web Services Support如果您需要从自动快照恢复冷索引,包括在整个域被意外删除的情况下。亚马逊 ES 会在冷指数被删除后保留 14 天。

取消从冷存储迁移到热存储

如果从冷存储到热存储的索引迁移已排队或处于失败状态,您可以通过以下请求取消它:

POST _cold/migration/my-index/_cancel

要取消一批索引的迁移(一次最多 10 个索引),请指定迁移 ID:

POST _cold/migration/_cancel?migration_id=my-migration-id

使用状态请求检索迁移 ID。

更新冷索引元数据

您可以更新start_timeend_time字段,用于冷索引:

PATCH _cold/my-index { "start_time": "2020-01-01", "end_time": "2020-02-01" }

您无法更新timestamp_field在冷库索引。

注意

Kibana 不支持 PATCH 方法。使用curlPostman或其他方法来更新冷元数据。

删除冷索引

如果您不使用 ISM 策略,则可以手动删除冷索引。以下请求删除冷索引:

DELETE _cold/my-index

禁用冷存储

Amazon ES ES 控制台是禁用冷存储的最简单方法。选择域,然后选择编辑域,然后取消选择启用冷存储.

使用AmazonCLI 或配置 API,在ColdStorageOptions,设置"Enabled"="false".

在禁用冷存储之前,必须删除所有冷索引或将其迁移回温存储,否则禁用操作将失败。