当前位置: 首页 > article >正文

Elasticsearch 分片驱逐(Shard Exclusion)方式简析:`_name`、`_ip`、`_host`

在日常运维 Elasticsearch 集群过程中,常常需要将某个节点上的分片迁移出去,例如下线节点、腾出资源或进行维护操作。Elasticsearch 提供了简单直观的 shard exclusion 参数来实现这一目的,主要通过以下三个配置项:

  • cluster.routing.allocation.exclude._name
  • cluster.routing.allocation.exclude._ip
  • cluster.routing.allocation.exclude._host

本文将简要说明这三种方式的用途与使用方法。


一、基础原理

Elasticsearch 支持通过集群设置控制 路由分配行为(routing allocation),其中 exclude 参数可以指定不允许分片分配到的节点。设置这些参数后,Elasticsearch 会主动将目标节点上的分片迁移至其他节点(前提是集群健康允许这么做)。


二、使用方式详解

1. cluster.routing.allocation.exclude._name

通过节点名称进行驱逐,适用于你明确知道节点名称的情况。

PUT _cluster/settings
{"transient": {"cluster.routing.allocation.exclude._name": "es-node-1"}
}

说明

  • 节点名称通常为 node.name,可通过 _cat/nodes 查看。
  • 所有分片将从 es-node-1 迁出,新的分片将不会再分配至该节点。

2. cluster.routing.allocation.exclude._ip

通过 IP 地址驱逐目标节点的分片,适用于跨机房、跨网段部署场景。

PUT _cluster/settings
{"transient": {"cluster.routing.allocation.exclude._ip": "192.168.1.10"}
}

说明

  • 可支持多个 IP(用逗号分隔):

    "cluster.routing.allocation.exclude._ip": "192.168.1.10,192.168.1.11"
    
  • 需要确保 IP 与节点的绑定一致性。


3. cluster.routing.allocation.exclude._host

通过主机名进行驱逐,适合在主机名规范统一、变化不大的情况下使用。

PUT _cluster/settings
{"transient": {"cluster.routing.allocation.exclude._host": "host-01"}
}

说明

  • 主机名可以在 _cat/nodes?h=host 中查看。
  • 同样支持多个主机名的逗号拼接。

三、清除驱逐设置

如果驱逐操作已经完成并需要恢复节点分配,可通过清空设置来取消限制:

PUT _cluster/settings
{"transient": {"cluster.routing.allocation.exclude._name": ""}
}

驱逐完成的验证方式:

  curl -k -X GET \-H 'content-Type:application/json' \-u "admin:$ES_SEC" \https://$ES_IP:9200/_cat/allocation?vshards disk.indices disk.used disk.avail disk.total disk.percent  node40       98.2mb     4.5gb    103.4gb    107.9gb            4   es-340       97.2mb     8.6gb     99.3gb    107.9gb            7   es-01       31.8kb     4.6gb    103.3gb    107.9gb            4   es-2 41       99.3mb     5.4gb    102.5gb    107.9gb            5   es-1---## 五、总结| 参数项     | 说明         | 推荐场景          |
| ------- | ---------- | ------------- |
| `_name` | 通过节点名称驱逐   | 节点命名规范良好、便于识别 |
| `_ip`   | 通过 IP 地址驱逐 | 跨网络规划,节点名称不统一 |
| `_host` | 通过主机名驱逐    | 主机名固定、命名清晰    |这三种方式均适用于集群维护、节点下线等操作,是 Elasticsearch 运维工作中的常用工具。合理使用它们可以大幅提升操作效率和集群稳定性。
http://www.lryc.cn/news/2386895.html

相关文章:

  • 【C++高级主题】异常处理(四):auto_ptr类
  • STM32CubeMX配置使用通用定时器产生PWM
  • WebSphere Application Server(WAS)8.5.5教程第十四讲:JPA
  • Linux系统调用深度剖析
  • 动态规划-918.环形子数组的最大和-力扣(LeetCode)
  • Docker 镜像标签(Tag)规范与要求
  • STM32:Modbus通信协议核心解析:关键通信技术
  • 线程封装与互斥
  • 鸿蒙OSUniApp 开发实时天气查询应用 —— 鸿蒙生态下的跨端实践#三方框架 #Uniapp
  • 第十一天 5G切片技术在车联网中的应用
  • Spring AI 系列之一个很棒的 Spring AI 功能——Advisors
  • Vue3 + TypeScript + el-input 实现人民币金额的输入和显示
  • 2.1 C++之条件语句
  • ZYNQ实战:可编程差分晶振Si570的配置与动态频率切换
  • Linux `ls` 命令深度解析与高阶应用指南
  • 【MPC控制 - 从ACC到自动驾驶】5. 融会贯通:MPC在ACC中的优势总结与知识体系构建
  • Day3 记忆内容:map set 高频操作
  • 初等数论--Garner‘s 算法
  • NV211NV212美光科技颗粒NV219NV220
  • SQL解析工具JSQLParser
  • Wave Terminal + Cpolar:SSH远程访问的跨平台实战+内网穿透配置全解析
  • html使用JS实现账号密码登录的简单案例
  • sorted() 函数和sort()函数的区别
  • Solr搜索:比传统数据库强在哪?
  • 【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)
  • 51c自动驾驶~合集55
  • 【前端基础】Promise 详解
  • 高性能管线式HTTP请求
  • c/c++的opencv膨胀
  • react native搭建项目