【elastic search】详解elastic search集群

目录

1.与集群有关的一些概念

2.集群搭建

3.集群搭建

4.kibana链接集群

5.选举流程

6.请求流程

7.master的作用


1.与集群有关的一些概念

数据分片:

数据分片(shard),单台服务器的存储容量是有限的,把一份数据切分成很多份,每一份存储到不同的节点上去,从而减少单台的压力。

数据副本:

数据副本(replica),在分布式集群中,如果不做备份,单点故障会硬气数据丢失,应对办法是将一份数据复制成很多份,一份就是一个副本,将副本存储到不同的节点上去。

es在创建索引的时候会指定每个索引的数据分片喝数据副本各自的数量:

put /yx
{"settings":{"number_of_shards": 3,//分片数"numbser_of_replicas": 1//副本数}
}

2.集群搭建

集群规划:

cluster name,集群名称,同一集群下,所有node的cluster name要相同。

Node Namecluster nameiphttptcp
node-01yx-elastic127.0.0.192019301
node-02yx-elastic127.0.0.192029302
node-03yx-elastic127.0.0.192039303

3.集群搭建

elasticsearch.yml:

三个节点的区别只在于node.name、数据路径、日志路径、http端口、tcp端口不同,其它都相同,此处以node-01为例。

#允许跨名访问
http.cors.enabled: true
#当设置允许跨域,默认为, 表示支持所有域名
http.cors.allow-origin: "*"
#允许所有节点访问
network.host: 0.0.0.0
#集群的名称,同一个集群下所有节点的集群名称应该一致
cluster.name: yx-elasticsearch
#当前节点名称 每个节点不一样
node.name: node-01
#数据的存放路径,每个节点不一样,不同es 服务器对应的data和log存储的路径不能一样
path.data: D:\es\elasticsearch-9301\data
#日志的存放路径
path.logs: D:\es\elasticsearch-9301\logs
#HTTP协议的对外端口,每个节点不一样,默认: 9200
http.port: 9201
#TCP协议对外端口 每个节点不一样,默认: 9300
transport.tcp.port: 9301
#三个节点相互发现,包含自己,使用TCP协议的端口号
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
#声明大于几个的投票主节点有效,设置为(nodes / 2) + 1
discovery.zen.minimum_master_nodes: 2
#是否为主节点
node.master: true

4.kibana链接集群

kibana.yml:

elasticsearch.hosts: ["http://localhost:9201"]

5.选举流程

  1. Zen Discovery 进程:ES的每个节点都有一个Zen Discovery 组件,这个组件会启动一个Zen Discovery 进程,这个组件是集成在ES中的代码逻辑,它用于记录全局节点的信息,管理集群中节点的发现、加入、离开,以及主节点选举。也就是说每个ES节点上都存着一份全局节点的信息。

  2. 启动阶段: 当一个节点(Node)启动时,它会加入集群,并尝试与其他节点建立连接。这个节点会发送一个 "join" 请求,广播给当前集群中的所有节点。这个请求包含了节点的信息,比如节点的ID、地址和端口等。

  3. 选举过程:

    首先是master节点的候选资格:

    在 Elasticsearch 集群中,有一些节点被标记为 "master-eligible" 节点,这表示它们有资格成为主节点。这些节点在配置文件中的 node.master 属性为 true。

    接下来是选举过程:

    一旦有足够的主节点候选节点发现彼此并形成了一个集群,它们就会开始主节点选举的过程。这个过程需要多数(大多数)的主节点候选节点在线并参与选举,这也被称为“法定人数”(Quorum)。“法定人数”是为了避免脑裂(split-brain)情况,Elasticsearch要求一个法定人数的同意才能选举出一个新的主节点。在旧版本中(如7.x及以前),这是通过discovery.zen.minimum_master_nodes设置来配置的,它通常设置为(master-eligible nodes / 2) + 1。在更高版本中,这个设置已经被内置的选举机制替代,不需要手动配置。选举过程中采用节点之间相互投票的机制,选举出主节点来, 节点在决定给哪个节点投票时会考虑多个因素,包括节点的健康状况、网络稳定性、集群状态的完整性,以及节点的历史记录等。

  4. 故障检测: Zen Discovery 使用故障检测机制来确定节点是否可用。节点之间相互发送 Ping 和 Pong 消息以检测对方的状态。如果一个节点在一定时间内没有响应,它被认为是不可用的。一旦出现master节点不可用的状态,集群将会开启重新选举。需要进行重新选举的时候要是发现集群存货人数已经不及法定人数,那么集群将会对外拒绝服务。

  5. 持久化: 主节点的信息会被持久化存储,以便在节点重启后,集群能够快速地恢复到之前的状态。

6.请求流程

写请求处理流程(如索引或更新文档):

  1. 接收请求: 写请求可以发送到集群中的任何节点。该节点成为请求的协调节点。

  2. 确定主分片: 协调节点根据文档的ID和索引元数据来决定哪个主分片负责处理该文档。这通常是通过哈希文档ID来完成的。

  3. 转发请求: 协调节点将请求转发到托管该主分片的节点。

  4. 处理和复制: 主分片节点处理写请求(如索引或更新文档),然后将相同的操作复制到所有对应的副本分片。

  5. 确认和响应: 一旦主分片和所有必要的副本分片成功处理了请求,协调节点向客户端发送成功响应。

读请求处理流程(如搜索或获取文档):

  1. 接收请求: 读请求可以发送到集群中的任何节点。该节点成为请求的协调节点。

  2. 确定分片位置: 对于文档获取请求,协调节点会计算出哪个主分片或副本分片拥有该文档。对于搜索请求,协调节点确定要查询的所有相关分片。

  3. 查询分片: 协调节点并行地向那些托管相关分片的节点发送请求。读请求可以由主分片或任何副本分片来处理。

  4. 汇总结果: 对于搜索请求,协调节点从所有查询的分片收集结果,合并成一个全局的搜索结果。

  5. 响应客户端: 最终的结果被发送回给客户端。

7.master的作用

在Elasticsearch中,每个节点都维护着关于集群状态的本地副本,这包括了分片的分配和位置信息。这意味着协调节点通常能够独立地确定请求应该路由到哪个节点上,而不需要每次都查询主节点。那主节点的作用是什么喃?

主节点(Master Node)在Elasticsearch集群中扮演着关键的管理和协调角色。以下是主节点在集群中的主要职责和功能:

  1. 集群管理: 主节点负责整个集群的管理任务。这包括集群的创建、配置、状态监控以及集群范围内的一些操作。

  2. 节点协调: 主节点负责协调集群中的所有节点。它会与其他节点通信,确保集群中的每个节点都处于活动状态,同时负责监控节点的健康状况。

  3. 分片分配: 主节点负责决定每个分片(Shard)应该分配到集群中的哪个节点上。它会在节点加入或离开集群时重新分配分片,以保持集群的均衡和高可用性。

  4. 主节点选举: 如果当前的主节点出现故障或不可用,集群中的其他节点会通过选举机制选择一个新的主节点。主节点选举确保了即使主节点出现问题,集群也能够继续正常运行。

  5. 索引创建和删除: 主节点负责处理索引的创建和删除请求。当索引被创建时,主节点会决定每个分片应该在哪个节点上创建。

  6. 集群状态维护: 主节点维护着关于整个集群的状态信息,包括节点的健康状况、集群设置、索引元数据等。这些信息对于集群的正常运行非常重要。

  7. 路由请求: 主节点在协助客户端请求路由时发挥作用。虽然数据的实际读写操作是在数据节点上进行的,但主节点负责确定数据分布和分片的位置,从而协助请求的有效路由。

  8. 集群级别的操作: 主节点可以执行一些集群级别的操作,例如创建和删除索引、更新集群的设置、执行全局搜索等。

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

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

相关文章

git提交记录全部删除

目录 问题描述 解决方案 结果 问题描述 新复制的项目具有特比多的提交记录我想给他清除,因为不清楚过多历史也就导致包特别大下载和提交等方面都不是很快 解决方案 查看代码clone网址; 打开远程仓库,选择要去除历史记代码分支&#xff08…

xtu oj 1475 Repeat One

题目描述 求由最小的一个N,N个数码1组成的数能被M整除? 比如M3时,111能被3整除。M2时,则不存在这样的N。 输入 第一行是一个整数K(K≤1,000),表示样例的个数。 以后每行一个整数M(1≤M≤1,000,000) 输出 每行输出一个样例的结…

opencv仿射变换

#include <opencv2/opencv.hpp> /* 功能&#xff1a;对一系列坐标点进行平移仿射变换 参数&#xff1a; srcPoints:输入点坐标 dstPoints:变换后的点坐标 x:x方向平移的距离 y:y方向平移的距离 */ void tranlatePoints(std::vector<cv::Point2f>& srcPoints, …

低代码助力制造业数智转型,激发创新力迎接工业 4.0

随着科技的不断进步&#xff0c;我们迈入了一个崭新的工业时代——工业4.0。这场工业革命不仅颠覆了制造业的传统形象&#xff0c;还为全球生产方式带来了前所未有的变革。 在这一过程中&#xff0c;制造业数字化转型逐渐成为主旋律&#xff0c;而低代码技术在这其中发挥着重要…

近红外光谱分析技术与基于深度学习的化学计量学方法

郁磊【副教授】&#xff1a;主要从事AI人工智能与大数据分析等相关研究&#xff0c;长期致力于人工智能与近红外生物医学工程等领域融合&#xff0c;主持并完成多项科研课题。著有《神经网络43个案例分析》等书籍。 // 讲座内容 1、近红外光谱基本理论、近红外光谱仪基本原理…

openssl3.2 - 官方demo学习 - digest - EVP_MD_stdin.c

文章目录 openssl3.2 - 官方demo学习 - digest - EVP_MD_stdin.c概述笔记END openssl3.2 - 官方demo学习 - digest - EVP_MD_stdin.c 概述 使用 SHA3-512 对stdin输入做摘要, 并输出摘要值. 笔记 /*! \file EVP_MD_stdin.c \note openssl3.2 - 官方demo学习 - digest - EVP…

python爬虫-代理ip理解

目录 1、为什么使用代理IP 2、代理IP 3、IP池 4、代理分类&#xff1a; 5、python中使用代理IP 6、如何找可以使用的代理IP 7、拿到IP后&#xff0c;测试IP的有效性 8、扩展理解正向代理和反向代理 1、为什么使用代理IP 就是为了防止ip被封禁&#xff0c;提高爬虫的效…

【Proteus仿真】【Arduino单片机】智能窗户设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用蜂鸣器模块、LCD1602显示模块、雨滴传感器、风速传感器、人体红外模块、ADC模块、按键模块、28BYJ48步进电机 模块、DS18B20温度传感器等。 …

2023年北邮渣硕的暑期秋招总结

背景 实验室一般是在研究生二年级的时候会放实习&#xff0c;在以后的日子就是自己完成毕业工作要求&#xff0c;基本上不再涉及实验室的活了&#xff0c;目前是一月份也是开始准备暑期实习的好时间。实验室每年这个时候都会有学长学姐组织暑期实习经验分享&#xff0c;本着不…

外国入境的免签国家以及中外互免(普通护照*、普通公务护照)

2024.1.11起&#xff0c;外籍人员在北京首都、北京大兴、上海浦东、杭州萧山、厦门高崎、广州白云、深圳宝安、成都天府、西安咸阳9个国际机场&#xff0c;推行24小时直接过境旅客免办边检手续。对于持24小时内国际联程机票&#xff0c;经上述任一机场过境前往第三国或地区的出…

Python dataframe取单元值

取dataframe某行某列所指的单元值 代码准备&#xff1a; 环境平台&#xff1a;Python 3.7.1 -IDLE Shell >>> import pandas as pd >>> df pd.DataFrame({Name: [Tom, Jim, Lily], Age: [20, 18, 22], Gender: [Male, Male, Female]})注&#xff1a;部分参…

高防dns服务器租用有哪些应用场景?-速盾cdn

高防DNS服务器租用可以应用于以下场景&#xff1a; 网站安全防护&#xff1a;高防DNS服务器可以提供强大的防御能力&#xff0c;抵御DDoS攻击、DNS劫持、泛洪攻击等威胁&#xff0c;保证网站的稳定运行和安全性。 网络游戏&#xff1a;网络游戏通常面临大量用户同时访问和数据…

C#中对浮点数NaN,PositiveInfinity,NegativeInfinity的特殊处理

NAN NAN 整体意思为Not a Number 不是一个数&#xff0c; NaN&#xff08;Not a Number&#xff0c;非数&#xff09;是计算机科学中数值数据类型的一类值&#xff0c;表示未定义或不可表示的值。常在浮点数运算中使用。首次引入NaN的是1985年的IEEE 754浮点数标准。 EEE 75…

论文阅读 Self-Supervised Burst Super-Resolution

这是一篇 ICCV 2023 的文章&#xff0c;主要介绍的是用自监督的方式进行多帧超分的学习 Abstract 这篇文章介绍了一种基于自监督的学习方式来进行多帧超分的任务&#xff0c;这种方法只需要原始的带噪的低分辨率的图。它不需要利用模拟退化的方法来构造数据&#xff0c;而且模…

API设计:从基础到最佳实践

1*vWvkkgG6uvgmJT8GkId98A.png 在这次深入探讨中&#xff0c;我们将深入了解API设计&#xff0c;从基础知识开始&#xff0c;逐步进阶到定义出色API的最佳实践。 作为开发者&#xff0c;你可能对许多这些概念很熟悉&#xff0c;但我将提供详细的解释&#xff0c;以加深你的理解…

Python DataFrame取行

文章目录 index区间取行列值区间条件取行&#xff08;1&#xff09;列值区间基本表达方式&#xff08;2&#xff09;多条件组合表达方式&#xff08;3&#xff09;函数条件表达方式 datafame接受的几个过滤函数&#xff08;1&#xff09;isin函数&#xff1a;(2) query函数&…

2024--Django平台开发-Django知识点(七)

频率超高的问题 Redis的问题虚拟环境mysqlcient和pymysql短信服务&#xff0c;一期用的是腾讯云短信 虚拟环境 可以用来创建虚拟环境的&#xff1a; virtualenv这个模块&#xff0c;简单易上手&#xff0c;推荐 小白不建议&#xff0c;conda&#xff0c;如果大家用这个&…

React项目实战--------极客园项目PC端

项目介绍&#xff1a;主要将学习到的项目内容进行总结&#xff08;有需要项目源码的可以私信我&#xff09; 关于我的项目的配置如下&#xff0c;请注意下载的每个版本不一样&#xff0c;写的api也不一样 一、项目介绍 1.资料 1&#xff09;短信接收&M端演示&#xff1a…

微信小程序 - 视图与逻辑 介绍

文章目录 视图与逻辑一、页面导航1、页面导航 - 声明式导航1.1 导航到tabBar页面1.2 导航到非tabBar页面1.3 后退导航 2、页面导航 - 编程式导航2.1 导航到tabBar页面2.2 导航到非tabBar页面2.3 后退导航 3、页面导航 - 导航传参3.1 声明式导航传参3.2 编程式导航传参3.3 在 on…

ZZULIOJ 1125: 上三角矩阵的判断

题目描述 编写程序&#xff0c;输入一个正整数n&#xff08;1<n<10&#xff09;和n阶方阵a中的元素&#xff0c;如果a是上三角矩阵&#xff0c;输出“YES”&#xff0c;否则&#xff0c;输出“NO”。 上三角矩阵即主对角线以下&#xff08;不包括主对角线&#xff09;的…