Elasticsearch集群和Kibana部署流程
搭建Elasticsearch集群
1. 进入Elasticsearch官网下载页面,下载Elasticsearch
在如下页面选择Elasticsearch版本,点击download按钮,进入下载页面

右键选择自己操作系统对应的版本,复制下载链接

然后通过wget命令下载Elasticsearch安装包,并通过tar解压
#进入根目录
cd /
#下载压缩包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.25-linux-aarch64.tar.gz
#解压
tar -xf /elasticsearch-7.17.25-linux-aarch64.tar.gz
#更改文件夹名称
mv elasticsearch-7.17.25 elasticsearch
进入解压后的/elasticsearch目录下,通过 ll 命令可以看到如下内容:

2. 修改配置文件
修改配置文件为如下内容(我是用的是虚拟机环境,只需要配置一份,并复制虚拟机,在逐一修改配置即可,如果不是虚拟机环境,则需要一一配置)。
# 集群名称
cluster.name: my-es-cluster# 节点名称(每个节点需唯一)
node.name: node-1 # 其他节点分别命名为 node-2、node-3# 数据和日志路径
path.data: /elasticsearch/data
path.logs: /elasticsearch/logs# 网络设置
network.host: 192.168.166.40 #配置为当前elasticsearch节点主机的ip# 端口
http.port: 9200# 集群节点发现(9300为默认的集群通信端口)
discovery.seed_hosts: ["192.168.166.40:9300", "192.168.166.41:9300", "192.168.166.42:9300"]# 初始主节点(第一次启动指定)
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
注意:
节点名称为集群节点的唯一标识,不能重复,可以不配置,elasticsearch也可以自动生成;
初始化主节点配置的节点,则是可以参与选举并任选主节点的节点,和Kafka的controller类似;
数据目录和日志路径默认是在elasticsearch的安装目录下;
3. 修改虚拟内存
虚拟内存是提高内存使用空间,让一个固定的内存,保存远大于他的容量的内容,其实现方式有多种,其中常见的包括交换区(具体可以看我的另一片帖子操作系统的内存管理策略)以及磁盘映射,其中es所使用的就是后者磁盘映射。
扩展内存的本质实际上就是划分一块磁盘区域给操作系统管理。如交换区就是划分一块磁盘区域作为交换区,对于不常用的内存页(操作系统对于内存的管理是基于分页存储,也就是说在操作系统的眼里,内存是一个一个的内存页),操作系统会将其存入磁盘,待使用时,在进行读取。而磁盘映射则是划分一块硬盘区域交给操作系统管理,并将普通磁盘区域中的文件或设备映射到操作系统管理的特殊区域,这样操作系统就能知道整个文件或设备全部的地址,不需要读取到内存中在进行使用,而是直接根据地址寻找到自己需要的内容。
elasticsearch要求能够进行映射数量最小需要达到262144(页),所以我们需要执行如下命令:
#将vm.max_map_count=262144,通过tee -a命令,追加到/etc/sysctl.conf文件结尾,持久化配置
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
#修改内核参数,修改当前启动状态,不执行重启也可以
sudo sysctl -w vm.max_map_count=262144
4. 修改jvm内存
根据情况而定,我的虚拟机环境,调整为2g。修改/elasticsearch/config/jvm.options配置文件中追加如下内容:
-Xms2g
-Xmx2g
5. 修改文件描述符数量
文件描述符是已打开文件的唯一表示,当进程对文件进行操作时,操作系统会分配给这个文件唯一的文件描述符。
由于Elasticsearch不允许root用户启动,而新建用户默认可以分配的文件描述符只有4096(也就是只能同时读取4096个资源),这对于Elasticsearch是完全不够用的,所以我们需要给新建的用户修改文件描述符数量(Elasticsearch要求最小的文件描述符数量为65535)。
#创建目录,用于存储用户数据
mkdir /elasticsearch/run-user
#创建运行用户elasticsearch,用于运行elasticsearch,elasticsearch不允许root用户运行
sudo useradd -r -d /elasticsearch/run-user/ -s /sbin/nologin elasticsearch
#赋予用户目录权限
sudo chown -R elasticsearch:elasticsearch /elasticsearch
#通过命令向/etc/security/limits.conf文件中追加文件描述符的软硬限制
echo "elasticsearch soft nofile 65535" | sudo tee -a /etc/security/limits.conf
echo "elasticsearch hard nofile 65535" | sudo tee -a /etc/security/limits.conf
如果是systemd启动Elasticsearch,还需要修改systemd的配置文件,这里就不细说了。
6. 启动Elasticsearch集群
完成了以上的准备工作,就可以通过如下命令启动所有节点,开启集群了
#zhi定用户启动elasticsearch
sudo -u elasticsearch /elasticsearch/bin/elasticsearch
#后台启动命令,第一次学习的话推荐前台启动,可以更直观的看见日志信息
nohup sudo -u elasticsearch /elasticsearch/bin/elasticsearch &
通过浏览器访问 任意node_ip:9200/_cluster/health?pretty,可以看到如下集群信息,证明集群启动成功:

