ElasticSearch集群

        我们ES集群主要解决的是这两个问题:海量数据存储问题、单点故障问题

        海量数据存储问题:单机的ES,数据存储能力是有上限的

        单点故障问题:如果单机上的Elasticsearch节点发生故障,整个系统会停止服务,导致数据不可访问甚至丢失,造成损失

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

·海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),每一份叫做一个分片,存储到多个节点,多台机器上,这样我的存储能力是多个节点存储能力总和,机器越多,理论存储的上限就可以越高,存储能力就得到提升了:

  单点故障问题:将分片数据做一个备份,并且一个分片的主分片和副分片绝对不能放在同一个节点,避免这个节点挂了,什么都没有了 ,这样可以在一定的程度上解决单点故障问题,当然成本也越高。

部署es集群

        docker-compose:在一个文本文件里描述多个容器的部署方式,从而实现一键部署,描述了三个es节点容器的部署方案;

        部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间,我们现在利用三个docker容器模拟3个ed节点(3个机器),容器之间相互隔离:

version: '2.2'
services:es01:image: docker.elastic.co/elasticsearch/elasticsearch:7.17.5container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data01:/usr/share/elasticsearch/dataports:- 9200:9200networks:- elastices02:image: docker.elastic.co/elasticsearch/elasticsearch:7.17.5container_name: es02environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data02:/usr/share/elasticsearch/datanetworks:- elastices03:image: docker.elastic.co/elasticsearch/elasticsearch:7.17.5container_name: es03environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data03:/usr/share/elasticsearch/datanetworks:- elasticvolumes:data01:driver: localdata02:driver: localdata03:driver: localnetworks:elastic:driver: bridge

        在这个compose的文件里,其实就是描述了我们要部署的三个es节点的部署方案,es01、es02、es03的写法基本上一致的:

  •         Image镜像:每一个容器都采用的都是elasticSearch7.12.1。
  •         container_name容器的名称
  •         Environment:环境变量
  •         node.name节点名称,在elasticSearch里边,每个节点都要有自己的名字,不能重复。
  •         Cluster.name集群名称,这个就很重要了,elasticSearch天生是支持集群的,你启动多台机器以后,只需要让他们的集群名称一样就可以了。因为集群名称一样,es就会自动把它们组装成一个集群,非常的方便。
  •         Discovery.seed_hosts其实就是集群中的另外两个节点的ip地址,那这里我为什么没有写i p地址呢?是因为docker容器内可以直接用容器名互联
  •         initial_master_nodes:初始化的主节点/配置候选主节点,既然是集群,一定有主从之分
  •         ES_JAVA_OPTS:配置JVM堆内存大小,最小内存和最大内存都配成了512M
  •         Volumes:数据卷  
  •         Port端口映射:注意一下三个节点容器外的端口不能一致

第一步: 

vi /etc/sysctl.conf

 第二步:

​​​​​​​vm.max_map_count = 262144

第三步: 让配置生效

sysctl -p 
[root@db301601 ~]# docker restart es
es
[root@db301601 ~]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
877298bbcfdf   elasticsearch:7.12.1   "/bin/tini -- /usr/l…"   22 minutes ago   Up 23 seconds   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   es
881f28a337e6   kibana:7.12.1          "/bin/tini -- /usr/l…"   2 hours ago      Up 2 hours      0.0.0.0:5601->5601/tcp, :::5601->5601/tcp                                              kibana
[root@db301601 ~]# vi /etc/sysctl.conf
[root@db301601 ~]# sysctl -p 
vm.swappiness = 0
kernel.sysrq = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_slow_start_after_idle = 0
vm.max_map_count = 262144
[root@db301601 ~]# 

第四步:运行

如果报错请看这篇博客: docker-compose: command not found-CSDN博客

docker-compose up -d

        我们可以用kibana去监控集群的状态,但是kibana默认只能连接到其中的一个节点,并且还依赖x-pack,所以采用cerebro:

然后你输入节点的地址,就可以访问虚拟机上任意节点的地址了:

集群下的数据查询、存储是什么样子的呢 

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

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

相关文章

Android 修改状态栏电池图标颜色

基于Sprd Android 11 Android_source/packages/SystemUI/src-unisoc/com/unisoc/systemui/battery/BatteryMeterDrawable.java if(mLevel < 20){mBatteryPaint.setColor(Color.parseColor("#FF6632")); }

TCP案例-实时群聊

实现思路 服务器端循环获取所有的客户端socket&#xff0c;放到一个socket的list中&#xff0c;等到需要通信的时候&#xff0c;调用相对应的管道就可以了客户端和服务器端一样&#xff0c;纪要发送消息&#xff0c;也要接受消息 代码 客户端 // tcp客户端 public class Clie…

2、Flink DataStreamAPI 概述(下)

代码示例 Maven 依赖 <dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java</artifactId><version>1.19.0</version></dependency><dependency><groupId>org…

Xcode隐私协议适配

1. Privacy manifest files 1.1 简介 自己App或三方SDK&#xff08;通过XCFrameworks|Swift packages|Xcode projects集成的&#xff09;需要包含一个隐私清单文件&#xff08;privacy manifest&#xff09;叫作 PrivacyInfo.xcprivacy。它是一个属性列表&#xff0c;记录了A…

VIM插件安装与配置

文章目录 前言插件管理工具1. vimrc通用配置5.标签列表插件(taglist)总结 前言 在某些情况下只能用vim编辑器&#xff0c;而没有类似vscode的图形化界面&#xff0c;为vim配置一系列插件即可方便的在vim下编程 插件管理工具 VundleVim vim-plug 将插件的地址添加进去&#xf…

