centos7下部署elasticsearch7.2集群

1 Elastic Stack简介

    如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。所以说,ELK是旧的称呼,Elastic Stack是新的名字。

centos7下部署elasticsearch7.2集群

全系的Elastic Stack技术栈包括:

centos7下部署elasticsearch7.2集群

1.Elasticsearch

       Elasticsearch 基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

2.Logstash

 Logstash 基于java,是一个开源的用于收集,分析和存储日志的工具。

3.Kibana

       Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以汇总、分析和搜索重要数据日志。

4.Beats

      Beats是elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动。

     Beats主要由如下组成:

  • Packetbeat:是一个网络数据包分析器,用于监控、收集网络流量信息,Packetbeat嗅探服务器之间的流量,解析应用层协议,并关联到消息的处理,其支 持ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、MongoDB、Memcache等协议;
  • Filebeat:用于监控、收集服务器日志文件,其已取代 logstash forwarder;
  • Metricbeat:可定期获取外部系统的监控指标信息,其可以监控、收集 Apache、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper等服务;
  • Winlogbeat:用于监控、收集Windows系统的日志信息;

2 Elasticsearch 简介

2.1 基本概念

1. 官网:https://www.elastic.co/cn/products/elasticsearch 

centos7下部署elasticsearch7.2集群

2.基本概念

索引 

(1)索引(index)是Elasticsearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。

(2)可以把索引看成关系型数据库的表,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。

(3)Elasticsearch可以把索引存放在一台机器或者分散在多台服务器上,每个索引有一或多个分片(shard),每个分片可以有多个副本(replica)。

文档 

(1)存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文档相当于数据库表中的一行记录。

(2)Elasticsearch和MongoDB中的文档类似,都可以有不同的结构,但Elasticsearch的文档中,相同字段必须有相 同类型。

(3)文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫多值字段(multivalued)。

(4)每个字段的类型,可以是文本、数值、日期等。字段类型也可以是复杂类型,一个字段包含其他子文档或者数组。

映射

  所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条、哪些词条又会被过滤,这种行为叫做映射(mapping)。一般由用户自己定义规则。

文档类型

(1)在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序可以保存文章和评论。

(2)每个文档可以有不同的结构。

(3)不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一个叫title的字段必须具有相同的类型。

2.3 Elasticsearch集群节点相关概念

        ELasticsearch的集群是由多个节点组成的,通过cluster.name设置集群名称,并且用于区分其它的集群,每个节点

通过node.name指定节点的名称。

          在Elasticsearch中,节点的类型主要有4种:

master节点

配置文件中node.master属性为true(默认为true),就有资格被选为master节点。

master节点用于控制整个集群的操作。比如创建或删除索引,管理其它非master节点等。

data节点

配置文件中node.data属性为true(默认为true),就有资格被设置成data节点。

data节点主要用于执行数据相关的操作。比如文档的CRUD。

客户端节点

配置文件中node.master属性和node.data属性均为false。

该节点不能作为master节点,也不能作为data节点。

可以作为客户端节点,用于响应用户的请求,把请求转发到其他节点。

部落节点

当一个节点配置tribe.*的时候,它是一个特殊的客户端,它可以连接多个集群,在所有连接的集群上执行搜索和其他操作。

3 部署elasticsearch集群

3.1 基础环境

操作系统:centos7.5

各类包下载地址:https://elasticsearch.cn/download/

 

#关闭防火墙和selinux

#systemctl stop firewalld
#systemctl disable firewalld
#setenforce 0
#getenforce

#sed -i  ‘s/SELINUX=permissive/SELINUX=disabled/‘ /etc/selinux/config

#cat /etc/sysconfig/selinux

SELINUX=disabled

 

#修改主机名

#hostnamectl set-hostname elk1

#hostnamectl set-hostname elk2

#hostnamectl set-hostname elk3

 

#修改最大连接数

#vi /etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

#ulimit -n 65535

#ulimit -a 

 

#配置/etc/hosts

#cat /etc/hosts

centos7下部署elasticsearch7.2集群

#配置好本地源,阿里源

