首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用cluster.routing.allocation移动碎片

无法使用cluster.routing.allocation移动碎片
EN

Stack Overflow用户
提问于 2018-09-23 15:05:39
回答 1查看 806关注 0票数 1

我有一个ElasticSearch集群,在两个数据节点(es 0&es 1)上有几个索引,并且希望在退役之前将节点es 1中的所有碎片移出。

一次移动碎片1很好。下面的命令需要几秒钟的时间才能移动碎片。

代码语言:javascript
复制
POST /_cluster/reroute
{
    "commands": [
        {
            "move": {
                "index" : "index_operations_log",
                "shard" : 0,
                "from_node" : "es-data-1",
                "to_node" : "es-data-0"
            }
        }
    ]
}

但是,如果我尝试进行集群级的碎片分配过滤,它不会影响.例如,以下内容对碎片状态没有明显影响:

代码语言:javascript
复制
PUT /_cluster/settings
{
    "transient" : {
        "cluster.routing.rebalance.enable": "none"
    }
}

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

即使它回来了

代码语言:javascript
复制
{
    "acknowledged": true,
    "persistent": {},
    "transient": {
        "cluster": {
            "routing": {
                "allocation": {
                    "exclude": {
                        "_name": "es-data-1"
                    }
                }
            }
        }
    }
}

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-23 16:33:22

弄明白了。我跑了

GET /_cluster/settings

并且看到我从早些时候就设置了一些与这些新设置冲突的cluster.routing.allocation设置。我通过将它们的值设置为"“来清除冲突的规则,碎片开始移动。

一般来说,

代码语言:javascript
复制
PUT /_cluster/settings
{
    "transient" : {
        "cluster.routing.allocation.require": "..."
    }
}

call不报告错误,所以我找到了解决上述问题的唯一方法--如果碎片没有按预期移动,尝试使用POST /_cluster/reroute一次移动碎片1。这报告了详细的错误。然后,如果您能够使用POST /_cluster/reroute移动单个碎片,但是集群级或索引级碎片移动仍然不起作用,则使用GET /_cluster/settingsGET /*/settings

若要检查其他冲突的现有路由分配规则,请执行以下操作。如果它们存在,则可以通过使用值= "“执行PUT /_cluster/settings来重置它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52467394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档