集群数据节点缩容功能目前适用于后付费和单可用区部署的阿里云ES实例,暂不支持预付费和跨可用区部署的阿里云ES实例。并且只支持数据节点个数的变更,不支持专有主节点、协调节点、Kibana等类型节点的节点规格和磁盘缩容。

数据节点缩容

  1. 在阿里云Elasticsearch控制台首页选择要进行数据节点缩容的ES实例,单击实例ID。
  2. 基本信息标签页,单击集群数据节点缩容

  3. 缩容配置页面,选择对应节点类型,并在节点列表中单击选择需要缩容的数据节点。

    说明 为保证数据的安全,进行缩容的数据节点中不应该存在数据,如果所选数据节点中有数据,可以通过单击 数据迁移辅助工具进行数据迁移。迁移后所选节点上不再有任何索引数据,新的索引数据也不会被写入该节点。

    您可以通过系统建议和自定义两种方式进行集群数据节点迁移:
    • 系统建议
      通过系统建议自动选择需要缩容的数据节点,勾选同意数据迁移协议并确认。

    • 自定义
      您也可以通过 自定义标签项,手动选择需要缩容的数据节点,勾选同意数据迁移协议并确认。

进度查看

您可以在右上角的任务中心查看缩容或者数据迁移进度。



迁移回滚

在数据迁移过程中,可以根据需要选择停止迁移任务。



迁移失败处理

数据迁移是一个周期很长的过程,在此期间集群状态和数据的变更可能会导致迁移失败,具体可在 任务中心中查看。当数据迁移失败或者迁移完成后需进行回滚,可以进行如下操作:
  1. 获取迁移的IP列表

    可以在任务中心中查找,或者直接通过使用以下ES API命令查找:

    // 获取集群配置信息ES API命令
    GET _cluster/settings
    
    // 返回类似以下结果
    {
      "transient": {
        "cluster": {
          "routing": {
            "allocation": {
              "exclude": {
                "_ip": "192.168.***.***,192.168.***.***,192.168.***.***"
              }
            }
          }
        }
      }
    }
    						
  2. 回滚迁移节点
    使用类似以下命令进行迁移节点回滚:
    // 回滚部分节点ES API命令,配置中去掉需要回滚的节点,但要保留不回滚的节点。
    PUT _cluster/settings
    {
      "transient": {
        "cluster": {
          "routing": {
            "allocation": {
              "exclude": {
                "_ip": "192.168.***.***,192.168.***.***"
              }
            }
          }
        }
      }
    }
    
    // 回滚全部节点
    PUT _cluster/settings
    {
      "transient": {
        "cluster": {
          "routing": {
            "allocation": {
              "exclude": {
                "_ip": null
              }
            }
          }
        }
      }
    }
    							
  3. 校验

    可以通过GET _cluster/settings进行IP地址的二次确认,同时也可以通过观察相应节点是否被重新分配shard来判断回滚完成情况。

    数据迁移或回滚时均可以通过ES API GET _cat/shards?v进行任务的观察。

异常说明

常见异常及解决方案
数据迁移或者缩容时,常见异常提示如下:
  • 该操作会导致当前集群资源(disk/cpu/mem)不足或shard分配异常。

    原因与解决方案:集群在迁移或者缩容后,磁盘、内存、CPU等资源不足,不足以承担当前系统数据或者负载。使用GET _cat/indices?v查看集群中索引的副本数是否超出缩容后的节点数,检查磁盘等资源是否可以在安全阈值内承担当前的数据量和请求量。

  • 集群当前状态异常或有未完成任务,请稍后再试。

    原因与解决方案:使用GET _cluster/health查看集群健康状况,或者在智能运维中查看集群异常原因。

  • 集群节点有数据,请先执行迁移。
  • 保留节点数需大于2且大于当前节点数一半。

    原因与解决方案:为保证集群的可靠性,保留的节点数必须大于2;为保证集群的稳定性,每次迁移或者缩容节点数不得超过当前数据节点数的一半。

  • 当前ES集群配置不支持该操作,请检查ES配置。

    原因与解决方案:使用GET _cluster/settings查看集群配置,查看是否存在不允许数据分配的配置。

auto_expand_replicas
部分用户使用了xpack提供的权限管理功能,在早期版本中,该功能对应的.security或者.security-6索引默认会使用 "index.auto_expand_replicas" : "0-all",该配置会使得数据迁移或者节点缩容失败。当您使用 auto_expand_replicas索引时,建议参照类似以下方式修改:
// 查看索引配置
GET .security/_settings

// 返回结果
{
  ".security-6" : {
    "settings" : {
      "index" : {
        "number_of_shards" : "1",
        "auto_expand_replicas" : "0-all",
        "provided_name" : ".security-6",
        "format" : "6",
        "creation_date" : "1555142250367",
        "priority" : "1000",
        "number_of_replicas" : "9",
        "uuid" : "9t2hotc7S5OpPuKEIJ****",
        "version" : {
          "created" : "6070099"
        }
      }
    }
  }
}

// 修改配置(二选一)
PUT .security/_settings
{
  "index" : {
    "auto_expand_replicas" : "0-1"
  }
}

PUT .security/_settings
{
  "index" : {
    "auto_expand_replicas" : "false",
    "number_of_replicas" : "1"
  }
}

// 副本个数可以根据实际需要选择,但要保证至少有1个,且不大于可用数据节点数。