更新时间:2024-10-25 GMT+08:00

变更Elasticsearch集群节点规格

当Elasticsearch或OpenSearch集群的数据面业务变化,需要动态调整集群的节点规格和磁盘类型时,可以参考本文变更规格。

场景描述

表1 变更规格场景

场景

描述

约束限制

升级节点规格

基于某一节点类型变更集群的“节点规格”。变更规格过程中,会依次对节点进行关机,完成更改后再依次开机,是一个滚动的变更过程。

一般用于小规格变更为大规格,常用于如下场景:

  • 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以升级Master节点的“节点规格”保证集群的正常使用。
  • 当数据节点任务分发量、结果汇聚量过大时,可以升级Client节点的“节点规格”
  • 当数据的写入与查询突然变得缓慢时,可以升级数据节点的“节点规格”提高数据节点的查询与写入效率。
  • 当存在冷数据查询缓慢时,可以升级冷数据节点的“节点规格”,提高数据查询的效率。
  • 变更节点规格也支持将大规格更改为小规格,但是此变更会降低集群的处理性能,进而影响业务能力,请谨慎使用。
  • 不支持同时修改节点规格和磁盘类型。
  • 变更过程中,Kibana不可用。

变更磁盘类型

基于某一节点类型变更集群的节点存储类型。通过重建节点的方式删除原类型的磁盘,再挂载新类型的磁盘,实现更改节点的磁盘类型。

  • 只有数据节点和冷数据节点支持变更磁盘类型,且数据节点和冷数据节点之和必须大于等于3。
  • 本地盘不支持修改磁盘类型。
  • 不支持同时修改节点规格和磁盘类型。
  • 变更过程中,Kibana不可用。

在集群数据量比较大的情况下,变更节点规格耗时比较长,建议在业务低峰期更改节点规格,利于更快完成规格更改。

前提条件

  • 确认集群处于“可用”状态,且无正在进行的任务。
  • 确认CSS服务有足够的配额支持集群扩容。

更改集群规格

  1. 登录云搜索服务管理控制台。
  2. 在左侧菜单栏,选择对应的集群类型,进入集群管理页面。
  3. 确认业务数据是否都有副本,确保变更规格过程中不会中断业务。
    1. 在集群列表选择目标集群,单击操作列的Kibana,登录Kibana。
    2. 选择左侧导航栏的“Dev Tools”,进入操作页面。
    3. 在Kibana中执行命令GET _cat/indices?v
      • 当返回的“rep”值大于“0”时,则表示有副本,请继续执行下一步。
      • 当返回的“rep”值等于“0”时,则表示没有副本,建议先为集群手动创建快照再变更规格。
  4. 选择目标集群,单击操作列的“更多>形态变更”进入形态变更页面。
  5. 选择“更改集群规格”页签。
  6. 在更改集群规格页面,设置变更规格的参数。
    表2 变更规格

    参数

    说明

    变更类型

    选择“变更规格”

    变更的资源

    显示本次变更规格的资源变化量。

    变更的角色

    先在“节点类型”列选择本次要变更的节点类型,只能选择一种类型。再在“节点规格”列选择新规格,或“节点存储”列选择新磁盘类型。节点规格和磁盘类型,不支持同时变更。

    图1 变更规格
  7. 单击“下一步”
  8. 确认变更信息后,单击“提交申请”
  9. 在弹窗中确认检测项,单击“确认”启动集群规格变更。
    • 当变更节点规格时,需要确认是否勾选“进行索引副本校验”“检测集群状态”
    • 当变更磁盘类型时,需要确认是否勾选“索引副本校验”“检测集群负载”
    表3 检测项说明

    检测项

    说明

    索引副本校验

    索引副本校验用于保证索引正常提供服务。如果跳过校验,变更规格操作将不会要求每一个索引都有副本,变更过程中可能会影响业务。

    • 当没有Master节点的集群更改节点规格时,如果选择进行索引副本校验,则要求所有索引至少有1个副本,且“节点数量”总和不小于3。
    • 当有Master节点的集群更改节点规格时,如果选择进行索引副本校验,则要求所有索引至少有1个副本。

    检测集群状态

    默认检测集群状态,变更规格为滚动变更,变更过程中,为了保证变更成功率以及数据安全,会确保每个节点进程拉起来后继续后续节点操作。当集群负载过高业务故障,无法正常下发变更请求,依赖更多的资源才能恢复的紧急情况下可忽略检测集群状态,忽略后,变更过程中因为忽略集群状态检测可能会导致集群故障并中断业务,请谨慎跳过。

    检测集群负载

    更改磁盘类型过程中节点数据的迁移以及节点下线再上线的动作,会占用集群资源,使集群负载升高。集群负载检测能够识别集群当前可能存在的负载风险,能降低因为集群负载过高而导致的集群更改磁盘类型失败。

    “集群负载检测”检测项包含:

    • 最大search队列排队数小于1000(nodes.thread_pool.search.queue < 1000)
    • 最大write队列排队数小于200(nodes.thread_pool.write.queue < 200)
    • 最大cpu使用率小于90%(nodes.process.cpu.percent < 90)
    • 最大load相对核数占比小于80%( nodes.os.cpu.load_average / cpu核数 < 80%)

    如果提交失败,提示需要升级集群,则表示当前集群版本过旧,不支持变更磁盘类型,请先升级集群到最新的镜像版本再变更。升级指导请参见升级Elasticsearch集群版本

  10. 单击“返回集群列表”跳转到集群管理页面。集群的“任务状态”列中显示为“规格修改”,表示集群正在更改规格。当集群状态变为“可用”,则表示规格变更成功。