三十、elasticsearch集群

news2024/11/18 3:19:12

目录

一、集群的概念

1、节点

2、索引

3、分片和副本

二、集群的架构

三、集群的部署方式

1、单主节点

2、多主节点

3、安全集群

四、搭建ES集群

1、elasticsearch中集群节点有不同的职责划分

2、elasticsearch中的每个节点角色都有自己不同的职责,因此建议集群部署时,每个节点都有独立的角色

3、ES集群的脑裂

(1)、这种情况可能会导致以下问题:

​编辑

(2)、解决ES集群的脑裂问题,可以考虑以下几个方面:

五、ES集群的分布式存储

1、数据分片

2、副本机制

3、算法

4、流程

(1)scatter phase:分散阶段

(2)gather phase:聚集阶段

六、ES集群的故障转移


Elasticsearch是一个开源的分布式搜索引擎,能够快速地进行全文检索、结构化搜索、分析等操作。为了增加其可靠性和容错性,Elasticsearch支持多节点之间的集群,并采用了Shard(分片)和Replica(副本)机制来分摊负载、提高可用性。

下面我们来详细讲解一下Elasticsearch集群的概念、架构和部署方式。

一、集群的概念

1、节点

Elasticsearch集群中的一个单独的实例就是一个节点。一个节点可以是物理上的服务器,也可以是虚拟机、容器等。每个节点都有一个唯一的名称,格式为“hostname-数字”,其中数字表示该节点在集群中的顺序。

2、索引

Elasticsearch中的索引就像关系型数据库中的数据库,是一个逻辑上的容器,用于存储数据。每个索引可以包含多个文档,每个文档可以包含多个字段。

3、分片和副本

为了支持水平扩展和提高容错性,Elasticsearch将每个索引分成多个分片,每个分片存储部分数据。每个分片都是一个Lucene实例,可以由不同的节点来存储和处理。在分片的基础上,Elasticsearch还支持将分片的副本分布在多个节点上,以便在主节点失效时能够快速切换到新节点上。

二、集群的架构

Elasticsearch的集群架构是基于Master-Node结构的,每个集群都有一个Master节点,负责管理整个集群的状态和分配分片。除了Master节点之外,其他节点都是Data节点,存储分片和响应请求。在集群中,同一节点既可以是Master节点,也可以是Data节点。

Master节点是集群的控制中心,负责以下任务:

  • 索引和删除文档时为分片选择目标节点
  • 分配未分配的分片
  • 分裂或合并分片
  • 管理节点加入和离开集群
  • 选举新的Master节点

Data节点是存储数据的节点,负责以下任务:

  • 索引和删除文档时为分片提供存储和查询服务
  • 处理搜索请求
  • 同步和复制分片数据

在集群中,每个节点都有一个唯一的节点名称,并且每个分片都有一个唯一的ID。分片的分配过程由Master节点控制,可以按照分片ID、索引名称、节点名称等多个因素进行选择和分配。

三、集群的部署方式

Elasticsearch可以在多个节点上部署,以形成一个集群。节点可以在同一台物理服务器上运行,也可以在不同的物理服务器上运行。在部署集群时,需要注意以下几点:

  1. 同一集群中的所有节点必须使用相同的集群名称,以便自动加入同一集群。

  2. 不同的节点要求具有相同的版本和配置,以便能够互相通信和进行分片的转移。

  3. 必须指定Master节点的名称和IP地址。

  4. 可以通过设置环境变量或者配置文件来修改节点的名称、IP地址、端口等信息。

  5. 对于Data节点,需要注意硬盘容量和性能,以便存储和查询大量数据。

在实际部署Elasticsearch集群时,可以采取以下几种方式:

1、单主节点

这种方式在小型集群中比较常见,只有一个Master节点和多个Data节点。优点是简单易用,缺点是Master节点可能成为单点故障,不能容忍Master节点的故障。

2、多主节点

这种方式比较适用于大型集群,可以将Master角色分散到多个节点中,从而避免单点故障。多个Master节点之间需要进行协调和同步,可以使用Zookeeper、Consul等分布式协调工具来实现。

3、安全集群

为了保证Elasticsearch集群的安全性,可以使用TLS/SSL协议来加密通信、使用X-Pack或其他认证/授权工具来控制访问权限。此外,还可以使用备份和恢复工具来备份和恢复集群数据,以防数据丢失。

四、搭建ES集群

三十一、安装elasticsearch-CSDN博客

1、elasticsearch中集群节点有不同的职责划分

2、elasticsearch中的每个节点角色都有自己不同的职责,因此建议集群部署时,每个节点都有独立的角色

3、ES集群的脑裂

脑裂(Split Brain)是分布式系统中的一种问题,特别是在使用主从(Master-Slave)或主(Master-Master)架构的系统中。在Elasticsearch(ES)集群中,脑裂是指集群中的节点之间失去了有效的通信,导致集群被分成两个或多个独立的子集,每个子集认为自己是整个集群的唯一部分。

