ELK之路第一步——Elasticsearch集群的搭建以及踩坑记录

elasticSearch集群

  • 前言
  • 一、架构
  • 二、下载
  • 三、虚拟机相关设置
    • 3.1 创建es用户
    • 3.2 为建es用户赋权sudo
    • 3.3 更换es目录所属用户
  • 四、Elasticsearch配置文件修改
    • 4.1 修改elasticsearch.yml
    • 4.2 修改jvm.options
    • 4.3 修改jdk路径
  • 五、启动
  • 六、启动报错
  • 七、可视化界面cerebro

前言

Elk(Elasticsearch, Logstash, Kibana),一套分布式日志收集、存储和展示方案。
本来满怀信心开始学习这个系列,但是发现它并没有那么简单,所以打算从地基开始,一步步盖楼,从而达到目的,本文是ELK系列的第一篇。因为jdk版本的原因,本文Elasticsearch版本为:7.3.0,需要jdk11

一、架构

我打算用三台虚拟机来实现集群,一台master,两台数据节点。IP和Node名字分别为:
172.16.72.130 node-1
172.16.72.133 node-2
172.16.72.134 node-3

PS:接下来的操作,三台虚拟机操作都是一样的,我拿一台举例,其他两台照着做就行

二、下载

选择一个位置下载,我这里创建的是/usr/local/es目录

  • 去官网下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch,需要梯子,而且速度有点慢
  • 第二个就是选择国内镜像,我这里选华为的
wget https://mirrors.huaweicloud.com/elasticsearch/7.3.0/elasticsearch-7.3.0-linux-x86_64.tar.gz
wget https://mirrors.huaweicloud.com/elasticsearch/7.3.0/elasticsearch-7.3.0-linux-x86_64.tar.gz.sha512

解压

tar -zxvf elasticsearch-7.3.0-linux-x86_64.tar.gz

三、虚拟机相关设置

3.1 创建es用户

elasticSearch不允许使用root用户启动,不然会报错

用root用户执行:

//创建es用户
useradd es
//为es用户设置密码,这很重要
passwd es es

3.2 为建es用户赋权sudo

如果没有sudo命令的,安装:yum install sudo -y
root用户执行

vim etc/sudoers

打开是这样的,我截取了部分,找到root ALL=(ALL) ALL这一行,跟在它下面 复制一行,添加
es ALL=(ALL) ALL,其中es就是我们3.1新建的用户名。

## Next comes the main part: which users can run what software on 
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
es    ALL=(ALL)     ALL

3.3 更换es目录所属用户

cd到解压目录

/usr/local/es/elasticsearch-7.3.0

递归更改elasticsearch-7.3.0下所有文件所属为es

chown -R es /usr/local/es/elasticsearch-7.3.0

在这里插入图片描述

四、Elasticsearch配置文件修改

本小节所有操作都用root用户,当然也可以切换到es,但是这样每个操作都要加sudo非常麻烦,我们启动的时候再切换用户就好。

4.1 修改elasticsearch.yml

进入config目录,先备份以前的

cp elasticsearch.yml elasticsearch.yml.bak

编辑

vim elasticsearch.yml

因为我们是三台集群,为了方便,我就把三台机器的配置全部放在这一起了,大家后面分开复制各自的就行了。
重点讲一下:http.port是你访问网页的时候的端口,transport.tcp.port是节点通信间的端口,如果你在一台机器上部署两个节点,记得端口不能一样,下面discovery.seed_hosts也要用节点通信端口。

# node-1
cluster.name: elk-cluster
node.name: node-1
node.master: true
node.data: false
node.ingest: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["172.16.72.130:9300","172.16.72.133:9300","172.16.72.134:9300"]
cluster.initial_master_nodes: ["node-1"]#node-2
cluster.name: elk-cluster
node.name: node-2
node.master: true
node.data: true
node.ingest: false
network.host: 0.0.0.0
##节点间通信端口
http.port: 9300
transport.tcp.port: 
discovery.seed_hosts: ["172.16.72.130:9300","172.16.72.133:9300","172.16.72.134:9300"]#node-3
cluster.name: elk-cluster
node.name: node-3
node.master: true
node.data: true
node.ingest: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["172.16.72.130:9300","172.16.72.133:9300","172.16.72.134:9300"]

