Elasticsearch:如何使用集群级别的分片分配过滤(不包括节点)安全地停用节点

停用Elasticsearch节点时,应使用集群级分片分配过滤以防止数据丢失。通过PUT请求设置_cluster/settings,可以排除特定IP或匹配条件的节点,如名称、IP地址等。在确保分片已重新分配后,节点可安全停用。此外,还可以使用通配符排除多个节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当你想停用 Elasticsearch 中的节点时,通常的过程不是直接销毁节点。 如果你这样做,那么你就有数据丢失的风险,这不是你想要对应该是可靠的数据库做的事情。

这样做的问题是,节点很可能会通过 Elasticsearch 处理的恰当命名的分片分配分配给它们的分片。

Elasticsearch 中的 master 负责分片分配以及何时在节点之间移动分片以重新平衡集群。

那么随着这一切的进行,如何才能停用 Elasticsearch 节点呢? 是不是太冒险了?

幸运的是,有一种方法,叫做集群级分片分配过滤。

通过集群级别的分片分配过滤器,你可以控制 Elasticsearch 从任何索引为整个集群分配分片的位置。

你可以通过 Cluster API 设置这些过滤器; 具体来说,你可以对 _cluster/settings 端点执行 PUT 请求。

假设你要停用 IP 地址为 10.0.0.1 的节点。

为此,你将使用以下命令在集群上执行 PUT 请求:

PUT _cluster/settings
{
 “persistent” : {
 “cluster.routing.allocation.exclude._ip” : “10.0.0.1”
 }
}

然后,Elasticsearch 将知道移动与此匹配的节点分片。 你应该看到分片将变为 0。

当它们确实变为 0 时,就可以安全地停用该节点。

不过,按 IP 地址排除并不是唯一的过滤方式。 事实上,有许多属性可以用来排除。

这是一个列表:

  • _name:可以通过节点名匹配节点
  • _host_ip:可以通过主机IP地址匹配节点(IP与主机名相关联)
  • _publish_ip:可以通过发布 IP 地址匹配节点
  • _ip:你可以匹配 _host_ip 或 _publish_ip
  • _host:可以通过主机名匹配节点
  • _id:可以通过节点 id 匹配节点
  • _tier:可以通过节点的数据层角色匹配节点

你可以做的另一件很酷的事情是在您的过滤器中使用通配符来进行集群级别的分片分配。

例如,假设你想排除所有匹配前缀 myfirstdatabase 的 Elasticsearch 节点。

你可以这样做:

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._name": "myfirstdatabase*"
  }
}

因此,名为 myfirstdatabase-1 的节点将被排除在分片分配之外,myfirstdatabase-2 也是如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值