【Elasticsearch】集群配置深度解析与实践

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述


在这里插入图片描述

【Elasticsearch】集群配置深度解析与实践

引言

在当今数据爆炸的时代,海量数据的存储、检索和分析成为了许多企业和开发者面临的重要挑战。Elasticsearch作为一款开源的分布式搜索引擎,以其强大的搜索和分析功能,被广泛应用于各种场景。然而,要充分发挥Elasticsearch的性能优势,合理配置集群是至关重要的。

Elasticsearch集群能够将数据分布在多个节点上,实现数据的冗余存储和并行处理,从而提高系统的可靠性和性能。通过集群配置,我们可以根据实际需求灵活调整节点的角色和属性,优化节点间的通信和发现机制,以满足不同业务场景下对数据处理的要求。

想象一下,一个电商平台每天都会产生海量的用户行为数据,如搜索记录、购买记录等。如果没有一个高效的搜索和分析系统,企业很难从这些数据中挖掘出有价值的信息,也就无法为用户提供个性化的推荐和服务。而Elasticsearch集群的合理配置,能够让企业快速、准确地处理这些数据,为用户提供更好的体验,同时也为企业的决策提供有力支持。

在本文中,我们将深入探讨Elasticsearch集群的配置方法,包括集群名称的配置节点角色属性的设置以及节点间通信与发现机制的配置。我们还将通过实际案例来演示这些配置的具体应用,帮助读者更好地理解和掌握Elasticsearch集群的配置技巧。

1. 集群名称配置

1.1 集群名称的作用

Elasticsearch中,集群名称cluster.name)是一个非常重要的配置项。它用于标识一个Elasticsearch集群,集群中的所有节点必须使用相同的集群名称才能组成一个有效的集群。可以将集群名称看作是集群的“身份证”,只有名称相同的节点才能相互识别并进行通信和协作。

1.2 配置方法

Elasticsearch的配置文件elasticsearch.yml中,可以通过设置cluster.name参数来指定集群名称。以下是一个示例:

cluster.name: my-es-cluster

在上述示例中,我们将集群名称设置为my-es-cluster。在实际应用中,你可以根据自己的需求为集群命名,但要确保集群中的所有节点都使用相同的名称。

1.3 配置示例

假设我们要搭建一个包含3个节点的Elasticsearch集群,节点分别为node1node2node3。首先,在每个节点的elasticsearch.yml配置文件中添加以下内容:

节点node1的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node1

节点node2的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node2

节点node3的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node3

在上述配置中,我们将集群名称统一设置为my-test-cluster,并为每个节点指定了唯一的节点名称。启动这3个节点后,它们将自动组成一个名为my-test-cluster的Elasticsearch集群。

2. 节点角色与属性设置

2.1 节点角色概述

在Elasticsearch集群中,节点可以扮演不同的角色,每个角色都有其特定的职责和功能。常见的节点角色包括:

  • 主节点(Master Node):主节点负责管理集群的状态,如创建和删除索引、分配分片等。一个集群中可以有多个主节点候选节点,但在同一时刻只有一个主节点处于活动状态。主节点需要具备较高的稳定性和性能,因为它对集群的正常运行起着关键作用。
  • 数据节点(Data Node):数据节点负责存储和处理数据,即保存索引的分片数据并执行搜索、索引等操作。数据节点的性能直接影响到集群的数据处理能力,因此通常需要配置较高的内存和磁盘资源。
  • 协调节点(Coordinating Node):协调节点主要负责接收客户端的请求,并将请求转发到合适的数据节点进行处理。它还负责合并各个数据节点的返回结果,并将最终结果返回给客户端。协调节点本身不存储数据,主要起到协调和路由的作用。

2.2 节点角色配置方法