centos7下部署elasticsearch7.2集群

#wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo

--------------------------------------------------------------------------------------------------------------------------------------

注意:

  如果配置elasticsearch源,会下载最新版本的elasticsearch包;实验中因提前下载好了7.2的版本,这里就不配置;配置elasticsearch源方法如下:

#rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

#cat /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-7.x]

name=Elasticsearch repository for 7.x packages

baseurl=https://artifacts.elastic.co/packages/7.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

#安装最新版elasticsearch

#yum -y  install elasticsearch

----------------------------------------------------------------------------------------------------------------------------------------------

3.2 安装elasticsearch

#在elk1,elk2,elk3上创建elasticsearch数据库目录,

并且修改属主属组为elasticsearch

#mkdir  -pv  /home/es/log

#mkdir  -pv  /home/es/data

#chown -R elasticsearch.elasticsearch /home/es/log

#chown -R elasticsearch.elasticsearch /home/es/data

#安装

#yum  install -y  elasticsearch-7.2.0-x86_64.rpm

#备份主配置文件

#cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

3.2 配置Elasticsearch集群

#elk1(192.168.1.223)配置文件

#grep -v "#"  /etc/elasticsearch/elasticsearch.yml

centos7下部署elasticsearch7.2集群

参数解释:

cluster.name: my-application  # 集群中的名称

node.name: elk1  # 该节点名称

node.master: true  # 意思是该节点为主节点

node.data: false  #表示这不是数据节点

path.data: /home/es/data #数据存放路径

path.logs: /home/es/log  #日志存放路径

network.host: 192.168.1.223  # 监听ip

http.port: 9200  # es服务的端口号

discovery.seed_hosts  # 配置自动发现

cluster.initial_master_nodes  #集群初始主节点

#elk2(192.168.1.224)配置文件

 centos7下部署elasticsearch7.2集群

#elk3(192.168.1.225 )配置文件

centos7下部署elasticsearch7.2集群

#设置开机自动

#systemctl enable elasticsearch

#启动服务
#systemctl restart elasticsearch
#netstat -tnulp | grep java

 centos7下部署elasticsearch7.2集群

3.4 查看集群信息

#查看elasticsearch集群信息(下面命令在任意一个节点机器上操作都可以)

#curl -XGET ‘http://192.168.1.223:9200/_cat/nodes‘

 centos7下部署elasticsearch7.2集群

  注意:带*号表示该节点是master主节点。

#后面添加 ?v ,表示详细显示

#curl -XGET ‘http://192.168.1.223:9200/_cat/nodes?v‘

 centos7下部署elasticsearch7.2集群

#查询集群状态方法

# curl -XGET ‘http://192.168.1.223:9200/_cluster/state/nodes?pretty‘

#查询集群中的master

#curl -XGET ‘http://192.168.1.223:9200/_cat/master?v‘

 

#查询集群的健康状态(一共三种状态:green、yellow,red;其中green表示健康)

#curl -XGET ‘http://192.168.1.223:9200/_cat/health?v‘

#curl -XGET ‘http://192.168.1.223:9200/_cluster/health?pretty‘

3.5 ES数据定期删除脚本

如果不删除ES数据,将会导致ES存储的数据越来越多,磁盘满了之后将无法写入新的数据。这时可以使用脚本定时删除过期数据;

清理脚本如下:

#cat es-index-clear.sh
#/bin/bash
#es-index-clear
#只保留5天内的日志索引
LAST_DATA=`date -d "-5 days" "+%Y.%m.%d"`
#删除过期的索引
curl -X DELETE ‘http://192.168.1.224:9200/*-‘${LAST_DATA}‘*‘

可以视情况调整保留的天数,该脚本只需要在ES中一台机器定时运行即可。

-------------------------------------------------------------------------------------------------------------------------------------------

3.6 参考链接

https://blog.csdn.net/dkjhl/article/details/95201228

https://blog.csdn.net/ghost_leader/article/details/79023222

https://blog.csdn.net/dkjhl/article/details/95201228

https://blog.51cto.com/zero01/2079879