ES集群知识

news/2024/7/7 5:46:53 标签: elasticsearch, 集群

ES集群知识

核心概念

Cluster:集群,包含一个或多个 Elasticsearch 节点组成。

Node:节点,组成 Elasticsearch 集群的服务单元,同一个集群内节点的名字不能重复。通常在一个节点上分配一个或者多个分片。

Shards:分片,会将一个索引上的数据进行水平拆分,已提供水平扩展能力和分片维度的副本,拆分出来的每个数据库叫作一个分片。在创建索引时需要指定分片的数量,并且分片的数量一旦确定就不能更改。

分片后的索引带来了规模上(数据水平切分)和性能上(并行执行)的提升。每个分片都是 Luence 中的一个索引文件,每个分片必须有一个主分片和零到多个副本分片。

Replicas:备份或称为副本,是指对主分片的备份。主分片和备份分片都可以对外提供查询服务,写操作时先在主分片上完成,然后分发到备份上。

Recovery:数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

集群节点

Cluster:集群中包含多个节点,节点角色为:

Master: 主节点, node.master:true 配置的节点可以成为主节点。主节点负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作。

DataNode: 数据节点, node.data:true 默认是数据节点。数据节点负责数据的存储和相关具体操作,比如索引数据的创建、修改、删除、搜索、聚合。

Coordinate node: 协调节点,前面两个设置为false则节点仅仅担任协调节点。协调节点只负责接收请求、转发请求到其他节点、汇总各个节点返回数据等功能。

一个节点可以充当一个或多个角色, 默认是充当三个角色。

集群节点的配置:

A. 小规模集群,不需严格区分。

B. 中大规模集群(十个以上节点),应考虑单独的角色充当。特别并发查询量大,查询的合并量大,可以增加独立的协调节点。角色分开的好处是分工分开,不互影响。如不会因协调角色负载过高而影响数据节点的能力。

集群规模

ES JVM heap 最大可以设置32G。30G heap 大概能处理的数据量 10 T。如果内存很大如128G,可在一台机器上运行多个ES节点实例。

A、用于构建业务搜索功能模块,且多是垂直领域的搜索。数据量级几千万到数十亿级别。一般2-4台机器的规模。

B、用于大规模数据的实时OLAP(联机处理分析),经典的如ELK Stack,数据规模可能达到千亿或更多。几十到上百节点的规模。

脑裂问题

原本一个集群,被分成了两个集群,同时出现了两个“大脑”,这就是所谓的“脑裂”现象。 由于原本的一个集群变成了两个,都对外提供服务。 一段时间之后,两个集群之间的数据可能会变得不一致了。 当网络恢复时,就面临着谁当Leader,数据怎么合并,数据冲突怎么解决等问题。脑裂问题产生是由于集群中由于网络问题形成多个割据的网络产生多个主节点造成的。

解决ES脑裂需要设置最小的主节点数量:

discovery.zen.minimum_master_nodes: (有master资格节点数/2) + 1

常用解决方法:

  1. 设置专门的,奇数个的master
  2. 单播发现机制:discovery.zen.ping.multicast.enabled: false —— 关闭多播发现机制,默认是关闭的。

discovery.zen.ping.unicast.hosts: ["master1", "master2", "master3"] —— 配置单播发现的主节点ip地址,其他从节点要加入进来,就得去询问单播发现机制里面配置的主节点我要加入到集群里面了,主节点同意以后才能加入,然后主节点再通知集群中的其他节点有新节点加入。

  1. 配置选举发现数,及延长ping master的等待时长。

discovery.zen.ping_timeout: 30(默认值是3秒)——其他节点ping主节点多久时间没有响应就认为主节点不可用了。

discovery.zen.minimum_master_nodes: 2 —— 选举主节点时需要看到最少多少个具有master资格的活节点,才能进行选举。

分片数量的配置

索引的分片数指定后不可更高, 除非进行重做索引。

