黑马es集群

1、为什么要做es集群

单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题

        海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点

        单点故障问题:将分片数据在不同节点备份(replica)

2、搭建es集群

        1、用3个docker容器模拟3个es节点

        

version: '2.2'
services:es01:image: elasticsearch:7.12.1container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- "ES_JAVA_OPTS=-Xms512m -Xmx512m"volumes:- data01:/usr/share/elasticsearch/dataports:- 9200:9200networks:- elastices02:image: elasticsearch:7.12.1container_name: es02environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es03- cluster.initial_master_nodes=es01,es02,es03- "ES_JAVA_OPTS=-Xms512m -Xmx512m"volumes:- data02:/usr/share/elasticsearch/dataports:- 9201:9200networks:- elastices03:image: elasticsearch:7.12.1container_name: es03environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- cluster.initial_master_nodes=es01,es02,es03- "ES_JAVA_OPTS=-Xms512m -Xmx512m"volumes:- data03:/usr/share/elasticsearch/datanetworks:- elasticports:- 9202:9200
volumes:data01:driver: localdata02:driver: localdata03:driver: localnetworks:elastic:driver: bridge

        这是一个使用Docker Compose编排的Elasticsearch集群配置文件。在这个配置中,定义了三个Elasticsearch节点(`es01`、`es02`和`es03`)以及它们共享的网络、卷和相关设置。

        - `version: '2.2'`指定了使用的Docker Compose版本。
        - `services`段定义了各个服务,对应了三个Elasticsearch节点`es01`、`es02`和`es03`。
        - 每个Elasticsearch节点都基于`elasticsearch:7.12.1`镜像启动,指定了节点名称、集群名称、发现种子主机、初始主节点和Java虚拟机参数等环境变量配置。
        - `volumes`段定义了三个数据卷`data01`、`data02`和`data03`用于持久化地存储Elasticsearch数据。
        - `ports`指定了将Elasticsearch节点的9200端口(或9200、9201、9202)映射到主机的9200端口(或9201、9202、9203),允许通过主机访问Elasticsearch服务。
        - `networks`段指定了每个Elasticsearch节点连接到`elastic`网络,通过该网络实现节点之间的通信和互连。
        - `volumes`部分定义了三个本地驱动的数据卷用于持久化存储Elasticsearch数据。
        - `networks`部分定义了一个名为`elastic`的桥接网络,用于连接Elasticsearch节点。

这个配置文件实现了一个基于Docker容器的Elasticsearch集群,通过定义各节点之间的通信方式、数据存储方式和网络连接,使得这些独立的Elasticsearch节点能够组成一个工作集群,共同提供Elasticsearch服务。
 

2、设置虚拟机内存

es运行需要修改一些linux系统权限,修改`/etc/sysctl.conf`文件

        vi /etc/sysctl.conf

添加下面的内容:

        vm.max_map_count=262144

然后执行命令,让配置生效:

        sysctl -p

通过docker-compose启动集群:

        docker-compose up -d

        3、通过cerebro管理集群

        具体文件见黑马视频,需要注意的是java版本的匹配

        图中版本我使用的是jdk1.8,实测jdk21会闪退

        在地址栏中输入你任意一个es容器地址和端口即可,注意不要忘了http://

        

es集群的脑裂

        默认情况下,每个节点都是master eligible节点,因此一旦master节点宕机,其它候选节点会选举一个成为主节点。当主节点与其他节点网络故障时,可能发生脑裂问题。
        为了避免脑裂,需要要求选票超过(eligible节点数量+1)/2才能当选为主,因此eligible节点数量最好是奇数。对应配置项是discovery.zen.minimum master nodes,在es7.0以后,已经成为默认配置,因此一般不会发生脑裂问题

master eligible节点的作用是什么?
        参与集群选主
        主节点可以管理集群状态、管理分片信息、处理创建和删除索引库的请求
data节点的作用是什么?

        数据的CRUD

coordinator节点的作用是什么?
        路由请求到其它节点
        合并查询到的结果,返回给用户

3、分布式细节

分布式存储

分布式查询

其中的coordinating node也可以是其中节点的任意一个

总结:

        分布式新增如何确定分片?

                coordinating node根据id做hash运算,得到结果对shard数量取余,余数就是对应的分片
        

        分布式查询:

                分散阶段:coordinating node将查询请求分发给不同分片

                收集阶段:将查询结果汇总到coordinatingnode,整理并返回给用户

4、故障转移

        集群的master节点会监控集群中的节点状态,如果发现有节点宕机,会立即将宕机节点的分片数据迁移到其它节点,确保数据安全,这个叫做故障转移。

        

        主节点挂了就选个新的主节点,然后数据迁移,其他节点挂了就直接数据迁移

故障转移:
        master容机后,EligibleMaster选举为新的主节点:

        master节点监控分片、节点状态,将故障节点上的分片转移到正常节点,确保数据安全。

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

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

相关文章

Python 数据库编程(Mysql)

目录 知识点 游标 提交事务 检索数据 回滚 关闭 增删改查 查询 新增 修改 删除 回滚的用法 知识点 游标 在Python中,数据库游标(cursor)是用于执行SQL语句并检索数据的对象。游标允许你在数据库中移动并操作数据。在使用Python进…

请说明Vue的filter的理解与用法

