

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

# 适用于 Amazon OpenSearch 服务的多层存储
<a name="multi-tier-storage"></a>

Amazon Ser OpenSearch vice 的多层存储是一种智能数据管理解决方案，它通过管理不同存储层的数据来优化性能和成本。这种架构允许组织通过将频繁访问的数据保存在高性能热存储中，同时将访问频率较低的数据转移到更具成本效益的温存储中，从而有效地权衡性能和成本。

Amazon OpenSearch 服务为 hot/warm 存储层提供了两种架构选项：
+ **OpenSearch 多层存储架构**
  + 将 Amazon S3 与本地实例存储相结合
  + 由 OpenSearch 优化实例提供支持
  + 支持暖层中的写入操作
  + 支持热层和温层之间的无缝数据迁移
  + 在 OpenSearch 3.3 及以上版本中可用
  + 不支持冰冷等级
+ **UltraWarm基于体系结构**
  + 将 Amazon S3 与本地实例存储相结合
  + 由 UltraWarm 实例提供支持
  + 针对只读温层工作负载进行了优化
  + 在 Elasticsearch 6.8 及以上版本以及所有版本上可用 OpenSearch 
  + 支持寒冷等级

**注意**  
 本文档仅重点介绍多层架构。[有关超温存储架构，请参阅[超温存储和冷](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ultrawarm.html)存储](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/cold-storage.html) 

## 多层存储架构
<a name="multi-tier"></a>

