ElasticSearch学习笔记(三)Ubuntu 2204 server elasticsearch集群配置
如果你只是学习elasticsearch的增、删、改、查等相关操作,那么在windows上安装一个ES就可以了。但是你如果想在你的生产环境中使用Elasticsearch提供的强大的功能,那么还是建议你使用Linux操作系统。
本文以在Ubuntu 2204 server中安装elasticsearch 8.11为例向同学们演示如何在Linux操作系统中安装并配置Elasticsearch.
0.前置条件
0.1 准备三台服务器
可以是物理机也可以是虚拟机,三台服务器安装好ubuntu 2204 server,我的三台服务器都是在虚拟机中,以下是我的相关配置。
| IP地址 | 节点 | 服务器配置 |
|---|---|---|
| 192.168.50.5 | node1 | Elasticsearch[master/data] kibana 8C 16G ubuntu2204 |
| 192.168.50.6 | node2 | Elasticsearch [master/data]8C 8G ubuntu2204 |
| 192.168.50.7 | node3 | Elasticsearch [master/data] 8C 8G ubuntu2204 |
0.2 配置好系统时区,保证3台服务器的时区一致。
0.3 关闭交换内存
修改/etc/fstab文件,将/swap.img那行注释掉,然后重启系统。

0.4.重命名系统主机名分别为node1,node2,node3,node4
hostnamectl set-hostname <node1>
检查自己的配置。

从上图可以看到我的准备好了三台服务器,分别为node1,node2,node3,三台服务器都在CST时区,并且关闭了交换内存。
0.5 修改sshd_config配置,允许root远程登录。
1.安装elasticsearch
在每个节点上执行下面的操作,使用deb包安装的elasticsearch 8.11.
⚠️ 安装elasticsearch需要使用普通用户。安装完成后,会在系统中自动添加一个elasticsearch用户和用户组。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.1-amd64.deb
sudo dpkg -i elasticsearch-8.11.1-amd64.deb

安装非常顺利,由于我们使用的deb包安装,所以安装非常的友好,并且安装完成后可以使用systemctl来管理我们的elasticsearch,下图是我三个节点安装成功的截图,大家一定要仔细阅读安装完成的信息。

在安装完成输出信息中同学们一定要注意以下几点信息。
- 默认安装启用身份验证和授权,并自动配置了传输层和HTTP层的TLS.
- 为内置超级用户生成了密码。
- 加入节点的命令。
- 为kibana实例生成注册令牌的命令。
- 启动systemctl服务的命令。
按照提示,我们在每个节点执行以下命令重载systemctl守护并将elasticsearch服务加入开机自启。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
2.配置node1上的elasticsearch
接下来的操作都是一些配置工作,所以这里我直接切换成root用户了。通过前面安装方式安装的elasticsearch配置文件为/etc/elasticsearch/elasticsearch.yml,接下来我们要经常和这个配置文件打交到。
vim /etc/elasticsearch/elasticsearch.yml

在节点1的elasticsearch配置我们主要修改以下几个配置项。
-
集群名称: cluster.name
cluster.name: es-cluster集群中的每个节点的集群名称要保持一致。
-
节点名称:node.name: node-1
node.name: node-1集群中每个节点的节点名称要保持唯一,比如分别为:node-1,node-2,node-3。
-
网络地址:network.host:
network.host: 192.168.50.5network.host使用本机的IP地址
-
端口号:http.port:
http.port: 9200这里保持默认的9200即可,也可以自定义这个端口,注意要大于1024小于65535,并且是系统未使用的端口。
-
集群初始化主节点:cluster.initial_master_nodes:
cluster.initial_master_nodes: ["192.168.50.5"]这里默认使用主机名作为初始化主节点的配置,建议修改成主机IP。
修改好以上5个配置后,保存配置文件,其它的配置,同学们可以通过阅读配置说明自行修改。
3.启动node1上的elasticsearch
前面我们修改了node1上的配置文件,接下来使用下面的命令启动elasticsearch.
systemctl start elasticsearch
如果启动过程没有报错信息,就OK了,也可以使用以下命令查看elasticsearch的状态。
systemctl status elasticsearch

4.使用浏览器查看ES状态
在浏览器地址栏中输入https://<node-1.ip>:9200,就会打开ES的登录界面。

这里的用户名就是elastic,密码就是安装完成时输出信息中给出的密码,如果你不想使用默认密码,也可以使用下面的命令自定义elastic的密码。
/usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u elastic

刷新es的登录页面,使用新的自定义密码就能登录了,登录后会显示ES集群的一些信息。

5.配置node2
node2的配置和node1基本相同,以下是node2的配置,按照前面的方法修改node2的elasticsearch.yml文件并保存退出。
vim /etc/elasticsearch/elasticsearch.yml
node2的配置项
cluster.name: es-cluster
node.name: node-2
network.host: 192.168.50.6
http.port: 9200
cluster.initial_master_nodes: ["192.168.50.6"]
⚠️ 配置完成后一定不要启动ES。
6.将node2加入集群
按照ES官方的方式将node2加入集群。
首先在node1上使用下面的命令生成集群令牌令牌。
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

