ELK日志分析平台(elasticsearch)

elasticsearch简介

Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。
Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎:

  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

基础模块

cluster:管理集群状态,维护集群层面的配置信息。
alloction:封装了分片分配相关的功能和策略。
discovery:发现集群中的节点,以及选举主节点。
gateway:对收到master广播下来的集群状态数据的持久化存储。
indices:管理全局级的索引设置。
http:允许通过JSON over HTTP的方式访问ES的API。
transport:用于集群内节点之间的内部通信。
engine:封装了对Lucene的操作及translog的调用。

elasticsearch应用场景

信息检索

日志分析

业务数据分析

数据库加速

运维指标监控

官网地址:官网:

elasticsearch安装与配置

软件下载:https://elasticsearch.cn/download/

安装软件

[root@server1 ~]# rpm -ivh elasticsearch-7.6.1-x86_64.rpm

在这里插入图片描述

配置

修改配置文件:

[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改系统限制

[root@server1 ~]# vim /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch      -    nofile  65536
elasticsearch      -    nproc   4096

在这里插入图片描述
修改systemd启动文件

[root@server1 ~]# vim /usr/lib/systemd/system/elasticsearch.service
[Service]		#在service语句块下添加
LimitMEMLOCK=infinity

禁用交换分区:

[root@server1 ~]# swapoff -a
[root@server1 ~]# vim /etc/fstab

开启服务:

[root@server1 ~]# systemctl daemon-reload
[root@server1 ~]# systemctl start elasticsearch.service

需要配置三台主机,server1 ,server2,server3,server1作为master,可以直接将配置文件传给其他两个节点,仅修改主机名即可
在这里插入图片描述

elasticsearch插件安装

下载elasticsearch-head插件

wget https://github.com/mobz/elasticsearch-head/archive/master.zip
get elasticsearch-head-master.zip
[root@server1 ~]# yum install unzip.x86_64 -y
[root@server1 ~]# unzip elasticsearch-head-master.zip
[root@server1 ~]# cd elasticsearch-head-master/
[root@server1 elasticsearch-head-master]# yum install fontconfig
[root@server1 elasticsearch-head-master]# cnpm install
[root@server1 elasticsearch-head-master]# cnpm run start &
tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/
cd bin/
mv phantomjs /usr/local/bin/
yum install fontconfig

head插件本质上是一个nodejs的工程,因此需要安装node

get nodejs-9.11.2-1nodesource.x86_64.rpm
[root@server1 ~]# rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm
[root@server1 ~]# node -v
[root@server1 ~]# npm -v

更换npm源安装

[root@server1 ~]# cd elasticsearch-head-master/
[root@server1 ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org

启动head插件

[root@server1 elasticsearch-head-master]# cnpm run start &

修改ES跨域主持

三个节点都需要加上

[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true    # 是否支持跨域
http.cors.allow-origin: "*"     # *表示支持所有域名
[root@server1 ~]# systemctl restart elasticsearch.service

在这里插入图片描述
访问head插件服务
在这里插入图片描述
创建索引
在这里插入图片描述
查看ES状态
在这里插入图片描述
灰色标识没有副本
黄色代表没有主分片丢失

elasticsearch节点角色

Master:
• 主要负责集群中索引的创建、删除以及数据的Rebalance等操作。
Master不负责数据的索引和检索,所以负载较轻。当Master节点失联或
者挂掉的时候,ES集群会自动从其他Master节点选举出一个Leader。
Data Node:
• 主要负责集群中数据的索引和检索,一般压力比较大。
Coordinating Node:
• 原来的Client node的,主要功能是来分发请求和合并结果的。所有节点
默认就是Coordinating node,且不能关闭该属性。
Ingest Node:
• 专门对索引的文档做预处理

elasticsearch节点优化

在生产环境下,如果不修改elasticsearch节点的角色信息,在高数
据量,高并发的场景下集群容易出现脑裂等问题。
• 默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,
也都存储数据,还可以提供查询服务。
• 节点角色是由以下属性控制:
• node.master: false|true
• node.data: true|false
• node.ingest: true|false
• search.remote.connect: true|false
默认情况下这些属性的值都是true。

node.master:这个属性表示节点是否具有成为主节点的资格
注意:此属性的值为true,并不意味着这个节点就是主节点。
因为真正的主节点,是由多个具有主节点资格的节点进行选
举产生的。
• node.data:这个属性表示节点是否存储数据。
• node.ingest: 是否对文档进行预处理。
• search.remote.connect:是否禁用跨集群查询

第一种组合:(默认)
• node.master: true
• node.data: true
• node.ingest: true
• search.remote.connect: true
这种组合表示这个节点即有成为主节点的资格,又存储数据。
如果某个节点被选举成为了真正的主节点,那么他还要存储数据,这样对于
这个节点的压力就比较大了。
测试环境下这样做没问题,但实际工作中不建议这样设置。

第二种组合:(Data node)
• node.master: false
• node.data: true
• node.ingest: false
• search.remote.connect: false
这种组合表示这个节点没有成为主节点的资格,也就不参与选举,只会存储
数据。
这个节点称为data(数据)节点。在集群中需要单独设置几个这样的节点负责
存储数据。后期提供存储和查询服务

第三种组合:(master node)
• node.master: true
• node.data: false
• node.ingest: false
• search.remote.connect: false
这种组合表示这个节点不会存储数据,有成为主节点的资格,可以参与选举,
有可能成为真正的主节点。
这个节点我们称为master节点。

第四种组合:(Coordinating Node)
• node.master: false
• node.data: false
• node.ingest: false
• search.remote.connect: false
这种组合表示这个节点即不会成为主节点,也不会存储数据,
这个节点的意义是作为一个协调节点,主要是针对海量请求的时候可以进行
负载均衡。

第五种组合:(Ingest Node)
• node.master: false
• node.data: false
• node.ingest: true
• search.remote.connect: false
这种组合表示这个节点即不会成为主节点,也不会存储数据,
这个节点的意义是ingest节点,对索引的文档做预处理。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Sun__s/article/details/114577082