目录

  • 一、elasticsearch实战
  • 1.elasticsearch介绍
  • 2. 下载地址
  • 3. 安装及设置
  • 4 插件安装
  • 5. 从节点安装配置
  • 6. elasticsearch节点角色
  • 7. 节点优化


一、elasticsearch实战

1.elasticsearch介绍

1.简介

2.基础模块

cluster

管理集群状态,维护集群层面的配置信息

alloction

封装了分片相关的功能和策略

discovery

发现集群中的节点,以及选举主节点

gateway

对收到master广播下来的集群状态数据的持久化存储

indices

管理全局级的索引设置

http

允许通过JSON over HTTP的方式访问ES的API

transport

用于集群内节点之间的内部通信

engine

封装了对Lucene的操作及translog的调用

3.应用场景

  • 信息检索
  • 日志分析
  • 业务数据分析
  • 数据库加速
  • 运维指标监控

2. 下载地址

elastic的中文社区下载地址:https://elasticsearch.cn/download/

3. 安装及设置

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

如何查看es中日志是不是有新数据 elasticsearch日志查看_如何查看es中日志是不是有新数据


(1)主配置文件修改:

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

如何查看es中日志是不是有新数据 elasticsearch日志查看_elasticsearch_02


如何查看es中日志是不是有新数据 elasticsearch日志查看_elasticsearch_03


如何查看es中日志是不是有新数据 elasticsearch日志查看_vim_04

[root@node1 ~]# vim /etc/security/limits.conf

如何查看es中日志是不是有新数据 elasticsearch日志查看_vim_05

[root@node1 ~]# vim /usr/lib/systemd/system/elasticsearch.service

如何查看es中日志是不是有新数据 elasticsearch日志查看_存储数据_06


重载并启动服务:

systemctl daemon-reload

systemctl start elasticsearch

查看一下端口:

如何查看es中日志是不是有新数据 elasticsearch日志查看_elasticsearch_07


如何查看es中日志是不是有新数据 elasticsearch日志查看_存储数据_08

4 插件安装

1.下载elastic-head插件:
[root@node1 ~]#wget https://github.com/mobz/elasticsearch-head/archive/v5.0.0.zip
[root@node1 ~]#unzip v5.0.0.zip
2.head插件本质上是一个nodejs的工程,因此需要安装node:
[root@node1 ~]#wget https://mirrors.tuna.tsinghua.edu.cn/nodesource/rpm_9.x/el/7/x86_64/nodejs-9.11.2-1nodesource.x86_64.rpm   #下载
[root@node1 ~]#rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm   #安装
 [root@node1 ~]#node -v
[root@node1 ~]#npm -v
3.更换npm源安装elastic插件:
[root@node1 elasticsearch-head-5.0.0]#  npm install --registry=https://registry.npm.taobao.org   #期间会自动下载phantomjs,为了速度快,提前下载好phantomjs-2.1.1-linux-x86_64.tar.bz2
phantomjs运行:
[root@node1 ~]# cd phantomjs-2.1.1-linux-x86_64
[root@node1 phantomjs-2.1.1-linux-x86_64]# ls
bin  ChangeLog  examples  LICENSE.BSD  README.md  third-party.txt
[root@node1 phantomjs-2.1.1-linux-x86_64]# cd bin/
[root@node1 bin]# ls
phantomjs
[root@node1 bin]# cp phantomjs /usr/local/bin/ #做一个链接
[root@node1 bin]# ll /usr/local/bin/phantomjs 
-rwxr-xr-x 1 root root 67932064 Mar 17 09:34 /usr/local/bin/phantomjs
[root@node1 bin]# cd ~
[root@node1 ~]# phantomjs   #第一次运行不起来,缺东西
phantomjs: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory
[root@node1 ~]# yum provides */libfontconfig.so.1  #查看缺少的文件是由什么提供的
[root@node1 ~]# yum install -y fontconfig-2.13.0-4.3.el7.x86_64  #安装

[root@node1 ~]# phantomjs   #成功运行
phantomjs> 
3.再次安装elastic插件:
[root@node1 elasticsearch-head-5.0.0]# npm install --registry=https://registry.taobao.org  #再次更换源安装elasticsearch
4打入后台运行:
[root@node1 elasticsearch-head-5.0.0]# npm run start &
[1] 4357
[root@node1 elasticsearch-head-5.0.0]# 
> elasticsearch-head@0.0.0 start /root/elasticsearch-head-5.0.0
> grunt server

(node:4367) ExperimentalWarning: The http2 module is an experimental API.
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