然后在node2上使用下面的命令将node2加入集群。
/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token>
就是在node1上生成的那串字符。
/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token eyJ2ZXIiOiI4LjExLjEiLCJhZHIiOlsiMTkyLjE2OC41MC41OjkyMDAiXSwiZmdyIjoiZGE3ZjFiZGY1NWEzMGE0NDViNjQ2ZTc1NDc4YmQ0YmIyNjA2YzUwOGJkYmFmZWRmMDg1OTQ1ODdjOThmOWI2MCIsImtleSI6ImwtS2FVWklCU0ZNc1BNTm5haWRvOklRYlNyM29wU2pLZFA1Rk8za19oTmcifQ==

上图是我操作的截图,通过上面的操作我们已经将节点node2加入到集群了。
这里注意有一段非常重要的输出提示,我复制出来,后面还会用到。
This node will be reconfigured to join an existing cluster, using the enrollment token that you provided.
This operation will overwrite the existing configuration. Specifically:- Security auto configuration will be removed from elasticsearch.yml- The [certs] config directory will be removed- Security auto configuration related secure settings will be removed from the elasticsearch.keystore
Do you want to continue with the reconfiguration process [y/N]y
使用下面的命令启动node2上的Elasticsearch。
systemctl start elasticsearch
如果启动过程没有报错信息,说明node2已经加入到集群了,接下来我们就可以在浏览器中我们可以查看集群的状态了。

