分布式搜索引擎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.mzph.cn/diannao/51900.shtml

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

相关文章

安全开发第一篇

文章目录 参与RASP、IAST等安全防护工具的开发技术背景开发流程技术挑战工具和资源示例结论 以phpstudydvwa为列 实现 SQL 注入检测脚本 参与RASP、IAST等安全防护工具的开发 参与 RASP(Runtime Application Self-Protection)和 IAST(Intera…

为开源奉献一份自己的力量:Cesium没有热力图组件,我们自己封装!

大家好,我是日拱一卒的攻城师不浪,专注可视化、数字孪生、前端提效、nodejs、AI学习、GIS等学习沉淀,这是2024年输出的第27/100篇文章。 交流合作:brown_7778 前言 热力图,在很多可视化场景开发中会被经常提到&#x…

electron 主进程和渲染进程

最近在整理electron 相关的项目问题,对自己来说也是温故知新,也希望能对小伙伴们有所帮助,大家共同努力共同进步。加油!!!! 虽然最近一年前端大环境不好,但是大家还是要加油鸭&#…

网安零基础入门神书,全面介绍Web渗透核心攻击与防御方式!

Web安全是指Web服务程序的漏洞,通常涵盖Web漏洞、操作系统洞、数据库漏洞、中间件漏洞等。 “渗透测试”作为主动防御的一种关键手段,对评估网络系统安全防护及措施至关重要,因为只有发现问题才能及时终止并预防潜在的安全风险。 根据网络安…

【Qt开发】No matching signal for on_toolButton_clicked() 解决方案

【Qt开发】No matching signal for on_toolButton_clicked() 解决方案 文章目录 No matching signal for xxx 解决方案附录:C语言到C的入门知识点(主要适用于C语言精通到Qt的C开发入门)C语言与C的不同C中写C语言代码C语言到C的知识点Qt开发中…

Linux安装青龙面板并将本地服务映射至公网实现远程访问

文章目录 前言一、前期准备本教程环境为:Centos7,可以跑Docker的系统都可以使用。本教程使用Docker部署青龙,如何安装Docker详见: 二、安装青龙面板三、映射本地部署的青龙面板至公网四、使用固定公网地址访问本地部署的青龙面板 …

全局异常 @ControllerAdvice 该怎么写

本文首发于稀土掘金:全局异常 ControllerAdvice 该怎么写,该账号即为本人账号,非搬运。 问题由来 很多小伙伴刚进公司做项目的时候,会看到项目里面有一个ControllerAdvice标记的类,整个类的编码结构大概是这样子&…

程序员极力推荐的几款插件

前言 h之前分享程序员喜欢的神器之后,还是相当多的伙伴喜欢,那一期的工具不仅是协助你工作还是工作外摸鱼划水,体验感是相当不错的。 这一期我还是打算把我非常喜欢用的几款插件分享给大家,这几款差劲不仅帮助我节省很多时间&am…

2024年软件系统与信息处理国际会议(ICSSIP 2024)即将召开!

2024年软件系统与信息处理国际会议(ICSSIP 2024)将于2024年10月25-27日在中国昆明举行。引领技术前沿,共谋创新未来。ICSSIP 2024将汇聚来自世界各地的专家学者,他们将在会上分享最新的研究成果、技术突破及实践经验。会议议题涵盖…

WAAP替代传统WAF已成趋势

数字化时代,Web应用和API已成为企业运营的核心。然而,随着网络攻击手段的不断进化,自动化攻击愈发频繁,传统的Web应用防火墙(WAF)已难以满足现代企业的安全需求。WAAP(Web Application and API …

我出一道面试题,看看你能拿 3k 还是 30k!

大家好,我是程序员鱼皮。欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行 4 个简单的选择,就能判断出来你的水平是新手(3k)、初级(10k)、中…

大镜山阿里巴巴国际站数据采集软件使用方法|阿里国际站商家信息采集软件使用方法|阿里国际站信息采集软件使用方法

大镜山阿里巴巴国际站数据采集软件一款采集阿里巴巴国际站alibaba.com商家数据的软件,采集的数据包括店铺名称、店铺年份、评分、邮件地址、手机号码、网址及社交连接等。 下载大镜山阿里巴巴国际站数据采集软件 大镜山阿里巴巴国际站数据采集软件下载地址 大镜山…

ubuntu20.04.6 安装Skywalking 10.0.1

1.前置准备 1.1. **jdk17(Skywalking10 jdk22不兼容,用17版本即可)**安装: https://blog.csdn.net/CsethCRM/article/details/140768670 1.2. elasticsearch安装: https://blog.csdn.net/CsethCRM/article/details…

Java-21推崇的虚拟线程到底有好快?一起来看这个实验

我们一起来看下面这个场景:十万个待执行任务,每个任务休眠两秒 1. 采用java-21的虚拟线程池来实现 public static void main(String[] args) throws InterruptedException{ExecutorService VIRTUAL_THREAD_POOL Executors.newThreadPerTaskExecutor(Th…

爬虫程序在采集亚马逊站点数据时如何绕过验证码限制?

引言 在电商数据分析中,爬虫技术的应用日益广泛。通过爬虫技术,我们可以高效地获取大量的电商平台数据,这些数据对于市场分析、竞争情报、价格监控等有着极其重要的意义。亚马逊作为全球最大的电商平台之一,是数据采集的重要目标…

pdf文件损坏打不开怎么修复?文档损坏原因和修复办法分享!

pdf是一种优点很多的软件,它在文件传输过程中格式不会乱掉,而且还可以加密,特别的方便。pdf这种文件格式,不仅能呈现文档,还可以呈现图像,工作中经常会用到。 不过,因为种种原因,有…

【iOS】——Block底层实现和捕获机制

Block的实质 Block的定义是带有自动变量的匿名函数,下面从源码的角度探究下Block究竟是什么 下面是一个Block的简单实现: int main(int argc, const char * argv[]) {autoreleasepool {// insert code here...void (^blk)(void) ^{printf("Bloc…

WordPress原创插件:搜索引擎抓取首图seo图片

WordPress原创插件:搜索引擎抓取首图seo图片 插件设置 插件将在网站头部添加适当的meta标签,以便百度等搜索引擎抓取指定的固定图像。 插件下载 https://download.csdn.net/download/huayula/89596527

Docker容器数据库启动,如何用别名JAR jdbc:postgresql://别名:5432/postgres

如果想了解为啥这样做得同学,请去看这个文章 Docker容器网络(七)_host.docker.internal-CSDN博客 因为docker0网络,需要用别名的话,还得在host文件加 dockerIp(172.0.0.2) 别名 怎么查, docker network …

C语言:扫雷游戏实现

一、扫雷游戏的分析和设计 扫雷游戏想必大家都玩过吧,初级的玩法是在一个9*9的棋盘上找到没有雷的格子,而今天我们就要做的就是9*9扫雷游戏的实现。 1、游戏功能和规则 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘…