橘子学es原理01之准备工作

es本身是具备很好的使用特性的,我指的是他的部署方面的,至于后期的使用和运维那还是很一眼难尽的。
我们从这一篇开始就着重于es的一些原理性的的一些探讨,当然我们也会有一些操作性的,业务性的会分为多个栏目来写。比如前面我写的操作实战的一篇,后面还会不断补充的,https://blog.csdn.net/liuwenqiang1314/article/details/135882607?spm=1001.2014.3001.5501

一、部署模式

我们一般有三种部署模式:
1、本地单节点部署:这种一般是我们在开始学习的时候,快速的部署搭建一个节点开始使用,如果你想验证一个什么功能,这种方式是不错的。
2、本地多节点部署集群:这种模式其实就是我们所称的伪集群了,这种集群并不具备分布式的真正特性,当这一个机器挂了,整个集群直接就无了。适合在我们学习分布式理论或者原理的学习,不具备实战特性。
3、多机器部署的集群:这种模式一般是在一个机器上部署一个es节点,然后多台机器的多个节点组成一个集群。这种模式是我们生产实践中常用的,也可以用在ece认证考试中。当然了,实际生产可能机器配置很高,这时候我们为了让资源利用最大化,可以在一个机器上部署一个或者一个以上的节点。这个后面我们说资源预估的时候再说。

二、关于配置

es的启动中,配置文件是一个非常重要的东西,当然了,尤其是我们在启动一个集群的时候,需要配置很多东西。但是他有这么几个概念需要明确一下先。

1、自动发现

我们说es集群的各个节点之间是通过9300端口(默认)来通信的,并且通过这个通信发现彼此的存在,而且他存在自动发现机制,不需要你修改任何配置,节点之间就可以自动发现彼此,从而形成集群。
这个我们就不演示了,因为实际没人这么用,因为你完全依赖自动发现结果就是每次启动端口都不固定,这次是9200下次就是9201我们实际开发中不会这么用的,都是在配置文件中显式的声明。

2、开发模式和生产模式

  • 开发模式:开发模式其实就是默认配置,没配置集群发现,如果你只是简单的学习,不需要es的引导检查,因为引导检查巨麻烦,所以es提供了一个设置项,discovery.type=single-node,此项配置为指定节点为单节点来绕过引导检查。
  • 生产模式:当用户修改了有关集群的相关配置,就会触发生产模式,生产模式下,服务启动就会触发es的引导检查或者叫做启动检查(bootstrap checks),这个机制就是在服务启动之前做一些重要的配置项进行检查,检查其配置值是否合理。引导检查包括对jvm大小,内存锁,虚拟内存,最大线程数,集群发现相关配置进行的检查,如果某一项或者几项配置不合理,es会拒绝启动服务,并且在开发模式下属于一些警告的信息在生产模式下会升级为错误信息输出,引导检查及其严格,之所以宁可拒绝启动服务也要阻止用户启动就是为了防止用户在对es基本使用不了解的前提下启动服务而导致的后期性能问题无法解决或者解决起来很棘手,因为一旦服务以某种不合理的配置启动,时间久了之后可能会产生问题,那时候可能已经难以维护,所以这种操作虽然有了门槛,但是避免了以后的问题,算是未雨绸缪了。

3、单节点模式

单节点启动节点会自己选举自己成为active master节点,每个节点都是自己形成一个集群,也会绕过引导检查。

discovery.type:single-node

4、核心配置项

cluster.name:集群名称,节点根据集群名称来确定是否和其他节点属于同一个集群,从而加入对应的集群。
node.name:节点名称,集群内唯一即可。
node.role:节点的角色配置,不同的角色以字符串的数字方式进行配置。
network.host:节点对外提供服务的地址以及集群内通信的地址,就是你对外用api访问都是这个地址,他们内部节点通信也是这个ip,就是端口不同。如果你配置为本地地址(127.0.0.1),那么当前节点仅会在本地去发现其他节点,另外修改此配置会触发生产模式从而执行引导检查,但是生产环境一般是一个机器一个节点,每个节点都要和其他服务器形成发现,所以这个配置一般是本机内网地址。他们节点之间内网通信。
http.port:对外提供服务的端口号,默认是9200-9299,单节点默认9200,多个节点要是在一台机器,他们就在9200-9299中获得,一般一百个端口够了,没人会在一个机器部署超过一百个节点。
transport.port:节点之间的通讯端口,默认是9300-9399,节点之间tcp通信的,也是一百个,原理同上。
discovery.seed_hosts:集群初始化的种子节点,可配置部分或者全部节点,大型集群可以通过嗅探机制发现其余没配置的节点,如果你去参加认证考试,我建议配全部,因为保险。
cluster.initial_master_nodes:节点初始active master节点,必须是有master角色的节点,他们是用来初始化投票master用的,也就是必须是候选节点,但是不是必须配置所有候选节点,配置一两个差不多了,一个宕机了还有一个备用,他们也能发现,生产模式下启动新集群的时候,必须明确列出在第一次选举中计算其选票的候选节点,第一次成功启动形成集群之后,cluster.initial_master_nodes从每个节点中的配置中,删除配置,后续你重启集群或者向集群添加新节点的时候,就不用配了。他已经存在于集群元数据中了,除非你删了data文件夹,那你就需要重配置了。