在Elasticsearch中,可以通过在配置文件elasticsearch.yml中设置相关参数来指定节点的角色。以下是一些常用的配置参数:

  • node.master:用于指定节点是否为主节点候选节点。取值为truefalse,默认为true。如果设置为true,则该节点有资格被选举为主节点;如果设置为false,则该节点不能成为主节点。
  • node.data:用于指定节点是否为数据节点。取值为truefalse,默认为true。如果设置为true,则该节点将存储和处理数据;如果设置为false,则该节点不存储数据,仅作为协调节点或主节点。
  • node.ingest:用于指定节点是否为预处理节点。取值为truefalse,默认为true。预处理节点可以在数据索引之前对数据进行预处理,如数据转换、数据清洗等操作。

以下是一些节点角色配置的示例:

仅作为主节点(不存储数据)的配置:

node.master: true
node.data: false

仅作为数据节点(不参与主节点选举)的配置:

node.master: false
node.data: true

仅作为协调节点(不存储数据,不参与主节点选举)的配置:

node.master: false
node.data: false

2.3 配置示例

假设我们要搭建一个包含3个节点的Elasticsearch集群,其中node1作为主节点(不存储数据),node2node3作为数据节点(不参与主节点选举)。以下是各个节点的配置文件示例:

节点node1的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node1
node.master: true
node.data: false

节点node2的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node2
node.master: false
node.data: true

节点node3的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node3
node.master: false
node.data: true

在上述配置中,我们根据需求分别设置了各个节点的角色。启动这3个节点后,它们将组成一个Elasticsearch集群,其中node1将被选举为主节点,负责管理集群的状态,node2node3将作为数据节点,负责存储和处理数据。

3. 节点间通信与发现机制配置

3.1 节点发现机制概述

在Elasticsearch集群中,节点需要能够相互发现并建立通信连接,才能组成一个有效的集群。Elasticsearch提供了多种节点发现机制,其中最常用的是基于种子节点列表(seed nodes)的发现机制。

种子节点列表是一个包含集群中部分节点地址的列表,新节点在启动时会尝试连接种子节点列表中的节点,以获取集群的状态信息和其他节点的地址。通过这种方式,新节点可以加入到集群中,并与其他节点建立通信连接。

3.2 配置种子节点列表

在Elasticsearch的配置文件elasticsearch.yml中,可以通过设置discovery.seed_hosts参数来指定种子节点列表。discovery.seed_hosts参数的值可以是一个或多个节点的地址,多个地址之间用逗号分隔。以下是一个示例:

discovery.seed_hosts: ["node1.example.com", "node2.example.com"]

在上述示例中,我们指定了两个种子节点的地址node1.example.comnode2.example.com。新节点在启动时将尝试连接这两个种子节点,以加入到集群中。

3.3 网络端口配置

在Elasticsearch中,节点之间的通信需要通过特定的网络端口进行。Elasticsearch默认使用以下两个端口:

  • 9200端口:这是Elasticsearch的HTTP REST API端口,用于客户端与集群进行通信。客户端可以通过该端口向集群发送各种请求,如索引数据、搜索数据等。
  • 9300端口:这是Elasticsearch节点之间的通信端口,用于节点之间的数据传输和通信。

在实际应用中,如果需要更改这些默认端口,可以在配置文件elasticsearch.yml中进行设置。以下是更改端口的示例:

更改HTTP REST API端口:

http.port: 9201

更改节点间通信端口:

transport.port: 9301

3.4 配置示例

假设我们要搭建一个包含3个节点的Elasticsearch集群,节点分别为node1node2node3,它们的IP地址分别为192.168.1.101192.168.1.102192.168.1.103。我们将node1node2设置为种子节点,并更改节点间通信端口为9301。以下是各个节点的配置文件示例:

节点node1的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node1
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.1.101", "192.168.1.102"]
transport.port: 9301

节点node2的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node2
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.1.101", "192.168.1.102"]
transport.port: 9301

节点node3的配置文件(elasticsearch.yml):