4.2 修改jvm.options

  1. 修改启动内存:

    vim jvm.options
    

    这里主要修改启动内存,默认是4g,我这里改成256m,这个根据你自己服务器硬件来定
    -Xms256m
    -Xmx256m

  2. 修改gc,在GC configuration这一行下面
    修改为G1GC,因为我用的jdk11。

    -XX:+UseG1GC
    

    不修改会报错:
    OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

4.3 修改jdk路径

Elasticsearch是自带jdk的,但是大多数,我们的开发环境中已经有了jdk,我们cd到bin目录下

vim elasticsearch-env

来看看这个是怎么判断es是怎么判定自带的jdk和我们自己的jdk的

# now set the classpath
ES_CLASSPATH="$ES_HOME/lib/*"# now set the path to java
if [ ! -z "$JAVA_HOME" ]; thenJAVA="$JAVA_HOME/bin/java"
elseif [ "$(uname -s)" = "Darwin" ]; then# OSX has a different structureJAVA="$ES_HOME/jdk/Contents/Home/bin/java"elseJAVA="$ES_HOME/jdk/bin/java"fi
fi

通过脚本得知,es会先去找我们系统的jdk,如果没找到,就会用自己的jdk路径,也就是$ES_HOME下面的
修改为:

 if [ "$(uname -s)" = "Darwin" ]; then# macOS has a different structureJAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"elseJAVA="$ES_HOME/jdk/bin/java"fiJAVA_TYPE="bundled jdk"

如果上面办法不行,用下面这个办法,修改bin下的elasticsearch文件,在第二行位置添加如下内容:
JAVA_HOME就是你jdk的位置。