Vue.js 的 filter 是一种特殊的功能,允许你在mustache插值 ({{ }}) 或 v-bind 表达式中预处理文本。然而,需要注意的是,从 Vue 2.x 开始,filter 已被标记为废弃,并且在 Vue 3.x 中已完全移除。尽管如此,了解…

力扣Hot100-有效的括号(栈stack)

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

【C++】哈希(2万字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 unordered系列关联式容器 unordered_map unordered_map的文档介绍 unordered_map的接口说明 unordered_set 底层结构 哈希概念 哈希冲突 哈希函数 哈希…

Whisper-AT:抗噪语音识别模型(Whisper)实现通用音频事件标记(Audio Tagger)

1.概述: Whisper-AT 是建立在 Whisper 自动语音识别(ASR)模型基础上的一个模型。Whisper 模型使用了一个包含 68 万小时标注语音的大规模语料库进行训练,这些语料是在各种不同条件下录制的。Whisper 模型以其在现实背景噪音(如音乐…

探究 Meme 的金融与社交属性

原文标题:《A Social and Financial Study of Memecoins》撰文:Andrew Hong编译:Chris,Techub News 每一个市场周期都伴随着 Meme 代币的出现。一群人围绕着某个 Meme 集结起来,暂时抬高了某个资产的价格(从…

Github Copilot登录账号,完美支持chat

Github Copilot 代码补全等功能,提高写代码的效率 https://web.52shizhan.cn/activity/copilot 登录授权后,已经可以使用,完美。如图

flutter 自动生成静态资源的引用

flutter_gen库的使用 第一步、项目yarml中dev_dependencies 新增一下flutter_gen_runner 和build_runner dev_dependencies:build_runner: nullflutter_gen_runner: null # flutter packages pub run build_runner build 第二步、新增配置信息 和(dev_dependencies 同级的) …

大话设计模式学习笔记

目录 工厂模式策略模式备忘录模式(快照模式)代理模式单例模式迭代器模式访问者模式观察者模式解释器模式命令模式模板方法模式桥接模式适配器模式外观模式享元模式原型模式责任链模式中介者模式装饰模式状态模式 工厂模式 策略模式 核心:封装…

03.k8s常用的资源

3.k8s常用的资源 3.1 创建pod资源 k8s yaml的主要组成 apiVersion: v1 api版本 kind: pod 资源类型 metadata: 属性 spec: 详细上传nginx镜像文件,并且上传私有仓库里面 k8s_pod.yaml apiVersion: v1 kind: Pod metadata:name: nginxlabels:app: we…

prometheus 标签选择器 正则表达式 = 、=~

Prometheus expression是一种用于查询和操作Prometheus时间序列数据的查询语言。它具有一套丰富的函数和运算符,可以用于提取、聚合和转换时间序列数据。 正则表达式在Prometheus expresion中也被广泛使用,可以用于匹配和过滤时间序列。 Prometheus ex…

Tuxera Ntfs For Mac 2023的具体使用方法

大家都知道由于操作系统的原因,在苹果电脑上不能够读写NTFS磁盘,但是,今天小编带来的这款tuxera ntfs 2024 mac 破解版,完美的解决了这个问题。这是一款在macOS平台上使用的磁盘读写软件,能够实现苹果Mac OS X系统读写…

CSS实验性功能及CSS4特性

CSS4目前仍然是一个宽泛的概念,因为CSS的发展通常是通过一系列逐步完善的模块来进行的,而不是一次性推出一个全新的“第四代”。许多所谓的“CSS4”特性实际上是正在开发或已经草案阶段的CSS模块,它们可能在未来的CSS规范中被正式采纳。 选择器4: :is() 和 :where() 伪类允…

Docker的数据管理(数据卷+数据卷容器)

文章目录 一、Docker的数据管理1、概述2、主要的技术(三种数据挂载方式)2.1、数据卷(Volumes)2.2、绑定挂载(Bind mounts)2.3、tmpfs挂载(Tmpfs mounts)2.4、之间的关系(…

偏微分方程算法之二阶双曲型方程交替方向隐格式(变形一)

目录 一、研究目标 二、变形 三、算例实现 四、计算结果 本专栏介绍了二阶双曲型偏微分方程的交替方向隐格式的介绍和推导(链接如下),本节将进一步研究二维双曲型方程初边值问题其它的交替方向隐格式。

示例丨医学、医药类查新点填写参考案例

根据《科技查新技术规范》GB/T 32003-2015,科学技术要点是必须要包含查新点内容的,而查新点就是科学技术要点中能够体现查新项目新颖性和技术进步的技术特征点。 在日常查新工作的接待中,我们发现医学、医药类查新合同上查新点的书写&#x…

计算机tcp/ip网络通信过程

目录 (1)同一网段两台计算机通信过程 (2)不同网段的两台计算机通信过程 (3)目的主机收到数据包后的解包过程 (1)同一网段两台计算机通信过程 如果两台计算机在同一个局域网中的同…

算法(九)希尔排序

文章目录 希尔排序简介代码实现 希尔排序简介 希尔排序(shell sort)选定一个小于N(数列长度)的整数gap作为第一增量,然后将所有距离为gap的元素分成一组,然后对每一组的元素进行插入排序。然后再取一个比前…

(1+X)Java程序设计高级(一)

Throwable:异常的基类,所有异常都继承自 java.lang.Throwable 类,Throwable 类有两个直接子类:Error 类和 Exception 类。Error:是 Java 应用程序本身无法恢复的严重错误,应用程序不需要捕获、处理这些严重…

7.1 Go 错误的概念

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…