ElasticSearch推荐的最大JVM堆空间是30~32G, 所以把你的分片最大容量限制为30GB, 然后再对分片数量做合理估算. 例如, 你认为你的数据能达到200GB, 推荐你最多分配7到8个分片。

在开始阶段, 一个好的方案是根据你的节点数量按照1.5~3倍的原则来创建分片. 例如,如果你有3个节点,则推荐你创建的分片数最多不超过9(3x3)个。当性能下降时,增加节点,ES会平衡分片的放置。

对于基于日期的索引需求, 并且对索引数据的搜索场景非常少. 也许这些索引量将达到成百上千, 但每个索引的数据量只有1GB甚至更小. 对于这种类似场景, 建议只需要为索引分配1个分片。如日志管理就是一个日期的索引需求,日期索引会很多,但每个索引存放的日志数据量就很少。

分片副本数是可以随时调整的, 一般一个分片有1-2个副本即可保证高可用。

分片路由:路由算法:shard = hash(routing) % number_of_primary_shards


http://www.niftyadmin.cn/n/5166535.html

相关文章

电脑msvcp110.dll丢失怎么办,msvcp110.dll缺失的详细修复步骤

在现代科技发展的时代,电脑已经成为我们生活和工作中不可或缺的工具。然而,由于各种原因,电脑可能会出现一些问题,其中之一就是msvcp110.dll文件丢失。这个问题可能会导致一些应用程序无法正常运行,给我们的生活和工作…

文献管理软件Zotero之插件篇(3)

文章目录 0、前言1、插件获取方式1.1、[官网下载](https://www.zotero.org/support/plugins)1.2、[Zotero中文社区插件页下载](https://plugins.zotero-chinese.com/)1.3、[Github](https://github.com)或[Gitee](https://gitee.com)平台下载 2、常用插件2.1、Zotero Connector…

RDMA抓包

拉取容器: docker pull mellanox/tcpdump-rdma 启动容器 docker run -it -v /dev/infiniband:/dev/infiniband -v /tmp/traces:/tmp/traces --nethost --privileged mellanox/tcpdump-rdma 进入mellanox/tcpdump-rdma bash之后,运行以下命令。 3、开始捕…

ARMday2(环境创建+工程配置+创建文件+单步调试)

目录 一、汇编环境的创建 二、为工程配置链接脚本(map.lds) 三、为工程创建汇编文件 start.s 编程调试 接下来我们需要建立一个 start.s 汇编文件添加到我们的工程中去 四、对汇编代码进行单步调试(仿真) 五、汇编工程的编译 …

新版HI3559AV100开发注意事项

新版HI3559AV100开发注意事项 一、在Hi3559A上使用openCV VideoCapture开启.mp4影像档, isOpened一直得到false 在Hi3559A上已经cross compile ffmepg 4.1openCV 3.4.4 但使用openCV VideoCapture开启.mp4影像档, isOpened一直得到false 请问要如何知道是什么原因无法开启影像…

粤嵌实训医疗项目(小组开发)--day05

目录 一、医生功能模块 ------------前端实现------------ ------------后端接口------------ 功能一:分页查询医生基础信息(介绍MybatisPlus如何使用分页) 功能二:根据搜索栏名称查找对应医生(讲解自定义查询集&…

【python调用redis和redis内部调用】

一.python内部调用redis 1.导入redis import redis2连接redis #db为数据库 r redis.Redis(hostlocalhost, port6379, db0)新增redis数据需要有key和value值 3.新增value是字符串数据 value是字符串数据需要用set新增数据 ex为过期时间 r.set(key,value,ex秒数)4.获取value…

管理驾驶舱这么做,领导都点赞(附方案下载)

你是否知道你的企业是否充分利用了可用的数据资源? 著名的著名的质量管理专家,威廉爱德华德莱克(William Edwards Deming)曾说过:"数据不是权力,能够理解数据的能力才是真正的权力。" 企业在经营…