(1)、这种情况可能会导致以下问题:
  1. 数据一致性问题: 不同的子集可能在相同的时间内对相同的数据进行不同的修改,导致数据不一致。

  2. 服务可用性问题: 由于脑裂导致集群分裂成多个部分,可能会导致某些部分无法提供服务,影响整体的可用性。

(2)、解决ES集群的脑裂问题,可以考虑以下几个方面:
  1. Quorum设置: 在ES中,通过设置适当的minimum_master_nodes参数来避免脑裂。这个参数定义了在一个分片中必须有多少个主节点才能维持集群的稳定性。设置这个参数可以防止脑裂的发生。

    discovery.zen.minimum_master_nodes: 2
  2. Zen Discovery配置: Zen Discovery是ES用于节点发现和管理的默认插件。通过配置Zen Discovery,可以优化节点之间的通信,减少脑裂的风险。

    discovery.zen.fd.ping_timeout: 3s discovery.zen.fd.ping_retries: 3

    这些参数可以调整节点之间的心跳检测策略,以更好地处理网络分区的情况。

  3. 网络配置: 确保集群节点之间的网络连接是可靠的。网络分区是导致脑裂的一个常见原因。优化网络设置,减少网络故障的可能性。

  4. 监控和警报: 设置监控和警报系统,及时检测到脑裂问题。可以使用Elasticsearch内置的监控工具,也可以使用第三方监控工具。

  5. 集群规模和架构设计: 考虑集群的规模和架构设计,确保它符合业务需求。有时候,调整节点数量和布局可以减少脑裂的风险。

五、ES集群的分布式存储

ES集群的分布式存储是通过以下两种机制来实现:

1、数据分片

  • ES将每个索引分成多个数据片段(shard),每个数据片段都是一个Lucene索引,包含索引中的一部分数据。
  • 数据片段可以分散存储在集群中的多台节点上,从而实现数据的分布式存储。

2、副本机制

  • ES通过副本机制来保证数据的可靠性和高可用性。
  • 每个数据片段都有一份主分片和零个或多个副本分片,副本分片是主分片的完全复制。
  • 主分片和副本分片分散存储在不同的节点上,确保了节点故障或不可用时数据的可靠性和高可用性。
  • 在ES集群中,当有新的文档被索引或更新时,ES会自动将文档分配到对应的数据片段中,并将数据片段存储到集群中的某个节点上。
  • ES还提供了路由机制来优化搜索效率,通过将搜索请求发送到具有相关数据片段的节点处理,从而降低搜索请求的网络传输量、提高搜索效率。

3、算法

4、流程

(1)scatter phase:分散阶段

coordinating node会把请求分发到每一个分片

(2)gather phase:聚集阶段

coordinating node汇总data node的搜索结果,并处理为最终结果集返回给用户

六、ES集群的故障转移

  • master宕机后,EligibleMaster选举为新的主节点。
  • master节点监控分片、节点状态,将故障节点上的分片转移到正常节点,确保数据安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1264502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中间件安全:JBoss 反序列化命令执行漏洞.(CVE-2017-12149)

中间件安全:JBoss 反序列化命令执行漏洞.(CVE-2017-12149) JBoss 反序列化漏洞,该漏洞位于 JBoss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中,其 doFilter 方法在没有进行任何安全检查和限制的情况下尝试…

基于ssm的编程技术类博客系统的设计与实现

基于SSM的编程技术类博客系统的设计与实现 摘要:博客是是互联网信息产生的主要来源之一。博客将信息采集与发布最大程度的简单化与快捷化,对个人能力提升也具有极大的帮助。一方面,极大地丰富了网络信息的资源,在时效性、连续流动…

美团2023年Q3财报:营收765亿元 即时零售订单量增至62亿笔

11月28日,美团(股票代码:3690.HK)发布2023年第三季度业绩,公司当季收入765亿元(人民币,下同),较去年同比增长22.1%。基于提质增效的经营策略,主体业务表现稳固健康,带动公司整体经调整净利润为57.3亿元。 …

Mysql更新Blob存储的Josn数据

