热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:ELK===》ELK介绍Elasticsearch单节点部署Elasticsearch集群部署

篇首语:本文由编程笔记#小编为大家整理,主要介绍了ELK===》ELK介绍Elasticsearch单节点部署Elasticsearch集群部署相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了ELK===》ELK介绍Elasticsearch单节点部署Elasticsearch集群部署相关的知识,希望对你有一定的参考价值。






一、什么是ELK?

通俗来讲,ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组 成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称 为 ELK stack,官方域名为 stactic.co,ELK stack 的主要优点有如下几个:


  • 处理方式灵活: elasticsearch 是实时全文索引,具有强大的搜索功能
  • 配置相对简单:elasticsearch 全部使用 JSON 接口,logstash 使用模块配置, kibana 的配置文件部分更简单。
  • 检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百 亿级数据的查询秒级响应。
  • 集群线性扩展:elasticsearch 和 logstash 都可以灵活线性扩展 前端操作绚丽:kibana 的前端设计比较绚丽,而且操作简单

1.什么是Elasticsearch?

是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索 搜索、支持分布式可实现高可用、提供 API 接口,可以处理大规模日志数据,比 如 nginx、Tomcat、系统日志等功能。

在这里插入图片描述


2.什么是 Logstash?

可以通过插件实现日志收集和转发,支持日志过滤,支持普通 log、自定义 json格式的日志解析。

在这里插入图片描述


3.什么是kibana?

主要是通过接口调用 elasticsearch 的数据,并进行前端数据可视化的展现。
在这里插入图片描述


二、Elasticsearch 部署

ELK使用场景:

​ 日志平台:利用elasticsearch的快速检索功能,在大量的数据当中可以快速查询需要的日志。

​ 订单平台:利用elasticsearch的快速检索功能,在大量的订单当中检索我们所需要的订单。

​ 搜索平台:利用elasticsearch的快速检索功能,在大量的数据中检索出我们所需要的数据。


1.部署

一般部署elasticsearch有三种方式:

- rpm包安装
- 源码包安装
- docker安装

官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch

官网其他版本安装包下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch


2.rpm包安装


1)集群规划


2)集群配置

官方推荐集群配置30G。本地使用2核2G


3)系统优化 (两台节点)

#1.关闭selinux
[root@es-01 ~]# setenforce 0
#2.关闭防火墙
[root@es-01 ~]# systemctl disable firewalld
#3.设置时区
[root@es-01 ~]# timedatectl set-timezone Asia/Shanghai
#4.设置程序可以打开的文件数
[root@es-01 ~]# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
#5.重启
reboot

4)下载安装包 (两台节点)

