我已经读到当一个新的索引请求被发送到es集群时。es将根据路由指定文档应该存储在哪个shard中。然后,承载该主分片的节点(又称协调节点)将向包含该分片副本的每个节点广播索引请求,并且如果主分片及其副本存储/索引了该文档,则该节点将向客户端响应文档已成功索引。
这是否意味着es支持高可用性(节点容错)读取请求而不是写入请求,或者这是默认行为,可以更改?
我已经读到当一个新的索引请求被发送到es集群时。es将根据路由指定文档应该存储在哪个shard中。然后,承载该主分片的节点(又称协调节点)将向包含该分片副本的每个节点广播索引请求,并且如果主分片及其副本存储/索引了该文档,则该节点将向客户端响应文档已成功索引。
这是否意味着es支持高可用性(节点容错)读取请求而不是写入请求,或者这是默认行为,可以更改?
1条答案
按热度按时间fnatzsnv1#
副本的主要用途是用于故障转移,如果持有主碎片的节点死亡,则副本将提升为主角色。此外,副本碎片可以服务于读取请求,从而提高搜索性能。
但是,对于写请求,如果集群中的某个节点(具有活动索引的主分片)的磁盘空间突然耗尽,则索引将受到影响,因为如果节点磁盘使用率达到配置的水印级别,则es会引发群集块异常,阻止对节点的任何写入。如果所有节点都关闭/无法访问,则索引将停止。但是,如果只有一个或某些节点关闭,则索引不应完全停止,因为如果保留原始主节点的节点处于脱机状态,则其他节点上的副本碎片将提升为主节点。理想的情况下,不言而喻,应该进行一些分析和努力,使es集群具有适当的大小,并进行适当的监视,以防止出现任何问题。