分布式搜索引擎ES--Elasticsearch集群

1.Elasticsearch集群的概念

分片机制:每个索引都可以被分片
索引my_doc只有一个主分片;索引shop有三个主分片;索引shop2有5个主分片;(参考前面案例)
每个主分片都包含索引的数据,由于目前是单机,所以副分片是没有的,集群健康值显示为黄色。
副分片是主分片的备份;同一个分片的主与副本是不会放在同一个服务器里的,因为一旦宕机,这个分片就没了;
Es集群搭建的准备工作:
使用虚拟机克隆功能,把单个es虚拟机克隆为三个,我们会搭建3节点的es集群。
在这里插入图片描述
如上图。当有三个服务器,首先对主分片分布服务器。副分片不能跟主分片在同一服务器

2.搭建Elasticsearch集群

具体的Elasticsearch的安装参考如下链接:
https://blog.csdn.net/TOMORROW6COME/article/details/140529958?spm=1001.2014.3001.5501
准备了3个服务器。(或者三个虚拟机)
克隆以后,先将es中的打他目录,一定要清空,这里面包含了原先的索引库数据。
命令:rm nodes/ -rf
在这里插入图片描述
配置集群
修改elasticsearch.yml这个配置文件如下:

# 配置集群名称,保证每个节点的名称相同,如此就能都处于一个集群之内了
cluster.name: nk-es-cluster# 每一个节点的名称,必须不一样
node.name: es-node1# http端口(使用默认即可)
http.port: 9200# 主节点,作用主要是用于来管理整个集群,负责创建或删除索引,管理其他非master节点(相当于企业老总)
node.master: true# 数据节点,用于对文档数据的增删改查
node.data: true# 集群列表
discovery.seed_hosts: ["192.168.1.184", "192.168.1.185", "192.168.1.186"]# 启动的时候使用一个master节点
cluster.initial_master_nodes: ["es-node1"]

最后可以通过如下命令查看配置文件的内容:

more elasticsearch.yml | grep ^[^#]

分别启动3台es
切换到esuser后在启动,访问集群各个节点,查看信息:

http://192.168.1.184:9200/
http://192.168.1.185:9200/
http://192.168.1.186:9200/

3.Elasticsearch集群分片测试

配置信息:
a:1/0; b:3/1; c:5/2:
集群分片测试:第一个分片不一定在master节点
在这里插入图片描述

4.Elasticsearch集群节点宕机测试

Node2宕机测试:
在这里插入图片描述
Node1:master主节点宕机测试:经过选举es-node3成为maser节点
在这里插入图片描述
宕机恢复后:
在这里插入图片描述
此时node3宕机:es-node2经过选举成为主节点
在这里插入图片描述
node3恢复后,node2任然为主节点。

5.Elasticsearch集群脑裂现象讨论

脑裂:发生网络中断或者服务器宕机,那么集群会有可能划成两个部分,各自有
自己的master节点来管理。
在这里插入图片描述
最小投票人数:1,即一台服务器就是主节点

脑裂解决方案
master主节点要经过多个master节点共同选举后才能成为新的主节点。就跟班级里选班长一样,并不是你1个人能决定的,需要班里半数以上的人决定。

解决实现原理:半数以上的节点同意选举,节点方可成为新的master。

discovery.zen.minimum_master_nodes=(N/2)+1

N为集群的中master节点的数量,也就是那些 node.master=true 设置的那些服务器节点总数。
ES 7.X
在最新版7.x中,minimum_master_node这个参数已经被移除了,这一块内容完全由es自身去管理,这样就避免了脑裂的问题,选举也会非常快。

6.Elasticsearch集群的文档读写原理

文档写原理:
客户端会根据情况选择一个节点去完成相应的对接工作(协调节点:coordinating node);
协调节点是可变的
用于接收用户的请求(controller),针对节点进行路由,然后hash计算,决定数据应该写到哪一个主分片里;(文档路由跟转发)
在这里插入图片描述
文档读原理:
在这里插入图片描述

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

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

相关文章

面试前端实习常问的关于【ES6新特性】的问题

ES6新特性 日常前端代码开发中,有哪些值得用 ES6 去改进的编程优化或者规范? 常用箭头函数来取代有this指向的函数常用 let 取代 var 命令常用数组/对象的结构赋值来命名变量(结构更清晰,语义更明确,可读性更好)在长字…

【ARM】MDK-ARM软件开发工具的最终用户许可协议获取

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 了解MDK-ARM系列产品内软件开发工具的最终用户许可协议的获取。 2、 问题场景 对于部分外企客户需要软件开发工具的最终用户许可协议作为产品资料,以便附录并说明。 3、软硬件环境 1)、软件…

mysql语法介绍

MySQL 语法主要基于 SQL(Structured Query Language)标准,用于管理和操作关系型数据库。以下是一些基本的 MySQL 语句: 1.创建数据库: CREATE DATABASE database_name; 1.选择数据库: USE database_name;…

极速下载!青苹果系统Win7旗舰版:稳定安全!

今天系统之家小编给大家带来了青苹果系统Win7旗舰版镜像,该版本系统离线制作而成,安全无病毒,还升级了防火墙功能,大家安装后时刻都能放心操作。同时,它是在保持原有的功能并适度优化,保留下来的功能轻松满…

