首页 文章

在elasticsearch中重新启动节点后快速恢复

提问于
浏览
8

请考虑elasticsearch.yml中的以下设置

gateway.recover_after_data_nodes: 3
gateway.recover_after_time: 5m
gateway.expected_data_nodes: 3

当前设置:说,我有3个数据节点 . 现在,如果我决定重新启动数据节点(由于设置的微小变化),恢复将在节点重启后立即按照expected_data_nodes设置启动 . 将有许多未分配的分片,它们将根据其包含的数据缓慢分配 .

为了避免这种情况,有没有办法将所有未分配的分片分配给特定节点?(在我的情况下是重新启动的节点),一旦完成,ES应该接管重新 balancer .

主要是我想避免群集状态的重时间从黄色到绿色 . (在我的情况下,它在几小时的范围内)

我可以为此目的使用群集重路由API吗?

或者是否有任何其他API将所有未分配的分片一次性传输到特定节点?

1 回答

  • 27

    For Elasticsearch version >= 1.0.0:

    curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "none"}}'
    /etc/init.d/elasticsearch restart
    curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "all"}}'
    

    For earlier version of ES:

    curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.disable_allocation": true}}'
    /etc/init.d/elasticsearch restart
    curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.disable_allocation": false}}'
    

    Shard保持未分配,直到“cluster.routing.allocation.disable_allocation”:false,然后在刚刚重新启动的服务器上进行分片恢复(从关闭之前的大小开始)它非常快 .

    参考:http://elasticsearch-users.115913.n3.nabble.com/quick-recovery-after-node-restart-in-elasticsearch-td4033876.html#a4034211

相关问题