cluster.name: my-test-cluster
node.name: node3
node.master: false
node.data: true
discovery.seed_hosts: ["192.168.1.101", "192.168.1.102"]
transport.port: 9301

在上述配置中,我们将node1node2的地址设置为种子节点列表,新节点node3在启动时将尝试连接这两个种子节点,以加入到集群中。同时,我们将节点间通信端口统一设置为9301。启动这3个节点后,它们将组成一个Elasticsearch集群,并通过9301端口进行节点间的通信。

参考资料文献

  • Elasticsearch官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  • 《Elasticsearch实战》,作者:Rafał Kuć。

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

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

相关文章

Three.js教程004:坐标辅助器与轨道控制器

文章目录 坐标辅助器与轨道控制器实现效果添加坐标辅助器添加轨道控制器完整代码完整代码下载坐标辅助器与轨道控制器 实现效果 添加坐标辅助器 创建坐标辅助器: const axesHelper = new Three.AxesHelper(5);添加到场景中: scene.

紫光展锐推出高性能四核4G 智能穿戴平台W377E,应用场景更丰富

近日,紫光展锐正式推出高性能4G 智能穿戴平台W377E。该产品面向不同的应用场景,拥有丰富特性和超低功耗,进一步壮大紫光展锐的智能穿戴产品组合。紫光展锐面向中高端和海量的智能穿戴市场,持续提供技术先进、高效安全、高质可靠的…

Android着色器SweepGradient渐变圆环,Kotlin

Android着色器SweepGradient渐变圆环,Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.SweepGradient import android…

ES elasticsearch-8.17.0-windows-x86_64使用