5.浏览器中输入:
http://172.25.7.131:9100
刚开始显示的是localhost:9100,最好该一下端口
[root@node1 elasticsearch-head-5.0.0]# vim _site/app.js 
4354行: http://localhost:9100----> http://172.25.7.131:9100
[root@node1 elasticsearch-head-5.0.0]# npm run start &  #重新运行

浏览器中再次登录,未连接,

如何查看es中日志是不是有新数据 elasticsearch日志查看_存储数据_09


如何查看es中日志是不是有新数据 elasticsearch日志查看_如何查看es中日志是不是有新数据_10


再次查看:

如何查看es中日志是不是有新数据 elasticsearch日志查看_elasticsearch_11

5. 从节点安装配置

1.更改限制内存大小:
[root@node3 ~]# vim /etc/elasticsearch/jvm.options 
	-Xms256M
	-Xmx256M
2.systemd服务:
[root@node3 ~]# vim /usr/lib/systemd/system/elasticsearch.service  
LimitMEMLOCK=infinity	#添加这句
3.禁用swap分区:
[root@node3 ~]# swapoff -a
[root@node3 ~]# vim /etc/fstab 
#/dev/mapper/rhel-swap  swap  swap  defaults  0 0  #注释掉
[root@node3 ~]# echo 1 > /proc/sys/vm/swappiness 
4.安全限制:
[root@node3 elasticsearch]# vim /etc/security/limits.conf 
	elasticsearch  -  nofile  65535
	elasticsearch  -  nproc 4096
	elasticsearch  -  soft memlock unlimited
	elasticsearch  -  hard memlock unlimited
5.主配置文件修改:
[root@node3 elasticsearch]# vim /etc/elasticsearch/elasticsearch.yml 
6.启动服务:
[root@node3 elasticsearch]# systemctl daemon-reload
[root@node3 elasticsearch]# systemctl start elasticsearch

如何查看es中日志是不是有新数据 elasticsearch日志查看_如何查看es中日志是不是有新数据_12


如何查看es中日志是不是有新数据 elasticsearch日志查看_elasticsearch_13


三个节点安装配置完,刷新浏览器:

如何查看es中日志是不是有新数据 elasticsearch日志查看_vim_14

6. elasticsearch节点角色

Master

主要负责集群中索引的创建,删除以及数据的rebalance等操作。master不负责数据的索引和检索,所以负载较轻。当master节点失联或者刮掉的时候,ES集群会自动从其他节点选举出一个Leader

Data Node

主要负责集群中数据的检索和索引,一般压力较大

Coordinating Node

原来的Client node的,主要功能是用来分发请求和合并结果的。所有节点默认就是Coordinating node,且不能关闭该属性

ingest

专门对索引文档处理做

7. 节点优化

写进/etc/elasticsearch/elasticsearch.yml文件:
五钟组合方式
(1)第一种组合(默认)

node.master: true
node.data: true
node.ingest: true
search.remote.connect: true

这种组合表示这个节点既有成为主节点的资格,又存储数据。如果这个节点被选举成为了真正的节点,那么它还要存储数据,这样对于这个节点的压力就比较大了。
测试环境下这样做,但实际工作中:
不建议这样设置

(2)第二种组合(Data node)

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

(3)第三种组合(master node)

node.master: true
node.data: false
node.ingest: false
search.remote.connect: false
此节点不会存储数据,有资格被选为主节点

(4)第四种组合后(Coordinating node)

node.master: false
node.data: false
node.ingest: false
search.remote.connect: false
此节点的意义是作为一个协调节点,主要是针对海量请求的时候可以进行负载均衡。
它不会成为主节点,也不会存储数据

(5)第五种组合(Ingest node)

node.master: false
node.data: false
node.ingest: true
search.remote.connect: false
此节点是ingest节点,对索引的文档做预处理。
不会成为主节点,也不会存储数据

生产环境中对这些节点的职责进行划分:

  • 建议集群中设置三台以上的的节点作为master节点,这些节点只负责成为主节点,维护整个集群的状态。数量保持奇数。
  • 再设置一批data节点,这些节点只负责存储数据,后期提供建立索引和查询索引的服务,这样的话如果用户请求比较频繁,这些节点的压力也比较大
  • 所以在集群中再设置一些协调节点,这些节点只负责处理用户请求,实现请求转发,负载均衡等功能。

节点需求:

  • master节点: 普通服务器即可(内存,cpu消耗一般)
  • data节点: 主要消耗磁盘,内存
    path.data:data1,data2,data3
    这样配置可能导致数据写入不均,建议制定一个数据路径,磁盘卡可以使用radio阵列,而不需要高成本的ssd
  • Coordinating节点:对cpu,memory要求较高