Mysql更新blob存储的Josn数据 记录一次mysql操作blob格式存储的json字符串数据 1、检查版本 -- 版本5.7以上才可以能执行json操作 select version(); 2、创建测试数据 -- 创建测试表及测试数据 CREATE TABLE test_json_table AS SELECT UUID(), {"test1": {"…

1-2-3图片的排列

目录 1.展示效果 2.基础方法源码展示 ①div部分展示 ②css部分展示 3.接口方法源码展示 scoped使用 1.展示效果 2.基础方法源码展示 ①div部分展示 <view class"container"> <view class"cover"> <im…

【Java lambda表达式详解】

在Java编程中&#xff0c;我们经常会遇到需要实现一个接口或者继承一个类的情况。然而&#xff0c;有时候我们并不需要一个完整的类来实现这个接口&#xff0c;而是只需要一个简单的功能。这时候&#xff0c;我们就可以使用Java 8引入的Lambda表达式。本文将介绍Lambda表达式的…

Java中的Integer.bitCount浅析

文章目录 Java中的Integer.bitCount浅析问题思考Integer.bitCount解释拓展 Java中的Integer.bitCount浅析 原文链接 问题 有一个整数x,我们需要统计该整数的二进制表示中包含的1的个数。这个也被称为汉明重量&#xff08;Hamming weight&#xff09;。 例如&#xff0c;整数…

MySQL进阶知识:二

目录 视图 基本语法 视图的更新 视图的作用 存储过程 介绍 存储过程基本语法 存储过程的变量 系统变量 用户自定义变量 局部变量 存储过程的判断逻辑 存储过程的参数 存储过程中的流程控制 存储过程中的循环 while的基本语法 repeat的基本语法 loop的基本语法…

vue3(一)-基础入门之指令以及动态设置 class、style属性

一、导入vue.js 1.可以借助 script 标签直接通过 CDN 来使用 Vue <!-- <script src"https://unpkg.com/vue3/dist/vue.global.js"></script> -->2.也可以下载vue.global.js文件并在本地导入 <script src"./lib/vue.global.js">&…

this.$refs,salesRankRefjj.searchRankCall is not a function

在vue项目中&#xff0c;在父组件使用$refs获取不到子组件的方法&#xff0c;为什么&#xff1f; 我的报错如下&#xff1a; [Vue wamn]: Error in v-on handler: "TypeError: this.$refs,salesRankRefjj.searchRankCall is not a function found in 代码如下&#xff1a…

数据结构-交换排序(冒泡、快速)

冒泡排序 基本思想 先将第一个记录与第二个记录比较&#xff0c;将较大的记录放到第二个位置上&#xff0c;之后再将第二个记录与第三 个记录比较&#xff0c;将较大的记录放到第三个位置上&#xff0c;如此类推&#xff0c;知道比较完最后一个位置&#xff0c;此时注意到 …

SAP 调用OO类发送邮件测试(可发送表格和附件)

原文链接&#xff1a;https://blog.csdn.net/sapliumeng/article/details/134152739 在SAP实施中&#xff0c;邮件发送功能在很多项目都会用到&#xff0c;而且往往是把内表以Excel或者CSV的格式发送附件&#xff0c;最好是这个表格也可以显示在正文中&#xff0c;这样的话如果…

利用kibana 快照备份es数据库

环境 主机名ip地址组件ambari-hadoop1192.168.10.101ambari-hadoop2192.168.10.102kibanaambari-hadoop3192.168.10.103es 这里我们利用共享文件系统&#xff0c;存储快照&#xff0c;所以需要利用到nfs&#xff08;NFS&#xff08;Network File System&#xff09;是一种分布…

Dijkstra算法(贪心),Floyd-Warshall算法(动态规划), Bellman-Ford算法——用Python实现

图论中最短路径三剑客 前言一、Dijkstra算法&#xff08;贪心&#xff09;1.1 Dijkstra在生活中的应用举例1.2 设计思路1.3 算法应用实例1.3.1 以交通规划为例1.3.2 Dijkstra算法执行步骤1.3.3 python代码 1.4 时空复杂度 二、Floyd-Warshall算法&#xff08;动态规划&#xff…

八、Lua数组和迭代器

一、Lua数组 数组&#xff0c;就是相同数据类型的元素按一定顺序排列的集合&#xff0c;可以是一维数组和多维数组。 在 Lua 中&#xff0c;数组不是一种特定的数据类型&#xff0c;而是一种用来存储一组值的数据结构。 实际上&#xff0c;Lua 中并没有专门的数组类型&#xf…

Stable Diffusion绘画系列【2】:二次元风美女

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Maven——Maven使用基础

1、安装目录分析 1.1、环境变量MAVEN_HOME 环境变量指向Maven的安装目录&#xff0c;如下图所示&#xff1a; 下面看一下该目录的结构和内容&#xff1a; bin&#xff1a;该目录包含了mvn运行的脚本&#xff0c;这些脚本用来配置Java命令&#xff0c;准备好classpath和相关…

极限学习机

极限学习机&#xff08;ELM, Extreme Learning Machines&#xff09;是一种前馈神经网络&#xff0c;ELM 不需要基于梯度的反向传播来调整权重&#xff0c;而是通过 Moore-Penrose generalized inverse来设置权值。 标准的单隐藏层神经网络结构如下&#xff1a; 单隐藏层神经…

Fabric:搭建自定义网络

Hyperledger Fabric: V2.5.4 写在最前 从本篇博客开始&#xff0c;将陆续介绍使用Fabric搭建自定义网络及部署执行链码的过程。本篇主要介绍如何搭建网络。   由于前文在安装Fabric的时候&#xff0c;已经将目录fabric-samples/bin加入到了环境变量PATH中&#xff0c;所以正文…

Error:SSL peer shut down incorrectly

去年的一个android项目一直没有维护&#xff0c;注册的服务器地址修改了一下&#xff0c;重新编译&#xff0c;发现提示编程所依赖的插件需要更新&#xff0c;但死活更新不到。一直同步失败。。折腾了两天&#xff0c;提示ERROR: SSL peer shut down incorrectly错误。 在网上…