Kibana(Elasticsearch可视化界面)部署
1. 进入Kinbana官网下载页面,下载Kinbana
选择和部署的Elasticsearch一样的版本,然后点击DownLoad

右键对应版本,复制下载链接

进入服务器,执行如下命令
cd /
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.25-linux-aarch64.tar.gz
tar -xf /kibana-7.17.25-linux-aarch64.tar.gz
mv ./kibana-7.17.25-linux-aarch64 kibana
2. 修改配置文件
修改kibana.yml文件内容
vim /kibana/config/kibana.yml
#在文件末尾添加如下内容#设置Kibana监听的主机名/IP地址
server.host: "0.0.0.0" # 0.0.0.0 表示允许所有IP地址访问,生产环境可指定特定IP
#Kibana服务端口(默认5601)
server.port: 5601
#elasticsearch集群地址
elasticsearch.hosts: ["http://192.168.166.40:9200","http://192.168.166.41:9200","http://192.168.166.42:9200"]
3. 启动Kibana
Kinbana同样不允许以root用户启动,所以我们要将Kibana的相关文件所属用户和用户组,交给elasticsearch,并由这个用户来启动Kibana,在确保elasticsearch集群启动的前提下,执行如下命令
#更改所属用户用户组
sudo chown -R elasticsearch:elasticsearch /kibana
#启动Kinbana
sudo -u elasticsearch /kibana/bin/kibana
#后台启动命令,第一次学习的话推荐前台启动,可以更直观的看见日志信息
nohup sudo -u elasticsearch /kibana/bin/kibana &
访问ip:5601,看到如下页面证明Kibana启动成功

我可以在Kibana提供的DevTool中执行相关指令

执行 GET /_cluster/health 可以看到如图所示,集群连接成功