算法 —— 暴力枚举

目录 循环枚举 P2241 统计方形(数据加强版) P2089 烤鸡 P1618 三连击(升级版) 子集枚举 P1036 [NOIP2002 普及组] 选数 P1157 组合的输出 排列枚举 P1706 全排列问题 P1088 [NOIP2004 普及组] 火星人 循环枚举 顾名思…

如何学习Presto:糙快猛的大数据之路(建立整体框架)

这个系列文章用"粗快猛大模型问答讲故事"的创新学习方法,让你轻松理解复杂知识!涵盖Hadoop、Spark、MySQL、Flink等大数据所有热门技术栈,每篇万字长文。时间紧?只看开头20%就能有收获!精彩内容太多&#xf…

重拾CSS,前端样式精读-函数(颜色,计算,图像和图形)

前言 本文收录于CSS系列文章中,欢迎阅读指正 在计算机编程中,函数有着重要的作用和意义,它可以实现封装,复用,模块化,参数等功能效果,在如何在CSS中写变量?一文带你了解前端样式利…

【网络安全学习】 SQL注入01:基础知识

💻 1. 什么是SQL注入 SQL注入是一种针对Web程序中数据库层的安全漏洞的攻击方式。它利用了程序对用户输入数据合法性的判断或过滤不严,允许攻击者在设计不良的程序中添加额外的SQL语句,从而执行计划外的命令或访问未授权的数据。攻击者可以通…

【MetaGPT系列】【MetaGPT完全实践宝典——多智能体实践】

目录 前言一、智能体1-1、Agent概述1-2、Agent与ChatGPT的区别 二、多智能体框架MetaGPT2-1、安装&配置2-2、使用已有的Agent(ProductManager)2-3、多智能体系统介绍2-4、多智能体案例分析2-4-1、构建智能体团队2-4-2、动作/行为 定义2-4-3、角色/智…

如何定位线上OOM

造成OOM的原因 1一次性申请太多对象。如:从数据库获取大量数据。 解决方法:更改申请对象的数量。如:做个分页。 2内存资源使用完未释放。如:太多线程建立数据库连接而未释放。 解决方法:使用线程池。 3本身资源不够…

Python + PyQt 搭建可视化页面(PyCharm)

Python PyQt 搭建可视化页面(PyCharm) 配置PyQt5环境 1.1 安装PyQt5和PyQt5-tools pip install PyQt5pip install PyQt5-tools1.2 QtDesigner和PyUIC环境的配置 配置QTDesigner,用来打开QT可视化开发工具 在PyCharm中依次打开&#xff1a…

Java面试八股之Spring-boot-starter-parent的作用是什么

Spring-boot-starter-parent的作用是什么 spring-boot-starter-parent 是Spring Boot项目中的一个特殊POM(Project Object Model),它主要的作用是提供一系列默认的配置和依赖管理,以便简化项目的构建过程。以下是spring-boot-sta…

NET8部署Kestrel服务HTTPS深入解读TLS协议之Certificate证书

Certificate证书 Certificate称为数字证书。数字证书是一种证明身份的电子凭证,它包含一个公钥和一些身份信息,用于验证数字签名和加密通信。数字证书在网络通信、电子签名、认证授权等场景中都有广泛应用。其特征如下: 由权威机构颁发&…

SpringBoot中使用监听器

1.定义一个事件 /*** 定义事件* author hrui* date 2024/7/25 12:46*/ public class CustomEvent extends ApplicationEvent {private String message;public CustomEvent(Object source, String message) {super(source);this.message message;}public String getMessage() …

支持4K高分辨率,PixArt-Sigma最新文生图落地经验

PixArt-Sigma是由华为诺亚方舟实验室、大连理工大学和香港大学的研究人员共同开发的一个先进的文本到图像(Text-to-Image,T2I)生成模型。 PixArt-Sigma是在PixArt-alpha的基础上进一步改进的模型,旨在生成高质量的4K分辨率图像。…

Mongodb文档和数组的通配符索引

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第97篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关…

老板电器发布首个烹饪AI模型,揭秘其如何引领厨电行业变革

数字发展日新月异,智慧产品迭代更新。当前,我们或许正身处一场连科学巨人也无法预见的深度变革之中。现代科技使得普通人无需深入学习数学或编程知识,也能借助手机或电脑,体验“苏格拉底式”的在线指导,或者与“乔布斯…

【LeetCode、牛客】链表分割、链表的回文结构、160.相交链表

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构 📚本系列文章为个人学…

面试经典 114. 二叉树展开为链表

最近工作越来越难找,裁员越来越懂了,焦虑的睡不着,怎么办呢,只能刷面试题,卷死你们 今天这个题目没刷过,我思考了半天才只能用暴力,后来苦思冥想才想出来简单的方法,废话不多说&…

【音视频】RTSP、RTMP与流式传输

文章目录 前言RTSP与RTMPRTSP(Real-Time Streaming Protocol)RTMP(Real-Time Messaging Protocol)主要差异 什么是流式传输?流式传输的特点流式传输与传统下载的区别 使用VLC播放RTSP监控 总结 前言 在现代网络环境中…