三十、elasticsearch集群

目录

一、集群的概念

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.rhkb.cn/news/205517.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git stash save untracked not staged

git stash save untracked not staged 如图 解决方案: git stash save "tag标记信息" --include-untracked或者: git stash save -u "tag标记信息" git stash clear清空本地暂存代码_zhangphil的博客-CSDN博客文章浏览阅读486次。…

如何用CHAT写“科技探索者”视频号运营方案

问CHAT:生成一篇“科技探索者”视频号运营方案,要求内容: (1)视频号的定位、面向的人群、主要发布哪方面的内容 (2)视频号的内容设计(用什么样的方式来体现、最好有内容创意&#xf…

YOLOv8改进 | 2023 | DWRSeg扩张式残差助力小目标检测 (附修改后的C2f+Bottleneck)

论文地址:官方论文地址 代码地址:该代码目前还未开源,我根据论文内容进行了复现内容在文章末尾。 一、本文介绍 本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv8中的C2f和Bottleneck模块,主要针对的是小目标检测&#xff0c…

基于社区电商的Redis缓存架构-缓存数据库双写、高并发场景下优化

基于社区电商的Redis缓存架构 首先来讲一下 Feed 流的含义: Feed 流指的是当我们进入 APP 之后,APP 要做一个 Feed 行为,即主动的在 APP 内提供各种各样的内容给我们 在电商 APP 首页,不停在首页向下拉,那么每次拉的…

在虚拟机搭建nignx,和使用本地访问nginx的情况

下载nginx yum install nginx 查看nginx是否安装成功。 nginx -v nginx的配置文件的目录和资源的目录。 先到nginx.conf的目录下,在 /etc/nginx/nginx.conf,编辑它。 vi /etc/nginx/nginx.conf 可以看到默认的html的目录。在 /usr/share/nginx/html 下面…

牛客网刷题笔记四 链表节点k个一组翻转

NC50 链表中的节点每k个一组翻转 题目: 思路: 这种题目比较习惯现在草稿本涂涂画画链表处理过程。整体思路是赋值新的链表,用游离指针遍历原始链表进行翻转操作,当游离个数等于k时,就将翻转后的链表接到新的链表后&am…

mybatis参数输入 #{}和${}

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUES("tom",200.33); INSERT INTO…

Linux使用宝塔面板+Discuz+cpolar内网穿透工具搭建可公网访问论坛

Linux宝塔面板搭建Discuz论坛, 并内网穿透实现公网访问 文章目录 Linux宝塔面板搭建Discuz论坛, 并内网穿透实现公网访问前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Di…

智慧城市内涝积水监测仪功能,提升城市预防功能

内涝积水监测仪不仅改变了人们应对城市内涝的老办法,还让智慧城市往前迈了一大步。这个监测仪是怎么做到的呢?就是靠它精准的数据监测和预警,让城市管理有了更科学高效的解决妙招。它就像有了个聪明又负责任的助手,让城市管理更加…

SAP 调取http的x-www-form-urlencoded形式的接口

一、了解下x-www-form-urlencoded形式对于SAP来说有啥区别 简单来说, 1.raw格式就是标准的json格式:{“Name”:“John Smith”,“Age”: 23} 2.x-www格式是要转化一下的:NameJohnSmith&Age23 字段与字段相互连接要用 & 符…

记录一次YAMLException异常

记录一次YAMLException异常 ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 报错以及B…

408—电子笔记分享

一、笔记下载 链接:https://pan.baidu.com/s/1bFz8IX6EkFMWTfY9ozvVpg?pwddeng 提取码:deng b站视频:408-计算机网络-笔记分享_哔哩哔哩_bilibili 包含了408四门科目(数据结构、操作系统、计算机组成原理、计算机网络&#xff09…

基于SSM+Vue的社区共享食堂管理系统

基于SSM的社区共享食堂管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringMyBatisSpringMVC工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 菜品详情 管理员界面 摘要 社区共享食堂管理系统是一种基于SSM&#xf…

Linux常用命令----touch命令

文章目录 Linux操作系统中,touch 命令是一个常用且强大的工具,主要用于创建空文件或设置文件的时间戳。本文将详细介绍 touch 命令的各种参数及其用法,并通过实例演示来加深理解。 1. touch命令基础 touch 命令的基本语法格式为&#xff1a…

什么是海外私人IP代理?是纯净独享的代理吗?

相信许多互联网工作者都遇到过IP禁令,比如网络抓取项目,使用共享代理服务器向网站发出第一个请求,但却您收到了禁令,这大部分是由于你的共享IP经过多人使用被禁用所致。 那么到底什么是私人代理呢?它们是否适合您的情…

沈阳师范大学期末考试复习pta循环数组函数指针经典编程题汇总+代码分析

前言:临近期末,接下来给大家分享一些经典的编程题,方便大家复习。不一定难,但都是入门的好题,尽可能的吃透彻。因为据说期末考试的题很多来自pta上面的原题。 对于一些语言我是用c来写的,不妨碍理解&#…

【代码】考虑区域多能源系统集群协同优化的联合需求侧响应模型(完美复现)

程序名称:考虑区域多能源系统集群协同优化的联合需求侧响应模型 实现平台:matlab-yalmip-cplex/gurobi 代码简介:风电、光伏发电等波动电源接入比例不断提高,使得区域多能源系统中能量转化和协调能力减弱。基于此,该…

RabbitMQ消息模型之发布订阅Publish-Subscribe

发布订阅模型 Publish/Subscribe 发布订阅模型也称为广播模型,交换机类型需要指定为Fanout,正如从名称中猜到的那样,它是将接收到的所有消息广播到它知道的所有队列中。每个消费者都监听自己的队列,所以同一个消息,会…

GEE 23:基于GEE实现物种分布模型之随机森林法

基于GEE实现物种分布模型之随机森林法 1.物种分布数据2.研究区绘制3.预测因子选择 1.物种分布数据 根据研究目的和需要导入物种数据: // Load presence data var Data ee.FeatureCollection("users/************736/Distribution"); print(Original da…

c语言十进制转二进制

以下是一个将十进制数转换为二进制数的C语言代码示例&#xff1a; #include <stdio.h>void decimal_to_binary(int decimal) { int binary[32]; int i 0; while (decimal > 0) { binary[i] decimal % 2; decimal / 2; i; } pr…