1、下载ES(elasticsearch 简称 ES 下载链接:https://www.elastic.co/downloads/elasticsearch) ES 下载链接:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.0-windows-x86_64.zip)),需要在修改ES配置&#xff0…

MySQL DBA需要掌握的 7 个问题

1. MySQL适用的场景是什么? 数据量建议单实例T级或以内,不依赖存储过程、函数、触发器的传统oltp场景都适用,因为是一个相对轻量级的数据库 灾备使用MySQL各类的高可用方案即可,比如主从、mha、mgr等。 2. MySQL巡检应该怎么做…

柱状图中最大的矩形 - 困难

************* c topic: 84. 柱状图中最大的矩形 - 力扣(LeetCode) ************* chenck the topic first: Think about the topics I have done before. the rains project comes:盛最多水的容器 - 中等难度-CSDN博客https://blog.csdn.net/ElseWhe…

【SQL server】教材数据库(5)

使用教材数据库(1)中的数据表完成以下题目: 1 根据上面基本表的信息定义视图显示每个学生姓名、应缴书费 2 观察基本表数据变化时,视图中数据的变化。 3利用视图,查询交费最高的学生。 1、create view 学生应缴费视…

spring入门程序

安装eclipse https://blog.csdn.net/qq_36437991/article/details/131644570 新建maven项目 安装依赖包 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&quo…

Spring-Mybatis 2.0

前言&#xff1a; 第一点&#xff1a;过于依赖代码生成器或AI&#xff0c;导致基于mybaits的CRUD通通忘了&#xff0c;所以为了找回遗忘的记忆&#xff0c;有了该系列内容。 第二点&#xff1a;通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能…

在线免费批量生成 Word 文档工具

为了方便的批量生成 Word 文档&#xff0c;写了个在线 Word 文档批量生成工具&#xff0c;可以根据 Excel 数据和 Word 模板批量生成大量个性化的 Word 文档。适用于需要批量生成格式统一但内容不同的文档场景。比如&#xff1a; 批量生成证书、奖状批量生成合同、协议批量生成…

R语言6种将字符转成数字的方法,写在新年来临之际

咱们临床研究中&#xff0c;拿到数据后首先要对数据进行清洗&#xff0c;把数据变成咱们想要的格式&#xff0c;才能进行下一步分析&#xff0c;其中数据中的字符转成数字是个重要的内容&#xff0c;因为字符中常含有特殊符号&#xff0c;不利于分析&#xff0c;转成数字后才能…

NVR管理平台EasyNVR设备通过ONVIF接入出现404访问错误是什么原因?

如今&#xff0c;视频监控在各行各业都得到了广泛应用&#xff0c;成为现代社会不可或缺的一部分。随着技术的不断进步&#xff0c;视频监控系统已经从传统的模拟监控发展到高清化、网络化和智能化阶段&#xff0c;其应用领域也从最初的安防扩展到智慧城市、智能家居、交通管理…

深度学习——神经网络中前向传播、反向传播与梯度计算原理

一、前向传播 1.1 概念 神经网络的前向传播&#xff08;Forward Propagation&#xff09;就像是一个数据处理的流水线。从输入层开始&#xff0c;按照网络的层次结构&#xff0c;每一层的神经元接收上一层神经元的输出作为自己的输入&#xff0c;经过线性变换&#xff08;加权…

MySQL线上事故:使用`WHERE`条件`!=xxx`无法查询到NULL数据

前言 在一次 MySQL 的线上查询操作中&#xff0c;因为 ! 的特性导致未能正确查询到为 NULL 的数据&#xff0c;险些引发严重后果。本文将详细解析 NULL 在 SQL 中的行为&#xff0c;如何避免类似问题&#xff0c;并提供实际操作建议。 1. 为什么NULL会查询不到&#xff1f; 在…

如何修复 WordPress 中的“Error establishing a database connection”问题

如何修复 WordPress 中的“Error establishing a database connection”问题 在使用 WordPress 建站时&#xff0c;如果你看到“Error establishing a database connection”的提示&#xff0c;不要慌张。这通常意味着网站无法连接到数据库&#xff0c;因此无法显示内容。下面…

MySQL数据库的锁

一、锁&#xff08;Lock&#xff09; 1. 概念 数据库锁是数据库管理系统中用来管理对数据库对象&#xff08;如行、页或表&#xff09;的并发访问的机制。 其主要目的是确保数据的完整性和一致性&#xff0c;同时允许合理的并发操作。 数据库锁可以防止多个事务同时修改同一…

20241218-信息安全理论与技术复习题

20241218-信息安全理论与技术复习题 一、习题1 信息安全的基本属性是&#xff08;D )。 A、机密性 B、可用性 C、完整性 D、上面 3 项都是 “会话侦听和劫持技术” 是属于&#xff08;B&#xff09;的技术。 A、 密码分析还原 B、 协议漏洞渗透 C、 应用漏洞分析与渗透 D、 D…

C语言实现贪吃蛇游戏

文章目录 一、贪吃蛇目录1.游戏背景2.游戏实现效果3.项目目标4.项目所需的C语言基础知识5.Win32 API介绍5.1 Win32 API5.2 控制台程序5.3 控制台屏幕上的坐标COORD5.4 [GetStdHandle](https://learn.microsoft.com/zh-cn/windows/console/getstdhandle)5.5 [GetConsoleCursorIn…

CA系统的设计(CA证书生成,吊销,数字签名生成)

CA系统概述 CA认证系统是一种基于公钥密码基础设施&#xff08;PKI&#xff09;的信息安全技术&#xff0c;它可以为网络通信双方提供身份认证、数据加密、数字签名等功能。CA认证系统的核心是证书授权机构&#xff08;CA&#xff09;&#xff0c;它负责为用户&#xff08;节点…

《代码随想录》Day21打卡!

写在前面&#xff1a;祝大家新年快乐&#xff01;&#xff01;&#xff01;2025年快乐&#xff0c;2024年拜拜~~~ 《代码随想录》二叉树&#xff1a;修剪二叉搜索树 本题的完整题目如下&#xff1a; 本题的完整思路如下&#xff1a; 1.本题使用递归进行求解&#xff0c;所以分…