5、我的配置

后面我所有的操作都是在一个集群下的操作,我列出我的三个节点的配置。
节点1配置

cluster.name: levi-cluster
node.name: node1
network.host: 127.0.0.1
http.port: 9201
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node1","node2","node3"]
xpack.security.http.ssl.enabled: false
xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

节点2配置

cluster.name: levi-cluster
node.name: node2
network.host: 127.0.0.1
http.port: 9202
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node1","node2","node3"]
xpack.security.http.ssl.enabled: false
xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

节点3配置

cluster.name: levi-cluster
node.name: node3
network.host: 127.0.0.1
http.port: 9203
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node1","node2","node3"]
xpack.security.http.ssl.enabled: false
xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

然后启动集群就可以了,你可以看到我其实啥也没咋改就是简单改了几个启动发现的配置和地址ip,端口。并且我们目前不涉及对于权限的认证,所以我把8.0默认开启的xpack的权限管理的都配置为false了。
而且我是在本地机器开了三个不同端口的节点,因为我机器资源比较大所以就这么整了,你也可以使用多台机器或者多个虚拟机都可以。
在这里插入图片描述

然后我们启动Kibana来链接上集群,我们使用GET _cat/nodes?v来看下启动是不是成功了。
在这里插入图片描述
我们可以看到他已经启动成功了。

三、关于主从模式(leader/follower)

首先es使用的就是主从模式架构,其实分布式集群还有一种叫做分布式哈希表模式(DHT),其区别在于:

  • 主从模式适合节点数量不多,并且节点的状态改变(节点加入和离开)不频繁的场景。
  • 分布式哈希表支持每小时数千个节点的加入和离开。响应大约在4-10跳。
    es使用的场景中一般不会一个集群有太多节点,一般不建议超过一千个,节点的数量远远小于主节点所能维护的连接数,并且也一般不经常有节点加入和离开,处于相对稳点的网络中,所以它选择了主从模式。

四、总结

我们这里对于一些简单的预备原理做了描述,对于你启动的一些建议做了解释。但是你也会看到很多概念没提,比如节点角色咋配,密码权限我也都注释了,其他的一些概念都没说,这个不急,我们先把环境搭建起来,后面关于操作,关于原理和源码都会慢慢展开。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java面试(并发)

java线程概念,安全? 进程是系统分配资源的最小单元,线程是操作系统调度的最小单位。线程属于进程。 加锁保证安全。1.JVM提供Synchronized关键字,2.jdk提供各种lock锁 实现多线程方式? 1.继承Thread类,…

【奥威-金蝶云星空BI方案】你要的报表,这里都有!

用金蝶云星空来记账,那确实好,但如果让你再去做一份详细的报表呢?自己开发的话,成本大、耗时长,一旦有了新的需求又要一再开发,长此以往将增加使用者使用难度,降低数据分析对运营决策的时效性。…

2024能源动力、机械自动化与航天航空技术国际学术会议(ICEPMAT2024)

2024能源动力、机械自动化与航天航空技术国际学术会议(ICEPMAT2024) 会议简介 能源动力、机械自动化和航空航天技术国际学术会议(ICEPMAT2024)将于2024年在北京举行。会议将探讨能源动力、机械自动化、航空航天技术领域的新研究热点、核心技术和发展趋…

迷你世界之建筑生成球体

local x0,y0,z00,30,0--起点坐标 local dx,dy,dz60,60,60--外切长方体横纵竖长度 local count,all0,dx*dy*dz--计数,总数 local m,k10000,0--单次生成方块数,无用循环值 local x,y,z0,0,0--当前坐标 local demath.random(2,19)/2 local id600--方块…

在openEuler中通过KVM可视化安装华为FusionCompute的CNA主机

一、环境说明 在Windows物理主机上通过VMware WorkStation创建一个虚拟机(4U4C、16GB内存,400GB磁盘,NAT网络连接),在虚拟机中安装openEuler 22.03 LTS系统,并将该虚拟机作为部署 FusionCompute的服务器&a…

【Linux】 yum命令使用

