Elasticsearch集群部署,配置head监控插件

news2024/12/24 10:09:18

Elasticsearch是一个开源搜索引擎,基于Lucene搜索库构建,被广泛应用于全文搜索、地理位置搜索、日志处理、商业分析等领域。它采用分布式架构,可以处理大规模数据集和支持高并发访问。Elasticsearch提供了一个简单而强大的API,可以轻松地将数据存储和检索,支持实时搜索和聚合分析,可用于构建各种类型的应用程序。Elasticsearch还提供了许多有用的插件和工具,例如Kibana、Logstash和Beats等,可以帮助用户更好地管理和可视化数据。

集群部署流程:

安装软件主机名IP地址系统版本配置
Elasticsearchelk-1192.168.231.245centos7.5.18043核4G
Elasticsearches1192.168.231.246centos7.5.18042核4G
Elasticsearches2192.168.231.247centos7.5.18042核4G

- 软件版本:elasticsearch-7.13.2.tar.gz
- 示例节点:10.3.145.14

一,安装部署jdk

可以自行安装,es安装包中自带了jdk

二,安装配置ES

1.本地域名解析

三台机器都做相同的操作

[root@elk-1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.36.192.100 package.qf.com
192.168.231.245 elk-1
192.168.231.246 es1
192.168.231.247 es2

2.创建运行ES的普通用户设置密码

三台机器做相同的操作

[root@elk-1 ~]# useradd es
[root@elk-1 ~]# echo "123" | passwd --stdin "es"

3.上传包,解压,配置配置文件

三台机器做相同的操作

本文章配备的实验用到的包,解压用即可

上传到root
[root@elk-1 ~]# tar zxvf  elasticsearch-7.13.2-linux-x86_64.tar.gz -C /usr/local/

[root@elk-1 ~]# cd /usr/local
[root@elk-1 local]# mv elasticsearch-7.13.2-linux-x86_64   es   #改名
修改配置文件
[root@elk-1 local]# cd es
[root@elk-1 es]# cd config/
[root@elk-1 config]# cat elasticsearch.yml


cluster.name: cloud2304
cluster.initial_master_nodes: ["192.168.231.245","192.168.231.246","192.168.231.247"] 
node.name: elk01
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.231.246","192.168.231.247"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"
es1的配置文件
[root@es1 ~]# cat /usr/local/es/config/elasticsearch.yml

cluster.name: cloud2304
cluster.initial_master_nodes: ["192.168.231.245","192.168.231.246","192.168.231.247"] 
node.name: elk02
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.231.245","192.168.231.247"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"
es2的配置文件
[root@es2 ~]# cat /usr/local/es/config/elasticsearch.yml

cluster.name: cloud2304
cluster.initial_master_nodes: ["192.168.231.245","192.168.231.246","192.168.231.247"] 
node.name: elk03
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.231.246","192.168.231.245"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"

提醒:

1. elasticsearch.yml 配置文件内删除多余的空格,对空格要求较严格

2. 单节点模式下,将discovery开头的行注释

3. cluster.name 是集群名称,实验三个名字相同

4. cluster.initial_master_nodes  集群的IP,集群有的ip都写入 用逗号隔开

5. node.name  是节点名称 实验为了观察集群,因此设置为递增的名字

6. discovery.seed_hosts    提供其他 Elasticsearch 服务节点的单点广播发现功能,这里填写除了本机的其他ip

4.配置项含义

cluster.name    集群名称,各节点配成相同的集群名称。
cluster.initial_master_nodes 集群ip,默认为空,如果为空则加入现有集群,第一次需配置
node.name       节点名称,各节点配置不同。
node.master     指示某个节点是否符合成为主节点的条件。
node.data       指示节点是否为数据节点。数据节点包含并管理索引的一部分。
path.data       数据存储目录。
path.logs       日志存储目录。
bootstrap.memory_lock       内存锁定,是否禁用交换,测试环境建议改为false。
bootstrap.system_call_filter    系统调用过滤器。
network.host    绑定节点IP。
http.port       rest api端口。
discovery.seed_hosts    提供其他 Elasticsearch 服务节点的单点广播发现功能,这里填写除了本机的其他ip
discovery.zen.minimum_master_nodes  集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。
discovery.zen.ping_timeout      节点在发现过程中的等待时间。
discovery.zen.fd.ping_retries        节点发现重试次数。
http.cors.enabled               是否允许跨源 REST 请求,用于允许head插件访问ES。
http.cors.allow-origin              允许的源地址。

5. 设置JVM堆大小,7.0默认是4G

三台机器做相同的步骤

[root@elk-1 ~]# sed -i 's/## -Xms4g/-Xms4g/' /usr/local/es/config/jvm.options  
[root@elk-1 ~]# sed -i 's/## -Xmx4g/-Xmx4g/' /usr/local/es/config/jvm.options
注意:

 确保堆内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存大小。 如果系统内存足够大,将堆内存最大和最小值设置为31G,因为有一个32G性能瓶颈问题。 堆内存大小不要超过系统内存的50%

6. 创建ES的数据目录以及日志存储目录

三台机器做相同的步骤

[root@elk-1 config]# mkdir /data/elasticsearch/{data,logs} -p

7. 修改安装目录以及存储目录的权限

三台机器做相同的步骤

[root@elk-1 ~]# chown -R es.es /data/elasticsearch
[root@elk-1 ~]# chown -R es.es /usr/local/es

三,系统优化

1.增加最大文件的打开数

三台机器做相同的操作

永久生效的办法

[root@elk-1 ~]# echo "* soft nofile 65536" >> /etc/security/limits.conf

2.增加最大进程数

三台机器做相同的操作

[root@elk-1 ~]# echo "* soft nproc 65536" >> /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
更多的参数调整可以直接用这个

3.增加最大的内存映射数

三个机器相同的操作

[root@elk-1 ~]# echo "vm.max_map_count=262144" >> /etc/sysctl.conf

4. 添加elasticsearch用户拥有的客串建文件描述的权限,需要65536

三个机器相同的操作

vim   /etc/security/limits.conf

在最后添加
* hard nofile 65536
* hard nofile 65536

四,启动ES

1.切换普通用户启动es

三台机器相同的操作

[root@elk-1 ~]#  su es

[es@elk-1 root]$ /usr/local/es/bin/elasticsearch & 
屏幕会产生大量数据,对不同计算机性能可能启动时间不同,放置后台启动

观察端口,如果有9200 那么就可以成功访问
[es@es2 root]$ ss -nplt | grep 9
LISTEN     0      128       [::]:9200                  [::]:*                   users:(("java",pid=1465,fd=279))
LISTEN     0      128       [::]:9300                  [::]:*                   users:(("java",pid=1465,fd=277))

浏览器访问集群

访问: http://192.168.231.245:9200 

安装部署head监控插件(只在第一台es部署)

1. 安装node

有包直接上传使用

rz  上传到/root

解压
[root@elk-1 ~]# tar -zxf node-v10.0.0-linux-x64.tar.gz –C /usr/local

改名 
[root@elk-1 ~]# cd /usr/local
[root@elk-1 local]#  mv  node-v10.0.0-linux-x64  node

编辑环境变量
vim /etc/profile.d/node.sh

NODE_HOME=/usr/local/node
PATH=$PATH:$NODE_HOME/bin

重载变量
[root@elk-1 ~]#  source /etc/profile.d/node.sh

检查node版本号
[root@elk-1 ~]#  node --version

2. 下载head插件

有包直接上传到/root
rz   elasticsearch-head-master.zip

解压 unzip
[root@elk-1 ~]# unzip –d /usr/local elasticsearch-head-master.zip

3. 安装grunt

[root@elk-1 ~]# cd /usr/local/elasticsearch-head-master

安装grunt-cli
[root@elk-1elasticsearch-head-master]# npm install -g grunt-cli
[root@elk-1 elasticsearch-head-master]# grunt -version   查看grunt版本
grunt-cli v1.4.3

安装grunt-cil出错

解决办法在执行一次即可

4. 修改head源码

[root@elk-1 ~]#vi /usr/local/elasticsearch-head-master/Gruntfile.js  +95 

添加hostname,注意在上一行末尾添加逗号,hostname 不需要添加逗号

[root@elk-1 ~]# vim /usr/local/elasticsearch-head-master/_site/app.js +4373  

原本是http://localhost:9200 ,如果head和ES不在同一个节点,注意修改成ES的IP地址,写成elk-1的IP地址

5. 下载head必要的文件

有包直接上传到/root即可
rz  phantomjs-2.1.1-linux-x86_64.tar.bz2

下载bzip2
[root@elk-1 ~]# yum -y install bzip2

创建存放目录
[root@elk-1 ~]# mkdir /tmp/phantomjs

将文件移动过去即可,不需要解压
[root@elk-1 ~]# mv phantomjs-2.1.1-linux-x86_64.tar.bz2 /tmp/phantomjs/

更改权限
[root@elk-1 ~]# chmod 777 /tmp/phantomjs -R

6. 运行head

[root@elk-1 ~]# cd /usr/local/elasticsearch-head-master/

[root@elk-1 ~]# npm install 

如果报错
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! phantomjs-prebuilt@2.1.16 install: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the phantomjs-prebuilt@2.1.16 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-21T09_49_34_207Z-debug.log

 解决办法

[root@elk-1 ~]#  npm install phantomjs-prebuilt@2.1.16 --ignore-scripts 
 # 具体的版本按照上述报错修改

7. 放入后台运行,查看端口

[root@elk-1 ~]# nohup grunt server &
[root@elk-1 ~]# ss -tnlp

有9100即可访问head

前台运行grunt运行报错

这个错误提示表明在运行grunt server命令时,缺少一些必要的grunt插件。

解决办法

重复步骤,直到所有缺少的grunt插件都被安装。

npm install grunt-contrib-clean --save-dev

成功

8.测试访问

http://192.168.231.245:9100

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

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

相关文章

【JavaEE初阶】线程安全问题及解决方法

目录 一、多线程带来的风险-线程安全 1、观察线程不安全 2、线程安全的概念 3、线程不安全的原因 4、解决之前的线程不安全问题 5、synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使用示例 5.3 Java 标准库中的线程安全类…

修改YOLOv5的模型结构第三弹

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 文章目录 任务任务拆解 开始修改C2模块修改yolo.py修改模型配置文件 模型训练 上次已…

rfc4301- IP 安全架构

1. 引言 1.1. 文档内容摘要 本文档规定了符合IPsec标准的系统的基本架构。它描述了如何为IP层的流量提供一组安全服务,同时适用于IPv4 [Pos81a] 和 IPv6 [DH98] 环境。本文档描述了实现IPsec的系统的要求,这些系统的基本元素以及如何将这些元素结合起来…

第十三章 深度解读预训练与微调迁移,模型冻结与解冻(工具)

一个完整的代码 pythonCopy codeimport torch import torchvision import torchvision.transforms as transforms import torch.nn as nn import torch.optim as optim # 设置设备(CPU或GPU) device torch.device("cuda" if torch.cuda.is_a…

canvas扩展001:利用fabric绘制图形,可以平移,旋转,放缩

canvas实例应用100 专栏提供canvas的基础知识,高级动画,相关应用扩展等信息。 canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重要的帮助。 文章目录 示例…

stm32实现0.96oled图片显示,菜单功能

stm32实现0.96oled图片显示,菜单功能 功能展示简介代码介绍oled.coled.holedfont.h(字库文件)main函数 代码思路讲解 本期内容,我们将学习0.96寸oled的进阶使用,展示图片,实现菜单切换等功能,关…

MySQL日期函数sysdate()与now()的区别,获取当前时间,日期相关函数

select sleep(2) as datetime union all select sysdate() -- sysdate() 返回的时间是当前的系统时间,而 now() 返回的是当前的会话时间。 union all select now() -- 等价于 localtime,localtime(),localtimestamp,localtimestamp(),current_timestamp,curre…

基于鱼鹰算法优化概率神经网络PNN的分类预测 - 附代码

基于鱼鹰算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于鱼鹰算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于鱼鹰优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

程序的编译与链接(详解)

程序的编译与链接 本章内容如下: 1:程序的翻译环境与执行环境的介绍 2:详解程序的翻译环境(编译链接) 2.1预处理阶段干了啥2.2编译阶段干了啥2.3汇编阶段干了啥2.4链接阶段干了啥 3:预处理详解 预定义符号的介绍#define 的介绍(宏与标识符号)#与##的介绍宏与函数…

对象的内部结构

在HotSpot 虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头( Header )、实例数据(Instance Data )和对齐填充( Padding )。 对象头 Mark Word(标记字段&a…

RK3568驱动指南|第八篇 设备树插件-第72章 设备树插件语法和编译实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

[element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案

问题描述 在没有进行任何操作的时候,使用 this.$refs.xxxx 无法获取el-dialog中的内部元素,这个问题会导致很多bug. 官方解释,在open事件回调中进行,但是open()是弹窗打开时候的会调,有可能在此处获取的时候&#xff…

教师授课技巧

一名教师,授课技巧是提高教学效率和质量的关键。以下是几个实用的授课技巧,可以帮你更好的传授知识,激发学习兴趣。 一、做好课前准备 课前准备是授课技巧的重要环节。认真备课,熟悉教材内容,制定教学计划&#xff0c…

redis运维(二十一)redis 的扩展应用 lua(三)

一 redis 的扩展应用 lua redis加载lua脚本文件 ① 调试lua脚本 redis-cli 通过管道 --pipe 快速导入数据到redis中 ② 预加载方式 1、错误方式 2、正确方式 "案例讲解" ③ 一次性加载 执行命令: redis-cli -a 密码 --eval Lua脚本路径 key …

【Docker】Docker与Kubernetes:区别与优势对比

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。   kubernetes,简称K8s&a…

MybatisPlus集成baomidou-dynamic,多数据源配置使用、MybatisPlus分页分组等操作示例

文章目录 pom配置示例代码 pom <dependencies><!--mybatisPlus集成SpringBoot起步依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version>&l…

荆涛演唱歌曲《老板的孤独》:孤独中的坚韧与担当

歌手荆涛演唱的《老板的孤独》不仅是一首歌&#xff0c;更是一种情感的宣泄和表达。歌曲中表达了老板们在面对压力、孤独和困难时&#xff0c;依然坚持、积极向前的坚韧精神。每一句歌词都充满了对生活的深刻理解和感悟&#xff0c;以及对团队、家人的深深牵挂。 一、欣喜时要h…

【Netty专题】Netty调优及网络编程中一些问题补充(面向面试学习)

目录 前言阅读对象阅读导航笔记正文一、如何选择序列化框架1.1 基本介绍1.2 在网络编程中如何选择序列化框架1.3 常用Java序列化框架比较 二、Netty调优2.1 CONNECT_TIMEOUT_MILLIS&#xff1a;客户端连接时间2.2 SO_BACKLOG&#xff1a;最大同时连接数2.3 TCP_NODELAY&#xf…

spring-framework-5.2.25.RELEASE源码环境搭建

环境准备 spring-framework-5.2.25.RELEASEIntelliJ IDEA 2022.3.1java version “11.0.20” 2023-07-18 LTSGradle 5.6.4java version “1.8.0_301” 下载spring-framework-5.2.25.RELEASE源码 git clone https://gitee.com/QQ952051088/spring.git cd spring gradlew buil…

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构)

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,…