elasticsearch服务节点重启时,是否存在流量漂移,如何优化?,elasticsearch节点
(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
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。