[C++基础学习]----03-程序流程结构之循环结构详解

前言 在C程序中&#xff0c;循环结构在用于重复执行一段代码块&#xff0c;直到满足某个条件为止。循环结构有多种形式&#xff0c;包括while循环、do-while循环和for循环。 正文 01-循环结构简介 1、while循环语句&#xff1a; while循环在每次循环开始前检查条件是否为真&a…

【利兹】XJCO3910/COMP391001 Combinatorial Optimisation组合优化/运筹学 cw考试资料辅导

COMP391001| XJCO3910 (36642) 西交利兹院 Combinatorial Optimisation组合优化/运筹学 资料or辅导 需要请私聊 1.独家近年考试题 包你高分 2. cw and 官方标准答案 3. worksheets and solutions

【docker】安装openjdk

查看可用的 openjdk版本 docker hub 查看地址&#xff1a;https://hub.docker.com/_/openjdk 此图片已被正式弃用&#xff0c;建议所有用户尽快找到并使用合适的替代品。其他官方形象替代品的一些例子&#xff08;按字母顺序列出&#xff0c;没有有意或暗示的偏好&#xff09;…

机器学习:深入解析SVM的核心概念(问题与解答篇)【一、间隔与支持向量】

直接阅读原始论文可能有点难和复杂&#xff0c;所以导师直接推荐我阅读周志华的《西瓜书》&#xff01;&#xff01;然后仔细阅读其中的第六章&#xff1a;支持向量机 间隔与支持向量 问题一&#xff1a;什么叫法向量&#xff1f;为什么是叫法向量 在这个线性方程中&#xff…

UE5 C++ 项目C#编译目标 链接模块

一.Engine里用C#来配置 1.UnrealEditor.Target.cs using UnrealBuildTool; using System.Collections.Generic;public class UnrealEditorTarget : TargetRules {public UnrealEditorTarget( TargetInfo Target ) : base(Target){Type TargetType.Editor;IncludeOrderVersio…

给大一大二师生的忠告,如何在校招中脱颖而出做到降维打击

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

[超详细]Java子父类树形结构查询和删除[小白]

目录 前言 1、查询子父类通过树形结构封装起来 一、创建实体类 二、创建mapper类 三、创建service和serviceImpl类 四、创建controller类 2、删除该父类下的所有子类&#xff0c;并且删除自己 controller层 service和serviceImpl层 总结 前言 [超详细]Java子父类树形…

STM32与Proteus的串口仿真详细教程与源程序

资料下载地址&#xff1a;STM32与Proteus的串口仿真详细教程与源程序 资料内容 包含LCD1602显示&#xff0c;串口发送接收&#xff0c;完美实现。 文档内容齐全&#xff0c;包含使用说明&#xff0c;相关驱动等。 解决了STM32的Proteus串口收发问题。 注意&#xff1a;每输…

Datart 扩装下载功能之PDF和图片下载

Datart 扩装下载功能之PDF和图片下载 首先下载依赖 yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts -y 然后下载安装chrome yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 查看chrome版本号 google…

SAP 修改SO BAPI报错在配置和销售凭证 1 间通信时内部出错(V1 854)

1.背景 在多次使用修改SO BAPI BAPI_SALESORDER_CHANGE的时候由于缓存未清空&#xff0c;可能会报错“在配置和销售凭证 &1 间通信时内部出错”&#xff08;Internal error in communication between configuration and sales doc.&1&#xff09;&#xff0c;对应的消…

基于Vue3实现的 宫格 图片摆放

一个可以支持无限宫格的 vue3实现 本来要参考微信群头像的规则实现&#xff0c;网上找到一大堆类似的需求&#xff0c;奈何XXX折磨人&#xff0c;九宫格已经不能满足ta了。 当前代码实现了………… 好多东西(可以多宫格).具体的看效果图 code <style scoped langless> .…

AI预测体彩排列3第2套算法实战化测试第5弹2024年4月27日第5次测试

今天继续进行新算法的测试&#xff0c;今天是第5次测试。好了&#xff0c;废话不多说了&#xff0c;直接上图上结果。 2024年4月27日体彩排3预测结果 6码定位方案如下&#xff1a; 百位&#xff1a;6、2、1、7、8、9 十位&#xff1a;8、9、4、3、1、0 个位&#xff1a;3、7、8…

【SpringBoot整合系列】SpringBoot整合Redis[附redis工具类源码]

目录 SpringBoot整合Redis1.下载和安装Redis2.新建工程&#xff0c;导入依赖3.添加配置4.先来几个基本的示例测试代码输出结果用redis客户端查看一下存储内容 5.封装redis工具类RedisKeyUtilRedisStringUtilRedisHashUtilRedisListUtilRedisSetUtilRedisZsetUtil备注 6.测试通用…

node.js 解析post请求 方法二

前提&#xff1a;以前面发的node.js解析post请求方法一为模板&#xff0c;具体见 http://t.csdnimg.cn/ABaIn 此文我们运用第二种方法&#xff1a;使用第三方模块formidable对post请求进行解析。 1》代码难点 *** 在Node.js中使用formidable模块来解析POST请求主要涉及到处理…

IO流基础

IO流介绍 1.什么是IO流&#xff1f; 流是一种抽象概念&#xff0c;它代表了数据的无结构化传递。按照流的方式进行输入输出&#xff0c;数据被当成无结构的字节序列或字符序列。从流中取得数据的操作称为提取操作&#xff0c;而向流中添加数据的操作称为插入操作。用来进行输入…