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"]

 

posted @ 2019-07-26 17:40  蜡笔没小新  阅读(394)  评论(0编辑  收藏  举报