yum命令 yum( Yellow dog Updater, Modified) 是一个在 Fedora、CentOS 及其它一些基于 RPM 的 Linux 发行版中使用的包管理器。它允许用户自动安装、更新、配置和删除软件包。yum 由 Python 写成,基于 RPM(Red Hat Package Mana…

【C语言】linux内核ipoib模块 - ipoib_tx_poll

一、中文注释 这段代码是 Linux 内核网络栈中与 InfiniBand 协议相关的一个部分,特别是与 IP over InfiniBand (IPoIB)相关。该函数负责去处理IPoIB的发送完成队列(发送CQ)上的工作请求(work completions)。以下是对这…

微信小程序开发(实战案例):本地生活 - 列表页面开发(动态渲染处理)、节流防抖(节流阀应用)

文章目录 本地生活 - 列表页面开发一、将九宫格分类换成navigator组件二、动态设置商品列表页的 title三、动态渲染商品列表页面四、上拉触底加载数据五、添加Loading加载效果六、数据加载节流防抖处理 本地生活 - 列表页面开发 导入我们上次写的 本地生活 - 首页开发的项目 运…

MySQL数据库调优之关联查询、排序查询、分页查询、子查询、Group by优化

关联查询优化 1.准备工作 CREATE TABLE IF NOT EXISTS type(id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,card INT(10) UNSIGNED NOT NULL,PRIMARY KEY(id));CREATE TABLE IF NOT EXISTS book( bookid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED N…

李宏毅2023机器学习作业1--homework1——python语法

# 定义list del_col del_col [0, 38, 39, 46, 51, 56, 57, 64, 69, 74, 75, 82, 87] # 删除raw_x_train中del_col的列,axis为1代表删除列 raw_x_train np.delete(raw_x_train, del_col, axis1) # numpy数组增删查改方法 # 定义列表get_col get_col [35, 36, 37,…

openssl3.2 - 编译 - zlib.dll不要使用绝对路径

文章目录 openssl3.2 - 编译 - 编译时的动态库zlib.dll不要使用绝对路径概述测试zlib特性在安装好的目录中是否正常笔记70-test_tls13certcomp.t80-test_cms.t对测试环境的猜测从头再编译测试安装一次测试一下随便改变位置的openssl用到zlib时是否好使测试一下随便改变位置的op…

【爬虫逆向实战篇】定位加密参数、断点调试与JS代码分析

文章目录 1. 写在前面2. 确认加密参数3. 加密参数定位4. XHR断点调试 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向…

实战一个 Jenkins 构建 CI/CD流水线 的简单配置过程哈

引言:上一期我们讲述了gitlabCI/CD工具的介绍,工具之争,本期我们介绍Jenkins CI/CD 目录 一、Jenkins介绍 1、Jenkins概念 2、Jenkins目的 3、特性 4、产品发布流程 二、安装Jenkins 1、安装JDK 2、安装Jenkins 1、上传压缩包 2、…

(done) 如何判断一个矩阵是否可逆?

参考视频:https://www.bilibili.com/video/BV15H4y1y737/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 这个视频里还暗含了一些引理 1.若 AX XB 且 X 和 A,B 同阶可逆,那么 A 和 B 相似。原因&#xff1…

北航复试知识点总结

2024.2.25 住行 报道+机试+两天面试=4天 面试流程 (每个人大概20min,早一点到考场!) 形式:5位老师(一记录,四提问) 老师 陆峰 办公地址:北京航空航天大学新主楼H1033 电子邮箱: lufeng@buaa.edu.cn 个人主页:http://shi.buaa.edu.cn/lufeng/ 面试礼仪 于无形中…

编曲学习:高叠和弦 挂留和弦 和弦实战应用

高叠和弦 挂留和弦 和弦实战应用小鹅通-专注内容付费的技术服务商https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_65d4826fe4b04c10a1310517?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv 七和弦 以三和弦举例,三和弦上面叠一个三度的音,就变成了七和弦。 从下到…

Spring Boot利用Kaptcha生成验证码

生成验证码 我们在登录或注册某个网站的时候,会需要我们输入验证码,才能登录注册,那么如何生成验证码呢?其实,生成验证码我们可以用Java Swing在后台内存里的区域画一个出来,但是非常麻烦,所以…

WIFI EEPROM 简略分析-MT7628 EEPROM ANALYSIS

经常做WIFI的同学都了解,硬件设计完成后经过射频的测试满足设计要求后,在量产以及生产中都需要对WIFI的射频需要校准,保证产品射频输出功率的一致性。 在开发阶段就必须需要了解WIFI的EEPROM都是一些什么参数,一般在硬件开发阶段会拿到芯片厂家都SDK,里面都包含对EEPROM的…

用什么软件制作电子杂志

想要制作高大上的电子杂志?别再烦恼啦!今天给大家推荐一款超级实用的软件,让你轻松制作出专业水准的电子杂志! 这款软件功能强大,操作简单,适合所有对设计感兴趣的小伙伴们。无论是新手还是专业设计师&…

代码随想录算法训练营第二十五天 | 216.组合总和III,17.电话号码的字母组合 [回溯篇]

代码随想录算法训练营第二十五天 LeetCode 216.组合总和III题目描述思路参考代码总结 LeetCode 17.电话号码的字母组合题目描述思路参考代码 LeetCode 216.组合总和III 题目链接:216.组合总和III 文章讲解:代码随想录#216.组合总和III 视频讲解&#xff…
最新文章