更新时间:2025-06-17 GMT+08:00
替换Elasticsearch集群指定节点
当Elasticsearch集群中的节点发生故障时,可以执行“替换指定节点”任务修复故障节点。
替换指定节点的变更流程:
- 将待替换节点的数据迁移到其他可用节点。
- 按照原节点的ID、IP地址、规格、AZ等信息重建节点。
- 将节点重新加入集群,系统自动触发分片重平衡机制,逐步将部分数据分片迁移至该节点。
由于会迁移数据,因此整个变更过程不会中断业务。
前提条件
- 集群处于“可用”状态,且无正在进行的任务。
- 变更前,建议备份所有关键数据,以免造成数据丢失。
约束限制
- 一次只能选择一个节点进行替换,节点替换过程会按照原节点的ID、IP地址、规格、AZ等信息重建节点。
- 节点替换过程中不会保留手动操作。例如被替换的节点手动加过回程路由,那么节点替换完成后,需要重新添加回程路由。
- 当替换的是数据节点或冷数据节点时,需要确认集群或节点是否满足以下条件。
- 替换数据节点或冷数据节点的过程中,会先将被替换节点的数据迁移到其他数据节点,因此数据节点数和冷数据节点数之和要大于索引副本数的最大值加1,即“数据节点数 + 冷数据节点数 > 索引副本数的最大值 + 1”。
- 版本号在7.6.2以前的Elasticsearch集群,不能有close的索引,否则不支持替换数据节点或冷数据节点。
- 被替换的数据节点或冷数据节点所在的AZ必须满足被替换的同类型节点数大于或等于2。
- 当集群无Master节点时,数据节点数和冷数据节点数之和要大于或等于3,即“数据节点数 + 冷数据节点数 ≥ 3”。
- 当替换的是故障节点时,不管什么节点类型都不受以上约束。因为故障节点不包含在“_cat/nodes”中。
变更影响
在替换指定节点前,您需要了解以下关键影响和操作建议,以便合理规划变更,最小化业务影响。
- 性能影响
替换指定节点不会中断业务,但是数据迁移会消耗IO性能,且替换过程中单节点下线可能影响集群性能。
建议在业务低峰期提高数据迁移速率以缩短任务耗时,并在业务高峰期前降低迁移速率以减轻对集群性能的影响。数据迁移速率由“indices.recovery.max_bytes_per_sec”参数决定,该参数值默认是“CPU核数 x 32MB”(如4核CPU默认128MB)。该参数取值范围为40MB至1000MB,可根据业务需求调整。PUT /_cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "1000MB" } }
- 请求处理影响
节点替换过程中,发送到该节点的请求可能会失败。为了降低影响可以采用如下措施:
- 通过终端节点服务或独享型负载均衡器访问集群,确保请求自动路由到可用节点。
- 在客户端实现指数退避重试机制(建议配置3次重试)。
- 在业务低峰期进行规格变更。
- 变更过程特性
替换指定节点任务一旦启动就无法中止,直到任务成功或失败才会结束。任务失败通常只影响单个节点,在有副本的情况下业务不受影响,但需要及时修复失败节点。
替换指定节点时长
替换指定节点的时长估算公式如下:
变更时长(分钟)= 15(分钟)+ 数据迁移时长(分钟)
其中:15分钟为初始化等非数据迁移操作的基准耗时,是经验值。
数据迁移时长(分钟)= 数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)]
其中:
- 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。
- 以上公式为理想状态下的理论估算值,实际迁移速率受集群负载影响。
替换指定节点
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > Elasticsearch”,进入集群列表。
- 选择目标集群,单击操作列的“更多>形态变更”进入更改集群规格页面。
- 选择“替换指定节点”页签。
- 在替换指定节点页面,设置参数。
表1 替换指定节点 参数
说明
配置委托
替换节点时会重新绑定网卡,需要VPC的操作权限。选择IAM委托,授权当前账号访问和使用VPC的权限。
- 仅对接了IAM新平面时才显示该参数。
- 当首次配置委托时,可以单击“自动创建委托”新建委托“css_upgrade_agency”直接使用。
- 当已有自动创建的委托时,可以单击“委托一键授权”,自动删除委托中VPC Administrator系统角色和VPC FullAccess系统策略的权限,并自动新增如下自定义策略授权委托到最小化权限。
"vpc:subnets:get", "vpc:ports:*"
- 执行“自动创建委托”和“委托一键授权”的用户需要如下最小权限。
"iam:agencies:listAgencies", "iam:roles:listRoles", "iam:agencies:getAgency", "iam:agencies:createAgency", "iam:permissions:listRolesForAgency", "iam:permissions:grantRoleToAgency", "iam:permissions:listRolesForAgencyOnProject", "iam:permissions:revokeRoleFromAgency", "iam:roles:createRole"
- 使用委托的用户需要如下最小权限。
"iam:agencies:listAgencies", "iam:agencies:getAgency", "iam:permissions:listRolesForAgencyOnProject", "iam:permissions:listRolesForAgency"
节点类型
选择要替换的节点。展开要变更的节点类型,可以查看当前节点类型拥有的节点信息。
- 单击“提交申请”。在数据迁移弹窗中确认是否进行数据迁移(建议勾选“进行数据迁移”避免数据丢失),单击“确认”提交申请。
数据迁移过程中,系统会把待替换节点中的所有数据分片移动到剩余节点,待数据迁移完成后再进行节点替换操作。当待替换节点上的数据在剩余节点存在副本时,可跳过数据迁移,缩短集群变更时间,减少数据迁移带来的负载压力。
- 单击“返回集群列表”跳转到集群管理页面。集群的“任务状态”列中显示为“节点替换中”,表示集群正在替换节点。当集群状态变为“可用”,则表示节点替换成功。
父主题: 管理Elasticsearch集群