• centos7下部署elasticsearch7.2集群--Elastic Stack之一


    1 Elastic Stack简介

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

    全系的Elastic Stack技术栈包括:

    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 

    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 基础环境

    机器角色

    主机名

    ip

    服务

    elk1

    192.168.1.223

    jdk1.8,es7.2,logstash,

    elk2

    192.168.1.224

    jdk1.8,es7.2,elasticsearch-head,

    kibana,cerebro

    elk3

    192.168.1.225

    jdk1.8,es7.2,redis2+keepalived

    elk4

    192.168.1.226

    jdk1.8,redis1+keepalived+vip,

    filebeat,metricbeat,rabbitmq,

    Packbeat;heartbeat


    操作系统: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

    #配置好本地源,阿里源

    #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

    参数解释:

    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)配置文件

     

    #elk3(192.168.1.225 )配置文件

    #设置开机自动

    #systemctl enable elasticsearch

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

     

    3.4 查看集群信息

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

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

     

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

    #后面添加 ?v ,表示详细显示
    #curl -XGET 'http://192.168.1.223:9200/_cat/nodes?v'

     

    #查询集群状态方法
    #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

  • 相关阅读:
    Vue Scroller:Vue 下拉刷新及无限加载组件
    vue引用公用的头部和尾部文件。
    Java后期拓展(三)Nginx ——高性能的HTTP和反向代理服务器
    JAVA后期拓展(二)ZooKeeper——分布式应用程序协调服务系统
    Java高级部分
    Java后期拓展(一)非关系型数据库Redis
    LoadRunner(四)——深度了解LR相关功能
    LoadRunner(三)——LR相关概念&组成部分
    LoadRunner(二)——性能测试过程概述
    LoadRunner(一)——性能测试基础及性能指标概述
  • 原文地址:https://www.cnblogs.com/llwxhn/p/12440983.html
Copyright © 2020-2023  润新知