Elasticsearch 之 分片无法分配问题

一、重新启用分片分配

在新加入节点或者新创建一个索引时,会出现如下图所示情况,节点未自动分配到任何节点,一般原因是关闭了自动平衡分配原则。 在这里插入图片描述

  1. 重新启用分片自动分配到节点
    curl -XPUT 'localhost:9200/_cluster/settings' -d
    '{ "transient":
        { "cluster.routing.allocation.enable" : "all" 
        }
    }'
    
  2. 关闭分片自动分配
    curl -XPUT 'localhost:9200/_cluster/settings' -d
    '{ "transient":
        { "cluster.routing.allocation.enable" : "none" 
        }
    }'
    

二、分片数据不再存在于集群中

有时索引的主分片0是未分配的。它可能在没有任何副本的节点上创建(一种用于加速初始索引过程的技术),并且节点在可以复制数据之前离开集群。Master在全局集群状态文件中检测到shard,但是无法在集群中找到分配的数据。

另一种可能性是节点在重新启动时可能遇到问题。通常,当一个节点恢复到集群的连接时,它会将有关其磁盘分片的信息转发给主节点,然后主节点将这些分片从“未分配”转换为“已分配/已启动”。当由于某种原因(例如,节点的存储已被损坏)导致此进程失败时,分片可能保持未分配状态。

在这种情况下,你必须决定如何处理:尝试获得原始节点恢复并重新加入集群(并没有强制分配主分片),或者力分配使用的碎片重新路由API使用和重新索引丢失数据原始数据源或备份。

在这种情况下,你必须决定如何处理:

尝试让原始节点恢复并重新加入集群(并没有强制分配主分片)
使用分片重新路由API强制分配分片
从备份数据中使用原始数据源重建索引丢失的数据

  1. 使用Reroute API强制重分配分片请求如下
    curl -XPOST 'localhost:9200/_cluster/reroute' -d 
    '{ "commands" :
          [ { "allocate" : 
              { "index" : "constant-updates", "shard" : 0, "node": "<NODE_NAME>", "allow_primary": "true" }
          }]
    }'
    

三、磁盘低水平位

如果没有足够的磁盘空间的节点(它不会将分片分配给磁盘使用率超过85%的节点),主节点可能无法分配分片。一旦一个节点达到了这个磁盘使用级别,或者Elasticsearch称之为“低磁盘水位”,它就不会被分配更多的分片。

  1. 您可以通过查询cat API来检查集群中每个节点上的磁盘空间(并查看每个节点上存储了哪些分片):
    	curl -s 'localhost:9200/_cat/allocation?v'
    
    如果您的节点具有较大的磁盘容量,则85%的低水位置可能太低。您可以使用群集更新设置API进行更改,

cluster.routing.allocation.disk.watermark.low

cluster.routing.allocation.disk.watermark.high。

  1. 例如,这个堆栈溢出线程指出,如果您的节点具有5TB的磁盘容量,则可以安全地将低磁盘水位增加到90%
    curl -XPUT 'localhost:9200/_cluster/settings' -d
    '{
        "transient": {  
              "cluster.routing.allocation.disk.watermark.low": "90%"
        }
    }'
    
    如果希望配置更改在群集重新启动时保持不变,请将"transient"替换为"persistent",或更新配置文件中的这些值。您可以选择使用字节或百分比值来更新这些设置,但请务必记住Elasticsearch文档中的这一重要提示:百分比值是指已用磁盘空间,而字节值是指可用磁盘空间。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值