zoukankan      html  css  js  c++  java
  • ELK——ElasticSearch部署及介绍

    ElasticSearch介绍

    Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

    • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
    • 实时分析的分布式搜索引擎。
    • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

    基本概念

    先说Elasticsearch的文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:

    {
        "name" :     "test",
        "sex" :      "demo",
        "age" :      11,
        "birthDate": "2008/11/11",
        "about" :    "I have apple",
        "interests": [ "pen", "sleep" ]
    }

    用Mysql这样的数据库存储就会容易想到建立一张User表,有balabala的字段等,在Elasticsearch里这就是一个文档,当然这个文档会属于一个User的类型,各种各样的类型存在于一个索引当中。这里有一份简易的将Elasticsearch和关系型数据术语对照表:

    关系数据库    ⇒   数据库      ⇒  表       ⇒  行          ⇒ 列(Columns)
    Elasticsearch  ⇒   索引(Index)   ⇒  类型(type)  ⇒  文档(Docments)   ⇒ 字段(Fields)  

    一个 Elasticsearch 集群可以包含多个索引(数据库),也就是说其中包含了很多类型(表)。这些类型中包含了很多的文档(行),然后每个文档中又包含了很多的字段(列)。Elasticsearch的交互,可以使用Java API,也可以直接使用HTTP的Restful API方式,比如我们打算插入一条记录,可以简单发送一个HTTP的请求:

    PUT /net/mont/test
    {
        "name" :     "test",
        "sex" :      "demo",
        "age" :      11,
        "birthDate": "2008/11/11",
        "about" :    "I have apple",
        "interests": [ "pen", "sleep" ]
    }

    具体操作手册可以参见Elasticsearch权威指南

    ElasticSearch安装指南(以下简称ES)

    ElasticSearch安装环境:

    使用系统版本 centos6.10
    ES使用版本 7.2.0
    java使用版本 1.8.0+

    1. java环境需求1.8以上的jdk安装,可yum安装或二进制安装

    1.1 yum安装

    yum -y install java-1.8.0-openjdk*

    1.2 二进制安装需要下载jdk1.8二进制包,上传至服务器,且修改全局变量

    mkdir -p /usr/java
    tar xf "jdk二进制包名" -C /usr/java

    1.3 修改全局变量/etc/profile

    vim /etc/profile
    export JAVA_HOME=/usr/java/jdk1.8.0_*(*安装包版本) export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH

    2. ES安装部署(二进制包安装)

    2.1 上传二进制包至服务器,解压

    tar xf elasticsearch-7.2.0-linux-x86_64.tar.gz -C /usr/local

    2.2 修改ES配置文件

    vim /usr/local/elasticsearch-7.2.0/config/elasticsearch.yml

    node.name: node-1
    path.data:/database/es
    path.logs:/logs/es
    network.host: 192.168.1.130
    http.port: 9200
    #以下两行配置为集群配置,若为单机则写一个即可 discovery.seed_hosts: ["192.168.1.130","192.168.1.131"] cluster.initial_master_nodes: ["node-1","node-2"] #在文件最下方增加以下配置 http.cors.enabled: true http.cors.allow-origin: "*"

    2.3 创建es启动用户

    useradd elasticsearch
    echo "passwd" | passwd --stdin elasticsearch

    2.4 es启动需要普通用户启动

    mkdir -p /database/es /logs/es
    chown -R elasticsearch.elasticsearch /usr/local/elasticsearch-7.2.0
    chown -R elasticsearch.elasticsearch /database/es /logs/es

    2.5 切换普通用户启动(启动报错,详情可参考4. 启动报错问题

    su elasticsearch
    /usr/local/elasticsearch-7.2.0/bin/elasticsearch #启动后观察输出是否存在报错
    /usr/local/elasticsearch-7.2.0/bin/elasticsearch > /dev/null 2>&1 & #无报错进行后台启动

    2.6 页面输入192.168.1.130:9200,显示如下图即安装成功

     

    3. elasticsearch-head安装

    安装包下载地址:https://github.com/mobz/elasticsearch-head

    3.1 将下载的zip解压

    unzip /opt/elasticsearch-head-master.zip

    3.2 将解压的目录移动

    mv /opt/elasticsearch-head-master /usr/local/elasticsearch-head

    3.3 安装nodejs、npm、grunt

    方法一:
    yum
    install epel-release -y yum install nodejs -y mkdir -p /usr/local/node/ #创建目录 cd /usr/local/node/ wget https://npm.taobao.org/mirrors/node/v4.4.7/node-v4.4.7-linux-x64.tar.gz tar xf node-v4.4.7-linux-x64.tar.gz mv node-v4.4.7-linux-x64 node-v4.4.7 rm -rf node-v4.4.7-linux-x64.tar.gz ln -s /usr/local/node/node-v4.4.7/bin/npm /usr/local/bin/npm ln -s /usr/local/node/node-v4.4.7/bin/node /usr/local/bin/node npm -v npm install npm install grunt --save #elasticsearch-head目录下node_modules/grunt下如果没有grunt二进制程序,在执行
    方法二: curl
    --silent --location https://rpm.nodesource.com/setup_10.x | bash - yum install -y nodejs npm -v node -v #进入elasticsearch-head目录下执行 npm install #elasticsearch-head目录下node_modules/grunt下如果没有grunt二进制程序,在执行 npm install grunt --save

    3.4 修改配置文件

    修改elasticsearch.yml文件,添加配置

    http.cors.enabled: true
    http.cors.allow-origin: "*"

    修改/usr/local/elasticsearch-head/_site/app.js文件,如下图位置

    修改Gruntfile.js文件,修改服务监听地址(增加hostname属性,将其值设置为'0.0.0.0’)     

                    connect: {
                            server: {
                                    options: {
                                            hostname: '0.0.0.0',
                                            port: 9100,
                                            base: '.',
                                            keepalive: true
                                    }
                            }
                    }
    
            });

    启动服务(先启动ES再启动head插件

    npm run start
    npm run start > /dev/null 2>&1 &

    访问192.168.1.130:9300,启动成功后即可显示如下图

    4. 启动报错问题

    4.1 如出现上述报错,进行以下的报错处理

    报错1:无法创建本地文件问题,用户最大可创建文件数太小

    解决方案:切换到root用户,编辑limits.conf配置文件并添加类似如下内容,添加完成后退出用户重新登陆即可生效

    vim /etc/security/limits.conf

    *       soft    nofile  65536
    *       hard    nofile  65536
    *       soft    nproc   4096
    *       hard    nproc   4096

    报错2:无法创建本地线程问题,用户最大可创建线程数太小

    解决方案:切换到root用户,进入limits.d目录下,修改90-nproc.conf 配置文件。
    vim /etc/security/limits.d/90-nproc.conf

    修改 * soft nproc 1024 为  * soft nproc 4096

    报错3:最大虚拟内存太小

    解决方案:切换到root用户下,修改配置文件sysctl.conf
    vim /etc/sysctl.conf

    添加下面配置:vm.max_map_count=655360
    并执行命令:sysctl -p

    报错4:Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true

    解决方案: 
    禁用:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面: 

    bootstrap.memory_lock: false 
    bootstrap.system_call_filter: false

    报错5:

    解决方案:

    vim /usr/local/elasticsearch-7.2.0/config/elasticsearch.yml

    #cluster.initial_master_nodes: ["node-1", "node-2"]   #在此行下插入
    cluster.initial_master_nodes: ["node-1"]
  • 相关阅读:
    SQL SERVER 运维日记
    openstack
    Java GC 日志详解
    突破 BTrace 安全限制
    End-to-End Tracing of Ajax/Java Applications Using DTrace
    调试工具BTrace 的使用--例子
    btrace-dtrace-for-java-ish
    DTrace Probes in HotSpot VM
    DTrace memory leak 内存泄露
    Java-JVM-GC
  • 原文地址:https://www.cnblogs.com/Huang-Niu/p/11250268.html
Copyright © 2011-2022 走看看