标签归档:elasticsearch

es迁移分片

在导入大量数据时,不使用数据备份并仅使用一个节点,速度会较之前提升2倍左右,导入速度提升明显。

第一步

设置cluster.routing.allocation.disable_allocation的值,通过reroute api对索引分片进行手动分配。

curl -H "Content-Type:application/json" -XPUT 192.168.56.225:9200/_cluster/settings -d'{
    "transient": {
        "cluster.routing.allocation.enable": "none"
    }
}'

第二部

手动将116上的主分片迁移至225节点(这里迁移的是索引test的第0个分片。可通过修改shard后面的至指定分片序号)

curl -H "Content-Type:application/json" -XPOST '192.168.56.225:9200/_cluster/reroute' -d  '{
    "commands" : [
        {
            "move" : {
                "index" : "test", "shard" : 0,
                "from_node" : "192.168.56.116", "to_node" : "192.168.56.225"
            }
        }
    ]
}'

第三部

可通过 GET /_cat/shards 来查看索引的分片部署情况,当所有主分片都成功迁移至225节点时,停止116节点的es服务,把cluster.routing.allocation.disable_allocation的值改为默认值。

curl -H "Content-Type:application/json" -XPUT 192.168.56.225:9200/_cluster/settings -d'{
    "transient": {
        "cluster.routing.allocation.enable": "all"
    }
}'

 

 

 

logstash持久队列

我们可以使用 Logstash 的持久化队列技术尽量保证数据可靠传输至 output;

适用场景:传输可靠性要求稍低的场景下(和 Kafka 类比),替换架构中的 Kafka 或者加固 Logstash 本身的可靠性,因为即使 queue.checkpoint.writes:1,也有可能因为磁盘故障(检查点文件 和 queue 文件同时损坏)丢至多 1 条数据,核心的问题是在于没有多副本和选举相关的实现;

Deliver 策略:at-least-once;

解决elasticsearch集群Unassigned Shards 无法reroute的问题

1.背景&问题描述

由于系统宕机,导致大量索引出现了Unassigned 状态。在上一篇文章中,我们通过reroute API进行了操作,对主分片缺失的索引,经过上述操作之后,分配了主分片。但是在接下来的操作中,对于副本分片,reroute出错!
如下是索引 alarm-2017.08.12,第0个分片的副本没有分配:

继续阅读