7.修改node3的配置
修改node3的配置项并保存,需要修改的配置项如下。
cluster.name: es-cluster
node.name: node-3
network.host: 192.168.50.7
http.port: 9200
#cluster.initial_master_nodes: ["node3"]
discovery.seed_hosts: ["192.168.50.5:9300"]
⚠️ 修改完成后保存退出,但是不要启动ES
8.将node3加入集群
我们可以按照node2加入集群的方法将node3加入集群,但是这里我想尝试使用另外一种方法将节点加入到集群。
在使用elasticsearch-reconfigure-node命令将node2加入节点时,有一段输出信息。
This node will be reconfigured to join an existing cluster, using the enrollment token that you provided.
This operation will overwrite the existing configuration. Specifically:- Security auto configuration will be removed from elasticsearch.yml- The [certs] config directory will be removed- Security auto configuration related secure settings will be removed from the elasticsearch.keystore
Do you want to continue with the reconfiguration process [y/N]y
上面的提示信息告诉我们命令elasticsearch-reconfigure-node会自动配置elasticsearch.yml,并删除certs目录中的文件以及elasticsearch.keystore.
其实就是使用node1 certs中的文件覆盖了node2 certs中的文件,node1 的elasticsearch.keystore覆盖了node2的elasticsearch.keystore文件。我们按照这个思路,让node1的相关文件覆盖node3相关文件。
scp /etc/elasticsearch/certs/* root@192.168.50.7:/etc/elasticsearch/certs/

scp /etc/elasticsearch/elasticsearch.keystore root@192.168.50.7:/etc/elasticsearch/

启动elasticsearch
systemctl start elasticsearch
如果没有报错信息,说明node3上的ES启动成功。
通过浏览器查看集群状态,发现node3已经加入了集群。

好了,今天的教程就到此为止,要给儿子做饭了,大家有问题可以留言给我,我看到会给大家回复了。
相关文章:
ElasticSearch学习笔记(三)Ubuntu 2204 server elasticsearch集群配置
如果你只是学习elasticsearch的增、删、改、查等相关操作,那么在windows上安装一个ES就可以了。但是你如果想在你的生产环境中使用Elasticsearch提供的强大的功能,那么还是建议你使用Linux操作系统。 本文以在Ubuntu 2204 server中安装elasticsearch 8.…...
基于STM32的简易交通灯proteus仿真设计(仿真+程序+设计报告+讲解视频)
基于STM32的简易交通灯proteus仿真设计(仿真程序设计报告讲解视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0091 **1.**主要功能 功能说明: 以STM32单片机和数码管、LED灯设计简易交通…...
linux下新增加一块sata硬盘并使用
1)确认新硬盘能被正确识别到 2)对新硬盘进行分区 说明:fdisk指令中输入“m”,可以看到详细的指令含义。 3)确认新创建的分区 5)格式化新创建的分区 6)挂载新分区并使用...
主从复制遇到的问题点
1.解决主从复制的配置问题 大致逻辑: 主库: 进入mysql的my.in文件,配置 server-id 1 log-bin mysql-bin log-bin D:/mysql/log binlog-do-db 数据库名 从库 进入mysql的my.in文件,配置 server-id 2 replicate-do-db 数据库名…...
Macbook ToDesk 无法连接网络
描述 网络连接的是 Wi-Fi,打开浏览器能跟正常浏览内容,说明 Wi-Fi 是正常的。 现象:显示网络连接失败,一直无法登陆! 检查防火墙是没有阻止ToDesk 的任何连接,说明防火墙也是正常的。 解决 检查登录项&a…...
C++-容器适配器- stack、queue、priority_queue和仿函数
目录 1.什么是适配器 2.deque 1.简单了解结构 2.deque的缺陷 3.为什么选择deque作为stack和queue的底层默认容器 3.stack(栈) 4.queue(队列) 5.仿函数 6.priority_queue(优先级队列)(堆…...
C++游戏开发指南
C游戏开发指南 引言 在这个数字娱乐时代,游戏行业炙手可热,你是否也憧憬着能亲自开发出一款独特的游戏呢?你是否想过,为什么越来越多的开发者选择C作为他们的开发语言?没错,C不仅是一种高效的编程语言&am…...
k8s的pod管理及优化
资源管理介绍 资源管理方式 命令式对象管理:直接用命令去操作kubernetes资源 命令式对象配置:通过命令配置和配置文件去操作kubernets资源 声明式对象配置:通过apply命令和配置文件去操作kubernets资源 命令式对象管理: 资源类…...
HTML 常用的块级元素和行内元素
1. 常用的块级元素 块级元素具有如下特点: 占据父容器的整行宽度。通常从新的一行开始。可以包含其他块级元素和行内元素。 常用的块级元素: div:通用的容器,用于布局和分块内容。 h1 到 h6:标题标签,定义…...
js短路求值
短路求值(short-circuit evaluation)是指在逻辑运算中,如果前面的表达式已经能够确定整个表达式的结果,后面的表达式就不会被执行。短路求值常见于逻辑运算符 &&(与)和 ||(或࿰…...
react 知识点汇总(非常全面)
React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它的核心理念是“组件化”,即将用户界面拆分为可重用的组件。 React 的组件通常使用 JSX(JavaScript XML)。JSX 是一种 JavaScript 语法扩展,…...
如何加密重要U盘?U盘怎么加密保护?
在日常生活中,我们常常使用U盘来存储和传输重要文件。然而,U盘的便携性也意味着它容易丢失或被盗。为了保护U盘中的数据安全,我们需要对U盘进行加密。本文将为您介绍如何加密重要U盘,以及U盘加密保护的方法。 BitLocker BitLocke…...
js编写一个中奖程序
好的,以下是一个用JavaScript编写的抽奖程序,它根据给定的概率来决定奖项。我们将使用随机数生成器来模拟抽奖过程。 function drawPrize() {const prizes [{ name: 特等奖, probability: 0.00000001 },{ name: 一等奖, probability: 0.00000003 },{ n…...
Mybatis-plus的基础用法
文章目录 1. 核心功能1.1 配置与编写规则1.2 条件构造器1.3 自定义SQL1.4 IService接口1.4.1 Lambda方法1.4.2 批量新增 1.5 分页查询 2. 拓展功能2.1 代码生成器2.2 DB静态工具2.3 逻辑删除2.4 枚举处理器 参考 1. 核心功能 1.1 配置与编写规则 Maven依赖: <…...
【网络篇】计算机网络——应用层详述(笔记)
目录 一、应用层协议原理 1. 进入应用层 2. 网络应用程序体系结构 (1)客户-服务器体系结构(client-server architecture) (2) P2P 体系结构(P2P architecture) 3. 进程间通讯 …...
力扣10.9
3171. 找到按位或最接近 K 的子数组 给你一个数组 nums 和一个整数 k 。你需要找到 nums 的一个 子数组 ,满足子数组中所有元素按位或运算 OR 的值与 k 的 绝对差 尽可能 小 。换言之,你需要选择一个子数组 nums[l..r] 满足 |k - (nums[l] OR nums[l 1…...
@RequestMapping指定请求方式的用法
RequestMapping("/depts")public Result list() {log.info("查询全部部分数据");return Result.success();}上面代码没有指定请求方式,通过postman测试,可以用GET,POST,Delete的方式调用。 要想指定请求方式…...
卷积神经网络细节问题及知识点
一、Batch Normalization Batch Normalization(BN,批归一化) 是深度学习中的一种技术,主要用于加速神经网络的训练过程,同时提高网络的稳定性和收敛速度。它通过对每一层的输出进行归一化,减少梯度消失和梯…...
【图论】(一)图论理论基础与岛屿问题
图论理论基础与岛屿问题 图论理论基础深度搜索(dfs)广度搜索(bfs)岛屿问题概述 岛屿数量岛屿数量-深搜版岛屿数量-广搜版 岛屿的最大面积孤岛的总面积沉没孤岛建造最大人工岛水流问题岛屿的周长 图论理论基础 这里仅对图论相关核…...
PhotoMaker部署文档
一、介绍 PhotoMaker:一种高效的、个性化的文本转图像生成方法,能通过堆叠 ID 嵌入自定义逼真的人类照片。相当于把一张人的照片特征提取出来,然后可以生成你想要的不同风格照片,如写真等等。 主要特点: 在几秒钟内…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
电脑桌面太单调,用Python写一个桌面小宠物应用。
下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡,可以响应鼠标点击,并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...
比较数据迁移后MySQL数据库和PostgreSQL数据仓库中的表
设计一个MySQL数据库和PostgreSQL数据库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较两…...
