在生产环境运行Elasticsearch深度指南

在本文,我不是来告诉你 Elasticsearch 强大,快速并且几乎可以正常运行。

在本文,我也是来告诉你 Elasticsearch 可能是不透明的,让人困扰,并且似乎无缘无故地出问题。在这篇

在本文,我想分享我的经验和技巧,了解如何正确配置 Elasticsearch 并避免常见的陷阱。

我写文章目的也不是为了赢利,所以我会将全部内容放到这一篇文章中,而不是将它分解成一系列。你可以随意跳过不感兴趣的章节。

基础知识:集群,节点,索引和分片

如果你是 Elasticsearch(ES)新手,我想先解释一些基本概念。本节完全不涉及最佳实践,主要侧重于解释术语。大多数人可以直接跳过本节。

Elasticsearch 是用于运行 Apache Lucene(基于 Java 的搜索引擎)分布式管理框架。Lucene 是实际保存数据并进行索引和搜索的地方。ES 位于它之上,让你可以并行运行数千个 Lucene 实例。

ES 的最高级别单元是集群(cluster)。集群是 ES 节点 和索引的集合。

节点 (Node) 是 ES 的实例。它可以是单个服务器,也可以是服务器上运行的 一个 ES 进程。服务器和节点不同,一个 VM 或物理服务器可以包含许多 ES 进程,每个 ES 进程是一个节点。节点只可以加入一个集群。节点有不同类型(type),其中最值得关注的两个类型是数据节点(data node)主候选节点( Master-Eligible node)。一个节点可以同时具有多种类型。数据节点运行所有数据操作,即存储、索引和检索数据。主候选节点具有投票 master 的权限,用于管理集群和索引。

索引(Index)是对数据的高级抽象,索引本身不保存数据,它们只是实际存储数据的另一种抽象。对数据执行的任何操作(例如插入,删除,建立索引和搜索)都会对索引产生影响。索引可以完全属于一个集群,并且由分片( shard) 组成。

分片(Shard)是 Apache Lucene 的实例。一个分片可以容纳许多文档。分片是数据存储,索引和搜索的实际对象。分片只属于一个节点和索引。分片有两种类型:primary 和 replica,它们基本上是完全相同的,拥有相同的数据,并且搜索并行运行在所有分片。在拥有相同数据的所有分片中,其中一个属于 primary。这是唯一可以接受索引请求的分片。如果节点中的主分片挂了,副本将接管并成为主分片。然后,ES 将创建一个新的副本并复制数据。

总结一下,我们整理得到下图:

更深入了解 Elasticsearch

如果你想运行一个系统,相信你需要了解该系统。在本节中,我将解释 Elasticsearch 的各个部分,如果想在生产中进行管理,我相信你需要理解它。本节也不牵涉到具体建议,后文会介绍。本节目的只是为了介绍必要的背景。

Quorum 

理解 Elasticsearch 是一个(有缺陷的)选举体系非常重要。节点投票决定谁应该管理它们,即主节点。主节点运行大量集群管理进程,并且在许多事务方面拥有最终决策权。ES 选举是有缺陷的,是因为只有一小部分节点,即主候选(master-eligible)节点才具有投票权。主候选节点是通过以下配置启用:

node.master: true

在集群启动或主节点离开群集时,所有符合主选举条件的节点都会开始选举新的主节点。为此,你需要具有 2n + 1 个主候选

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值