您的位置:首页 > 其它

elasticsearch服务节点重启时,是否存在流量漂移,如何优化?

2016-06-21 10:43 417 查看
(1)节点离开

在elasticsearch集群中,假设NodeA因为种种原因退出集群,在NodeA上的Shard分片情况(ShardA是主分片,ShardB是某一分片副本)

在存活节点上找到ShardA的副本,将该副本升格为主分片

由于ShardB这一分片副本丢失,所以会重新创建相应的分片副本

在存活的节点中对于分片进行再平衡

这样做的目的是保证每个分片都有足够的副本,可以避免数据丢失。需要注意的是,步骤二和步骤三牵涉到大量的网络I/O操作。

(2)节点返回加入集群

如果离开的节点重新加入集群,elasticsearch为了对数据分片(shard)进行再平衡,会为重新加入的NodeA再次分配数据分片(Shard), 这会再次导致大量的网络I/O操作。

(3)延迟副本的重新分配

如果NodeA在离开前上面存在副本ShardB,重新加入之后还是有副本ShardB,看起来一样,但其实中间已经进行了大量的网络I/O,那么有没有办法延迟副本的重新分配呢,这样会冒丢失数据的可能(如果在NodeA重新加入之前,其它节点也挂了), 但是可以节省相应的网络开销。

延迟副本分配可以通过设置参数 index.unassigned.node_left.delayed_timeout 来实现,该参数动态可调,默认值是1分钟(1m)

PUT /_all/_settings
{
"settings": {
"index.unassigned.node_left.delayed_timeout": "5m"
}
}


上述脚本将副本重新分配延迟到5分钟之后。

官网链接:https://www.elastic.co/guide/en/elasticsearch/reference/2.3/delayed-allocation.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  elasticsearch