购买阿里云Elasticsearch(ES)实例时,需要根据业务场景配置各类型节点的规格和存储。ES实例包含数据节点、Kibana节点、专有主节点、冷数据节点、归档数据节点和协调节点,各节点承担不同职责。
数据节点
数据节点负责存储索引数据,执行文档的增删改查和聚合操作。数据节点对CPU、内存和IO要求较高,当资源不足时,建议添加新的数据节点。
如果实例中有专有主节点,数据节点只作为数据节点。
如果实例中没有专有主节点,则数据节点同时承担数据节点和专有主节点的角色。
ES集群存在两种管控架构,分别为基础管控架构(v2)和云原生新管控架构(v3)。在v2架构下执行扩容操作,如果没有专有主节点则会触发集群重启。如果集群整体负载不高且索引存在副本分片,重启过程中仍可对外持续提供服务。然而,在某些特定场景下,重启过程中可能会出现访问超时的情况,例如在重启或强制重启过程中存在大量写入和查询操作等。因此,建议在业务低峰期进行处理。
参数 | 说明 |
数据节点规格 |
说明 实例创建后不支持变更规格族,支持通过升配或降配功能在当前的规格族内变更规格。 |
数据节点存储类型 | 数据节点为云盘型或新一代云盘型时,需要选择数据节点存储类型。
说明
|
数据节点存储性能级别 | 数据节点存储类型为ESSD云盘时,支持配置该参数。 |
数据节点云盘加密 | 数据节点规格族为云盘型或新一代云盘型时,可以对云盘进行加密。
|
数据单节点存储空间 | 数据单节点存储空间与数据节点存储类型有关:
说明 2 TiB以上的高效云盘通过磁盘阵列及RAID 0的方式提供服务,扩容时仅支持蓝绿变更方式。 |
数据节点数量 | 购买的节点数量需要是可用区的整数倍。 重要 集群仅配置2个数据节点会有脑裂等风险,低版本集群(如6.x/5.x)在需要节点重启的变更场景有无法选主风险,可能引发服务不可用,稳定性低,生产上请谨慎选择。 |
Kibana节点
默认为启用状态,不可更改。
免费赠送1核2 GiB规格的Kibana节点,但仅建议在测试场景中使用。
受规格性能及稳定性影响,推荐购买2核4 GiB及以上规格的Kibana节点。
专有主节点
专有主节点的主要功能是对集群进行操作,例如创建或删除索引,跟踪哪些节点是集群的一部分,并决定哪些分片分配给相关的节点。稳定的主节点对集群的健康非常重要,默认情况下集群中的任一节点都可能被选为主节点。索引数据和搜索查询等操作会占用大量的CPU、内存和IO资源,为了确保集群的稳定性,建议您购买专有主节点,分离主节点和数据节点。
升配集群时,如果之前的专有主节点是系统赠送的,在升配后将变为计费模式。
在使用基础管控(V2)时,无专有主节点的集群进行蓝绿变更后,下次进行变更时,数据节点将会重启,因此建议您考虑购买专有主节点。
参数 | 说明 |
专有主节点 |
说明
|
专有主节点规格 | 支持的规格以购买页为准。 |
专有主节点存储类型 |
支持的存储类型以购买页为准。 |
专有主节点存储空间 | 默认为20 GiB,不可更改。 |
专有主节点数量 | 默认为3个,不可更改。 |
冷数据节点
如果您的业务中同时存在以下两种类型的数据索引,建议采用冷热分离架构(配置高性能热节点与大容量冷节点):
热数据:查询频率高或写入压力大,对延迟敏感的索引。
冷数据:查询频率低、主要为只读或极少追加写入的索引(通常为历史数据)。
通过将冷热数据部署在不同类型的节点上,不仅可以避免冷数据资源竞争影响热数据性能,还能显著降低存储成本,从而提高集群的整体处理效率和服务稳定性。”
更多信息,请参见Elasticsearch Hot Warm Architecture。
如果实例中有专有主节点,则冷数据节点只作为数据节点。
如果实例中没有专有主节点,则冷数据节点既作为数据节点,又作为专有主节点。
参数 | 说明 |
冷数据节点(也称为warm节点) | 已购买的冷数据节点支持关闭。若关闭过程中集群出现卡住,请参考关闭冷数据节点导致集群卡住文档进行问题修复。 |
冷数据节点规格 | 支持的规格请以购买页为准。 I/O需求高、存储需求大的场景,也可使用性价比较高的本地盘机型,其规格为
说明
|
冷数据节点存储类型 | 支持高效云盘、ESSD云盘。 |
冷数据节点云盘加密 |
说明
|
冷数据节点存储空间 | 最小存储空间为500 GiB。 |
冷数据节点数量 | 购买的节点数量需要是可用区的整数倍。 |
购买冷数据节点后,系统会在节点启动参数中加入-Enode.attr.box_type,如下所示。
节点类型 | 启动参数 |
数据节点 | -Enode.attr.box_type=hot |
冷数据节点 | -Enode.attr.box_type=warm |
归档数据节点
归档数据节点是 Searchable Snapshot(可搜索快照)功能的计算层,负责维护索引元数据、管理本地共享缓存,并按需从 OSS 拉取查询所需的数据块。通过将历史数据以快照形式存储在阿里云 OSS 中,归档数据节点可在保留查询能力的前提下,将存储成本降低高达 90%。
说明
归档数据节点仅支持 8.17.0 及以上版本的实例。归档数据节点开启后,不支持您自主关闭,如需关闭请联系技术支持。
归档数据节点不需要大容量本地磁盘(数据存储在 OSS 中),建议配置充足的内存以提升缓存命中率。
详细使用示例请参见Searchable Snapshot(可搜索快照)。
参数 | 说明 |
归档数据节点 | 新购 8.17.0 版本实例时可在实例规格区域勾选开启。 |
归档数据节点规格 | 推荐 4 核 16 GiB 及以上规格。归档数据节点的内存主要用于维护索引元数据和管理共享缓存,充足的内存可提升缓存命中率。支持的规格以购买页为准。 |
归档数据节点存储类型 | 支持高效云盘、ESSD 云盘。本地磁盘仅用于共享缓存,数据持久化在 OSS 中。 |
归档数据节点存储空间 | 推荐 500 GiB 以上。本地磁盘空间用作共享缓存(Shared Cache),缓存默认占节点总磁盘空间的 90%(或总空间减 100 GiB,取较小值),采用 LRU 策略淘汰冷数据块。磁盘空间越大,缓存命中率越高。 |
归档数据节点数量 | 购买的节点数量需要是可用区的整数倍。 |
购买归档数据节点后,系统会在节点启动参数中加入 -Enode.attr.box_type,如下所示。
节点类型 | 启动参数 |
数据节点 | -Enode.attr.box_type=hot |
冷数据节点 | -Enode.attr.box_type=warm |
归档数据节点 | -Enode.attr.box_type=frozen |
协调节点
协调节点可以分担数据节点的CPU开销,提高处理性能和服务稳定性。如果您的业务是CPU密集型的业务,建议购买协调节点,例如需要进行较多的聚合查询之类的操作。
参数 | 说明 |
协调节点 | 基于云原生管控架构部署的实例(7.16及以上版本和部分地域的7.10版本实例),暂不支持取消已购买的协调节点,实际以购买页为准。 |
协调节点规格 | 支持的规格以购买页为准。 |
协调节点存储类型 | 目前仅支持高效云盘。 |
协调节点存储空间 | 默认为20 GiB,不可更改。 |
协调节点数量 | 购买的节点数量需要是可用区的整数倍。 |
相关文档
购买ES实例,请参见创建阿里云Elasticsearch实例。
各节点的官方说明文档,请参见Node | Elasticsearch Guide。
各节点规格的价格,请参见产品定价。
常见问题
关闭冷数据节点导致集群卡住,应如何解决?
1、检查集群中是否主动配置了基于 box_type 的节点分配规则(即索引是否被强制分配到标记为 warm 的节点)
GET */_settings/index.routing.allocation.require.box_type查询所有现有索引的
index.routing.allocation.require.box_type设置值。若返回
{"index.routing.allocation.require.box_type": "warm"},表示该索引必须分配到box_type=warm的节点。GET _template/?filter_path=.settings.index.routing.allocation.require.box_type查询所有索引模板中是否配置了
box_type分配规则,若模板返回"index.routing.allocation.require.box_type": "warm",则所有新索引默认分配到冷数据节点。新索引创建时会继承模板中的配置。若模板中设置了该值,所有后续创建的索引都会自动应用此规则。
GET _ilm/policy?filter_path=*.policy.phases.warm.actions.allocate.require.box_type查询所有 ILM(Index Lifecycle Management)策略中,warm阶段的节点分配配置。
若上述检查结果中存在索引被分配到warm节点,此时通过降配操作关闭冷数据节点,集群会出现变更卡住:
2、修复方法
从策略中移除box_type配置
# 建议先暂停 ilm POST _ilm/stop # 先查看具体的 ILM 策略 GET _ilm/policy/your_policy_name # 更新 ILM 策略,移除 warm 阶段的 box_type配置 PUT _ilm/policy/your_policy_name { "policy": { "phases": { "warm": { "actions": { "allocate": { "require": { "box_type": null # 移除此配置 } } } }, "hot": { "actions": { "allocate": { "require": { "box_type": null # 如果有,也要移除 } } } } } } } # 如果 allocate 下的 require 为空,建议删除整个 allocate action # 或只保留其他必要的分配规则(如副本数等)从索引模板中移除box_type配置
# 先查看具体的模板名称 GET _template/?filter_path=*.settings.index.routing.allocation.require.box_type # 更新模板,移除 box_type 配置 PUT _template/your_template_name { "settings": { "index.routing.allocation.require.box_type": null } } # 或者重新提交完整的模板定义(不包含 box_type 字段)从索引中移除box_type配置
# 移除特定索引的 box_type 配置 PUT /your_index_name/_settings { "index.routing.allocation.require.box_type": null } # 批量移除所有索引的配置 { "index.routing.allocation.require.box_type": null }