**Topics**
+ [

### 主要优势
](#multi-tier-benefits)
+ [

### 先决条件
](#multi-tier-prerequisites)
+ [

### 限制
](#multi-tier-limitations)
+ [

### 需知信息
](#things-to-note)
+ [

### 创建多层域名
](#multi-tier-creating)
+ [

### 管理层迁移
](#multi-tier-managing)
+ [

### 安全配置
](#multi-tier-security)
+ [

### 最佳实践
](#multi-tier-best-practices)
+ [

### 监控指标
](#multi-tier-metrics)

### 主要优势
<a name="multi-tier-benefits"></a>
+ **Writable Warm：支持对热**索引进行写入操作
+ **无缝迁移：**跨存储层无缝移动数据
+ **成本优化：**通过将不太活跃的数据移至经济实惠的温存储来降低存储成本
+ **性能增强：**保持热层中频繁访问的数据的高性能
+ **灵活的数据管理：**选择最适合您的工作负载要求的架构
+ **自动化管理：**简化跨存储层的数据生命周期管理

### 先决条件
<a name="multi-tier-prerequisites"></a>
+ **引擎版本： OpenSearch ****3.3 或更高版本**
+ **实例系列：**
  + 热门节点： OR1 OR2、 OM2、或 OI2
  + 温节点： OI2
+ **安全：** Node-to-node加密、静态加密、强制执行 HTTPS

### 限制
<a name="multi-tier-limitations"></a>
+ 适用于所有已 OpenSearch 优化实例但尚未启用 Ultrawarm 的域名
+ 不支持冷层

### 需知信息
<a name="things-to-note"></a>
+ 在多层架构中，热到热迁移不会触发强制合并。如果需要，用户仍然可以使用索引管理策略编排强制合并。
+ 除了索引之外，温节点现在还会执行后台合并操作（类似于热点）。
+ 温索引上的所有搜索请求都路由到主分片，只有在主分片关闭时，副本才会提供读取服务。
+ 此架构还支持温索引的自动快照
+ 只有热门索引才支持跨集群复制
+  APIs 诸如 Shrink、Split 和 Clone 之类的索引不适用于热索引。

### 创建多层域名
<a name="multi-tier-creating"></a>

#### 步骤 1：创建域名
<a name="multi-tier-step1"></a>

```
aws opensearch create-domain \
      --domain-name my-domain \
      --engine-version OpenSearch_3.3 \
      --cluster-config InstanceCount=3,InstanceType=or2.large.search,DedicatedMasterEnabled=true,DedicatedMasterType=m6g.large.search,DedicatedMasterCount=3,WarmEnabled=true,WarmCount=3,WarmType=oi2.2xlarge.search \
      --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":"user_name","MasterUserPassword":"your_pass"}}' \
      --access-policies '{"Version": "2012-10-17",		 	 	  "Statement":[{"Effect":"Allow","Principal":"*","Action":"es:*","Resource":"*"}]}' \
      --region us-east-1
```

#### 步骤 2：验证温节点
<a name="multi-tier-step2"></a>

```
aws opensearch describe-domain-nodes --domain-name my-domain --region us-east-1
```

响应示例（摘录）：

```
{
      "NodeType": "Warm",
      "InstanceType": "oi2.large.search",
      "NodeStatus": "Active"
    }
```

### 管理层迁移
<a name="multi-tier-managing"></a>

多层域支持：
+ 全新分层 APIs 可简化体验
+ 兼容性 UltraWarm APIs 方面的传统

#### 新分层 APIs
<a name="multi-tier-new-apis"></a>

**将索引迁移到 warm：**

```
curl -XPOST 'https://localhost:9200/index-name/_tier/warm'
```

响应：

```
{"acknowledged": true}
```

**将索引迁移到 hot：**

```
curl -XPOST 'https://localhost:9200/index-name/_tier/hot'
```

响应：

```
{"acknowledged": true}
```

**检查分层状态：**

```
curl -XGET 'https://localhost:9200/index-name/_tier'
```

示例响应：

```
{
      "tiering_status": {
         "index": "index-name",
         "state": "RUNNING_SHARD_RELOCATION",
         "source": "HOT",
         "target": "WARM",
         "start_time": 1745836500563,
         "shard_level_status": {
           "running": 0,
           "total": 100,
           "pending": 100,
           "succeeded": 0
         }
      }
    }
```

**详细的分片视图：**

```
curl 'https://localhost:9200/index1/_tier?detailed=true'
```

**列出所有正在进行的迁移（文本）：**

```
curl 'https://localhost:9200/_tier/all'
```

**列出所有正在进行的迁移 (JSON)：**

```
curl 'https://localhost:9200/_tier/all?format=json'
```

**按目标等级筛选：**

```
curl 'https://localhost:9200/_tier/all?target=_warm'
```

#### 兼容性 UltraWarm APIs 方面的传统
<a name="multi-tier-legacy-apis"></a>

**迁移到温暖模式：**

```
curl -XPOST localhost:9200/_ultrawarm/migration/index2/_warm
```

**迁移到 hot：**

```
curl -XPOST localhost:9200/_ultrawarm/migration/index2/_hot
```

**检查状态：**

```
curl -XGET localhost:9200/_ultrawarm/migration/index2/_status
```

### 安全配置
<a name="multi-tier-security"></a>

如果您在先前存在的 Amazon Ser OpenSearch vice 域上启用多层存储，则可能无法在该域上定义该`storage_tiering_manager`角色。必须将非管理员用户映射到此角色，才能使用精细访问控制管理域上的温索引。手动创建 `storage_tiering_manager` 角色，请执行下列步骤：

1. 在 “ OpenSearch 控制面板” 中，转至 “**安全**”，然后选择 “**权限**”。

1. 选择**创建操作组**并配置以下组：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/multi-tier-storage.html)

1. 选择**角色**和**创建角色**。

1. 将角色命名为 `storage_tiering_manager`。

1. 对于**群集权限**，选择 `storage_tiering_cluster` 和 `cluster_monitor`。

1. 对于**索引**，键入 `*`。

1. 对于**索引权限**`storage_tiering_index_read`，请选择`storage_tiering_index_write`和`indices_monitor`。

1. 选择**创建**。

1. 创建角色后，将其映射到将管理多层索引的任何用户或后端角色。

### 最佳实践
<a name="multi-tier-best-practices"></a>

在您的 Amazon Ser OpenSearch vice 域中实施多层存储时，请考虑以下最佳实践：
+ 定期审查您的数据访问模式以优化等级分配
+ 监控性能指标以确保高效的资源利用率
+ 使用新的分层 APIs 对数据迁移进行精细控制

### 监控指标
<a name="multi-tier-metrics"></a>

多层存储域为监控温层性能提供了额外的指标。这些指标包括现有 UltraWarm 指标和 OpenSearch 针对优化实例架构的新指标：

#### 新指标
<a name="multi-tier-new-metrics"></a>


| 指标名称 | 节点等级统计 | 集群等级统计 | 粒度 | 
| --- | --- | --- | --- | 
| WarmIndexingLatency | 平均值 | 平均值 | 1 分钟 | 
| WarmIndexingRate | 平均值 | 平均值、最大值、总和 | 1 分钟 | 
| WarmThreadpoolIndexingQueue | 最大值 | 总和、最大值、平均值 | 1 分钟 | 
| WarmThreadpoolIndexingRejected | 最大值 | 总和 | 1 分钟 | 
| WarmThreadpoolIndexingThreads | 最大值 | 总和、平均值 | 1 分钟 | 