export JAVA_HOME=/***
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar

五、启动

1.切换用户

su es

2.开放端口

# 放行9200端口和9300端口,不放行9300端口,节点间无法通信,集群还是搭建不起来
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload

2.cd到bin目录下,后台启动

./elasticsearch -d

3.浏览器访问
http://172.16.72.130:9200/
我访问了两个,可以看到集群已经搭建好了
在这里插入图片描述
在这里插入图片描述

六、启动报错

  1. No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
    你没有切换用户,用root启动的,然后切换到es再启动就会报错,因为用root启动将文件的所属权变了,你需要重新执行chown来更改为es
  2. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    echo "vm.max_map_count=262144" > /etc/sysctl.conf
    sysctl -p
    
  3. max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    sudo vim /etc/security/limits.conf
    # 加入以下内容
    * soft nofile 300000
    * hard nofile 300000
    * soft nproc 102400
    * soft memlock unlimited
    * hard memlock unlimited
    
  4. Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    你用root用户启动了,切换为es,执行 su es
  5. ElasticSearch–warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
    或者
    warning: ignoring JAVA_HOME=C:\Program Files\Java\jdk1.8.0_191; using bundled JDK
    4.3节提到的,es自带jdk和本身jdk冲突的问题,解决了就不会报错了
  6. 一些权限问题
    记得用chown切换用户,如果还是不行 用chmod 755 来赋权,特别是日志问价你的读写权
  7. with the same id but is a different node instance];
    这是你用一台机器搭建两个节点的时候,copy包的时候导致重复了,建议保留一个节点的目录,另一个重新解压

七、可视化界面cerebro

es的集群肯定需要一个可视化界面来管控,我这里用的是cerebro,当然你也可以用Elasticsearch-head,不过Elasticsearch-head太老了,界面又难看,这个你随意。

  1. 进入GitHub官网:https://github.com/lmenezes/cerebro/releases,选择最新版本的v0.9.4,cerebro也好久没更新了,不过能用就行。
  2. 解压后启动
    端口和ip改成自己的,默认端口是9000,记得去防火墙开放端口
bin/cerebro -Dhttp.port=1234 -Dhttp.address=192.168.182.110
  1. 浏览器访问
    http://192.168.182.110:1234/
  2. 连接我们的主节点,就是上面部署的node1节点。
    在这里插入图片描述

可以看到我们三个节点都是OK了的
在这里插入图片描述

后面本人还要深入研究Elasticsearch,可能会对本文做内容的补充,也会单独开一篇文章讲Elasticsearch的使用,大家多多关注哦。

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

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

相关文章

二进制方式部署k8s集群

目标任务: 1、Kubernetes集群部署架构规划 2、部署Etcd数据库集群 3、在Node节点安装Docker 4、部署Flannel网络插件 5、在Master节点部署组件(api-server,schduler,controller-manager) 6、在Node节点部署组件(kubelet,kube-proxy) 7、查看集群状态 8、运行⼀个测…

【有啥问啥】DINO:一种改进的去噪锚框的端到端目标检测器

DINO:一种改进的去噪锚框的端到端目标检测器 在目标检测领域,DINO(DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection)是一种创新的端到端目标检测模型,旨在解决传统目标检测算法中的一些关…

基于Multisim的音频放大电路设计与仿真

基本设计要求:设计并仿真实现一个音频功率放大器。功率放大器的电源电压为+5V(电路其他部分的电源电压不限),负载为8Ω电阻。具体要求如下:1)3dB通频带为300~3400Hz,输出…

AI智能爆发:从自动驾驶到智能家居,科技如何改变我们的日常?

内容概要 在这个瞬息万变的时代,AI智能以其惊人的速度崛起,正在以前所未有的方式改变我们的生活。从自动驾驶到智能家居,这一系列创新为我们的日常生活注入了新的活力和便利。从交通安全到居家体验,这些科技不仅仅是工具&#xf…

【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程

引言 Visual Studio 是一个面向 .NET 和 C 开发人员的综合性 Windows 版 IDE,可用于构建 Web、云、桌面、移动应用、服务和游戏。 安装步骤 访问 Visual Studio 的官方下载页面: https://visualstudio.microsoft.com/zh-hans/downloads/运行已下载的 V…

【数据结构与算法】第4课—数据结构单链表OJ练习题

文章目录 1. 移除链表元素2. 反转链表3. 找链表中间节点4. 合并两个有序的链表5. 分割链表6. 链表的回文结构7. 相交链表8. 判断环形链表9. 返回环形链表的入环节点10. 随机链表的复制 1. 移除链表元素 题目 思路 #include <stdio.h> #include <stdlib.h> #include…

【功能安全】技术安全概念TSC

目录 01 TSC定义 02 TSC注意事项 03 TSC案例 01 TSC定义 所处位置 TSC:Technical safety concept技术安全概念 TSR:Technical safety requirement技术安全需求 在系统开发阶段属于安全活动4-6 系统层产品开发示例 TSC目的

传输层UDP

再谈端口号 端口号&#xff1a;标识了主机上进行通信的不同的应用程序 在TCP/IP 协议中我们用“源IP”"源端口号" “目的IP”“目的端口号” “协议号”五元组来标识一个通信 用netstat -n 查看 查看网络信息&#xff0c;我们有两种命令查看网络通信1.用netsta…

力扣刷题(sql)--零散知识点(1)

通过一段时间的刷题&#xff0c;感觉自己的sql能力逐渐上去&#xff0c;所以不会像前三道题一样讲那么详细了&#xff0c;这里主要会讲到一些特殊的知识点和方法。另外&#xff0c;我的建议是做完一个题有好的想法赶紧记录下来&#xff0c;不要想着最后汇总&#xff0c;不然会懒…

通过cv库智能切片 把不同的分镜切出来 自媒体抖音快手混剪

用 手机自动化脚本&#xff0c;从自媒体上获取视频&#xff0c;一个商品对应几百个视频&#xff0c;我们把这几百个视频下载下来&#xff0c;进行分镜 视频切片&#xff0c;从自媒体上下载视频&#xff0c;通过cv库用直方图识别每个镜头进行切片。 下载多个图片进行视频的伪原…

香橙派5(RK3588)使用npu加速yolov5推理的部署过程

香橙派5使用npu加速yolov5推理的部署过程 硬件环境 部署过程 模型训练(x86主机) 在带nvidia显卡(最好)的主机上进行yolo的配置与训练, 获取最终的best.pt模型文件, 详见另一篇文档 模型转换(x86主机) 下载airockchip提供的yolov5(从pt到onnx) 一定要下这个版本的yolov5, …

sass软件登录设定——未来之窗行业应用跨平台架构

一、saas软件开发中登录设计 以为大公司为参考思迅在登录时候需要录入商户号 二、独立商户商户好处 1.每个店铺的账户是独立的&#xff0c;保护商户职员账户信息的相对安全。 2.不同店铺可以试用相同用户名

LDR6020:为VR串流线方案注入高效能与稳定性

随着虚拟现实&#xff08;VR&#xff09;技术的不断发展&#xff0c;VR设备已经成为连接用户与沉浸式体验的重要桥梁。而VR串流线&#xff0c;作为这一技术的重要组成部分&#xff0c;更是承担着传输高质量图像、音频及数据的重任。在这个过程中&#xff0c;一款功能强大、性能…

【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构

从零开始认识IP协议 1 网络层协议1.1 初步认识IP协议1.2 初步理解IP地址 2 IP协议报头3 初步理解网段划分 1 网络层协议 1.1 初步认识IP协议 我们已经熟悉了传输层中的UDP和TCP协议&#xff0c;接下来我们来接触网络层的协议&#xff1a; 网络层在计算机网络中的意义主要体现…

寻找大自然的颜色

走在停停&#xff0c;停停走走&#xff0c;恍惚间一天过去了&#xff0c;转瞬间一年过去了&#xff0c;身边的一切在变化又不在变化&#xff0c;生活是自己的又不是自己的。 今天是个特殊的日子&#xff0c;其实前几天对我而言就算特殊的日子了&#xff0c;一个心里暗暗等待着却…

Maven项目管理工具-初始+环境配置

1. Maven的概念 1.1. 什么是Maven Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。 理想的项目构建&#xff1a;高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准化的流程 maven能够自动下载依…

python项目实战——多线程爬虫

多线程爬虫 文章目录 多线程爬虫概念并行并发Python多线程用途threading模块小知识----函数体内pass的用处1. **占位符**2. **控制结构**3. **定义接口**总结 代码解读单线程--串行多线程--并行查看当前程序的线程让主函数等待子线程结束&#xff0c;再运行---.join()join()方法…

C# 串口通信教程

串口通信&#xff08;Serial Communication&#xff09;是一种用于设备之间数据传输的常见方法&#xff0c;通常用于与外部硬件设备&#xff08;如传感器、机器人、微控制器&#xff09;进行通信。在 C# 中&#xff0c;System.IO.Ports 命名空间提供了与串口设备交互的功能&…

【Linux | 网络I/O模型】五种网络I/O模型详解

1、数据传输过程 在 Linux 系统中&#xff0c;数据传输是通过 I/O 操作来实现的。I/O 操作是指数据从应用程序到内核&#xff0c;再到硬件设备&#xff08;如磁盘、网络接口&#xff09;的过程。 操作系统为了保护自己&#xff0c;设计了用户态、内核态两个状态。应用程序一般工…

数据库的诗篇:深入探索 MySQL 表操作的艺术与哲学

文章目录 前言&#x1f338;一、创建表——搭建数据存储的基础框架1.1 基本语法1.2 创建表的实际案例解释&#xff1a; 1.3 表设计的最佳实践 &#x1f338;二、查看表结构——快速了解数据库设计2.1 使用 DESC 命令解释&#xff1a; 2.2 使用 SHOW COLUMNS 命令2.3 使用 SHOW …