[root@es-01 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-x86_64.rpm
[root@es-02 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-x86_64.rpm

5)安装 (两台节点)

#elasticsearch是依赖于Java
[root@es-01 ~]# yum install java-1.8.0* -y
[root@es-01 ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
#安装elasticsearch
[root@es-01 ~]# yum install elasticsearch-7.12.1-x86_64.rpm -y

6)elastcsearch设置内存锁定(两台节点)

[root@es-01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
LimitAS=infinity
LimitMEMLOCK=infinity #在[service]层LimitAS行下边添加此行内容
[root@es-01 ~]# systemctl daemon-reload

7)修改elasticsearch锁定内存大小

[root@es-01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g #最大锁定内存1g
-Xmx1g #最小锁定内存1g

8)修改elasticsearch的配置文件

#1.主节点配置
[root@es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
[root@es-01 ~]# grep -E '^[^#]' /etc/elasticsearch/elasticsearch.yml
# 设置集群名称
cluster.name: elaina-es
# 设置集群节点名称(节点名称在集群中唯一)
node.name: elaina-node-01
# 设置数据存放目录
path.data: /var/lib/elasticsearch
# 设置日志存放目录
path.logs: /var/log/elasticsearch
# 设置内存锁定
bootstrap.memory_lock: true
# 设置监听的IP
network.host: 0.0.0.0
# 设置监听的端口
http.port: 9200
# 设置主节点
cluster.initial_master_nodes: ["172.16.1.20"]
#2.从节点配置
[root@es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
# 设置集群名称
cluster.name: elaina-es
# 设置集群节点名称(节点名称在集群中唯一)
node.name: elaina-node-02
# 设置数据存放目录
path.data: /var/lib/elasticsearch
# 设置日志存放目录
path.logs: /var/log/elasticsearch
# 设置内存锁定
bootstrap.memory_lock: true
# 设置监听的IP
network.host: 0.0.0.0
# 设置监听的端口
http.port: 9200
# 设置主节点
cluster.initial_master_nodes: ["172.16.1.21"]

9)启动

[root@es-01 ~]# systemctl start elasticsearch.service

在这里插入图片描述


3.源码包安装

# 下载源码包
[root@es-01 ~]# wget https://github.com/elastic/elasticsearch/archive/refs/tags/v7.12.1.tar.gz
# 解压
[root@es-01 ~]# tar -xf v7.12.1.tar.gz -C /usr/local
# elasticsearch是依赖于Java
[root@es-01 /opt]# yum install java-1.8.0* -y
[root@es-01 ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
[root@es-01 /opt]# yum install elasticsearch-7.12.1-x86_64.rpm -y

4.docker安装 (主节点安装)

docker run -p 9200:9200 -p 9300:9300 -e "cluster.name=xxx" docker.elastic.co/elasticsearch/elasticsearch:7.12.1

5.安装集群head插件 (主节点安装)

head插件主要是图形化elastic search


1)安装docker (主节点安装)

yum remove docker docker-common docker-selinux docker-engine -y
sudo yum install -y gcc gcc-c++ yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
yum makecache
yum install docker-ce -y
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-&#39;EOF&#39;
{
"registry-mirrors": ["https://xj6uu5rz.mirror.aliyuncs.com"]
}
EOF
# 启动docker
systemctl start --now docker

2&#xff09;拉取镜像并后台运行 (主节点)

[root&#64;es-01 ~]# docker run -d -p 9100:9100 alvinos/elasticsearch-head
e9c8f62358c1ddae141ab4eff64d19d3cce1b4944a4ed75d4907541f6a0f33e6

在这里插入图片描述


2&#xff09;设置elasticsearch跨域访问 &#xff08;两节点&#xff09;

[root&#64;es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
[root&#64;es-01 ~]# systemctl restart elasticsearch.service

在这里插入图片描述


6.部署elasticsearch主从

elasticsearch是主从数据节点分离的&#xff0c;按照节点还可以分为热数据节点和冷数据节点。


1&#xff09;部署主节点

参考上述4、5.主节点操作

#修改配置文件
[root&#64;es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.initial_master_nodes: ["172.16.1.20"] #在此行下添加以下内容
# # 设置选举策略
discovery.zen.minimum_master_nodes: 2
# # 设置节点
discovery.zen.ping.unicast.hosts: ["172.16.1.20","172.16.1.21"]
# # 设置是否的主节点
node.master: true
#重启服务
[root&#64;es-01 ~]# systemctl restart elasticsearch.service

2&#xff09;部署从节点

从节点系统优化与主节点一样

#修改从节点配置文件
[root&#64;es-02 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.initial_master_nodes: ["172.16.1.20"] #在此行下添加以下内容
# # 设置选举策略
discovery.zen.minimum_master_nodes: 2
# # 设置节点
discovery.zen.ping.unicast.hosts: ["172.16.1.20","172.16.1.21"]
# # 设置是否的主节点
node.master: false
#重启服务
[root&#64;es-02 ~]# systemctl restart elasticsearch.service

在这里插入图片描述

#故障报错解决&#xff1a;
做到这一步极其容易出现数据不一致的问题&#xff0c;反应到登录网页上就上明明好像能正常访问&#xff0c;其实它的的UUID是错误的。为此可以先删除/var/lib/elasticsearch/*下面的东西&#xff0c;然后再重启elasticsearch。这样就可以了。
[root&#64;es-02 ~]# systemctl stop elasticsearch.service
[root&#64;es-02 ~]# rm -rf /var/lib/elasticsearch/*
[root&#64;es-02 ~]# tail -f /var/log/elasticsearch/elaina-es.log #实时监控集群日志发现问题
[root&#64;es-02 ~]# systemctl start elasticsearch.service #新窗口执行启动命令

三、测试集群性能

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


1.elasticsearch监控

通过浏览器访问:http://192.168.15.20:9200/_cluster/health?pretty&#61;true, 例如对 status 进行分析&#xff0c;如果等于green(绿色)就是运行在正常&#xff0c;等于yellow(黄色)表示副本分片丢失&#xff0c;red(红色)表示主分片丢失。
在这里插入图片描述






推荐阅读
  • 本书《.NET Core 2.* 开发者指南》是面向开发者的全面学习与实践手册,涵盖了从基础到高级的各个层面。书中详细解析了 .NET Core 的核心概念,包括如何创建 .NET Core 网站,并通过视频教程直观展示操作过程。此外,还深入探讨了 Startup 类的作用、项目目录结构的组织方式以及如何在应用中使用静态文件等内容。对于希望深入了解 .NET Core 架构和开发技巧的开发者来说,本书提供了丰富的实践案例和详尽的技术指导。 ... [详细]
  • 深入解析Django CBV模型的源码运行机制
    本文详细探讨了Django CBV(Class-Based Views)模型的源码运行流程,通过具体的示例代码和详细的解释,帮助读者更好地理解和应用这一强大的功能。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • SpringDataJPA是SpringBoot体系中约定优于配置的最佳实现,大大简化了项目中数据库的操作。从本课开始将会从JPA的由来开始讲解,什么是JPA、SpringBoot ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
author-avatar
儿双全id
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有