相关文章:
Elasticsearch集群和Kibana部署流程
搭建Elasticsearch集群 1. 进入Elasticsearch官网下载页面,下载Elasticsearch 在如下页面选择Elasticsearch版本,点击download按钮,进入下载页面 右键选择自己操作系统对应的版本,复制下载链接 然后通过wget命令下载Elastics…...
丹摩征文活动 | 丹摩智算:大数据治理的智慧引擎与实践探索
丹摩DAMODEL|让AI开发更简单!算力租赁上丹摩! 目录 一、引言 二、大数据治理的挑战与重要性 (一)数据质量问题 (二)数据安全威胁 (三)数据管理复杂性 三、丹摩智算…...
【Django】Clickjacking点击劫持攻击实现和防御措施
Clickjacking点击劫持 1、clickjacking攻击2、clickjacking攻击场景 1、clickjacking攻击 clickjacking攻击又称为点击劫持攻击,是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱使用户点击的手段。 2、clickj…...
Ansys Zemax | 手机镜头设计 - 第 4 部分:用LS-DYNA进行冲击性能分析
该系列文章将讨论智能手机镜头模组设计的挑战,从概念和设计到制造和结构变形分析。本文是四部分系列中的第四部分,它涵盖了相机镜头的显式动态模拟,以及对光学性能的影响。使用Ansys Mechanical和LS-DYNA对相机在地板上的一系列冲击和弹跳过程…...
工具收集 - java-decompiler / jd-gui
工具收集 - java-decompiler / jd-gui 参考资料 用法:拖进来就行了 参考资料 https://github.com/java-decompiler/jd-gui 脚本之家:java反编译工具jd-gui使用详解...
《无线重构世界》射频模组演进
射频前端四大金刚 射频前端由PA、LNA、滤波器、开关“四大金刚” 不同的模块有自己的工艺和性能特点 分层设计 射频前端虽然只由PA、LNA、开关、混频器4个模块构成,但不同模块之间相互连接且相互影响。如果将射频系统当成一个整体来理解,其中的细节和…...
渗透测试---docker容器
声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人一律不承担一切后果 目录 一、Docker的作用与优势 二、docker的核心…...
【go从零单排】Atomic Counters原子计数
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,原子计数器(Atomic Counters)是…...
VSCode中python插件安装后无法调试
问题 VSCode中python插件安装后无法调试,如下,点击调试,VScode中不报错,也没有调试 解决方法 1、查看配置 打开所在路径 2、拷贝 将整个文件夹拷贝到vscode默认路径下 3、问题解决 再次调试,可以正常使用了…...
用react实现radio同时关联proform组件
实现: <ProFormRadio.GroupradioType{button}name{[bodyConfig, format]}label"请求体格式"initialValue{json}options{createTabs}fieldProps{{buttonStyle: solid,wrapperMarginInlineEnd: 20,onChange: e > {let v e.target.value;databaseMod…...
Objective-C 1.0和2.0有什么区别?
Objective-C ObjC比较小众,在1980年左右由Stepstone公司的Brad Cox和Tom Love发明。后来NeXT公司获得ObjC语言使用权,再后来到1996年NeXT被苹果公司收购也变成苹果公司使用,Mac市场占有率本身就不高,ObjC没有太多程序员。在移动互…...
TCP连接如何保障数据传输安全
TCP连接保障数据传输安全主要通过以下几个机制实现: 1、建立连接:TCP通过三次握手过程建立连接,确保通信双方实体真实存在,为后续的可靠数据传输打下基础。 2、序号机制:TCP为每个传输的数据包分配一个序号ÿ…...
【论文复现】ChatGPT多模态命名实体识别
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ChatGPT ChatGPT辅助细化知识增强!1. 研究背景2. 模型结构和代码3. 任务流程第一阶段:辅助精炼知识启发式生成第二阶段…...
管理 Elasticsearch 变得更容易了,非常容易!
作者:来自 Elastic Ken Exner Elasticsearch 用户,我们听到了你的心声。管理 Elasticsearch 有时会变得很复杂,面临的挑战包括性能调整、问题检测和资源优化。我们一直致力于简化你的体验。今天,我们宣布了自收购 Opster 以来的一…...
SynchronousQueueworkQueue.offer() 和 poll() 方法的超时控制及线程池的讨论
2024.11.12 11:26 问:workQueue.offer(command) 这里 workQueue.poll(keepAlive, TimeUnit.NANOSECONDS) : 这里的 workQueue.offer(command) 没有超时时间控制? Claude 3.5 Haiku 非常好的问题!我来详细解释 offer() 和 poll() 方法的区别…...
自动驾驶---“火热的”时空联合规划
1 背景 早期的不少规划算法都是横纵分离的(比如Apollo),先求解path之后,依赖path的结果再进行speed的求解。这种横纵解耦的规划方式具有以下特点: 相对较为简单,计算量通常较小,容易实现实时性要求。但是由于分别规划横向和纵向运动,可能会忽略两者之间的耦合关系,导致…...
命令行工具进阶指南
🚀 命令行工具进阶指南:Git、Shell与效率工具的进阶之路 掌握命令行工具,让你的开发效率突飞猛进。本文将深入探讨 Git 高级技巧、Shell 脚本自动化以及各种效率倍增的 CLI 工具。 📑 目录 Git 高级技巧与工作流Shell 脚本自动化…...
扫雷游戏代码分享(c基础)
hi , I am 36. 代码来之不易👍👍👍 创建两个.c 一个.h 1:test.c #include"game.h"void game() {//创建数组char mine[ROWS][COLS] { 0 };char show[ROWS][COLS] { 0 };char temp[ROWS][COLS] { 0 };//初始化数…...
基于vue框架的的社区居民服务管理系统8w86o(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:居民,楼房信息,报修信息,缴费信息,维修进度 开题报告内容 基于Vue框架的社区居民服务管理系统开题报告 一、研究背景与意义 随着城市化进程的加速,社区居民数量激增,社区管理面临着前所未有的挑战。传统的社区…...
一分钟快速熟悉makedown
Markdown 是一种轻量级标记语言,广泛用于编写文档、撰写博客、创建 README 文件等。它的语法简单易学,能够快速生成格式化的文本。以下是 Markdown 的一些常用语法和示例: 1. 标题 Markdown 支持六级标题,使用 # 符号表示。 # …...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
用鸿蒙HarmonyOS5实现国际象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...
