Elasticsearch的安装
Elkstack是由elasticsearch、logstash、kibana等软件及其他相关组件构成的日志收集分析系统,elasticsearch是基于lucene的搜索引擎。负责日志的搜索。logstash及filebeat负责将日志输出给elasticsearch,kibana则通过web页面展示搜索elasticsearch中用户需要的数据。
主机名 |
IP地址 |
系统版本 |
Elasticsearch版本 |
Logstash版本 |
Kibanner版本 |
filebeat |
其他安装 |
elk1 |
10.0.0.11 |
Centos7.2 |
5.5.2 |
|
|
|
head插件 |
elk2 |
10.0.0.12 |
Centos7.2 |
5.5.2 |
|
5.2.2 |
|
|
elk3 |
10.0.0.13 |
Centos7.2 |
|
5.5.2 |
|
|
|
elk4 |
10.0.0.14 |
Centos7.2 |
|
|
|
|
redis |
server |
10.0.0.15 |
Centos7.2 |
|
|
|
5.5.2 |
nginx |
ES是一个基于Lucene实现的开源、分布式、Restful的全文本搜索引擎;此外,它还是一个分布式实时文档存储,其中每个文档的每个分片均是被索引的数据,且可被搜索;也是一个带实时分析功能的分布式搜索引擎,能够扩展至数以百计的节点实时处理PB级的数据。
(1)索引(index):文档容器,索引是具有类似属性的文档的集合。类似于表。索引名必须使用小写字母;
(2)类型(type):类型是索引内部的逻辑分区,其意义完全取决于用户需求。一个索引内部可定义一个或多个类型。一般来说,类型就是拥有相同的域的文档的预定义。
(3)文档(document):文档是Lucene索引和搜索的原子单位,它包含了一个或多个域。是域的容器;基于JSON格式表示。
每个域的组成部分:一个名字,一个或多个值;拥有多个值的域,通常称为多值域;
(4)映射(mapping):原始内容存储为文档之前需要事先进行分析,例如切词、过滤掉某些词等;映射用于定义此分析机制该如何实现;除此之外,ES还为映射提供了诸如将域中的内容排序等功能。
(1)Cluster:ES的集群标识为集群名称;默认为"elasticsearch"。节点就是靠此名字来决定加入到哪个集群中。一个节点只能属性于一个集群。
(2)Node:运行了单个ES实例的主机即为节点。用于存储数据、参与集群索引及搜索操作。节点的标识靠节点名。
(3)Shard:将索引切割成为的物理存储组件;但每一个shard都是一个独立且完整的索引;创建索引时,ES默认将其分割为5个shard,用户也可以按需自定义,创建完成之后不可修改。
hard有两种类型:主分片(primary shard)和副本分片(replica)。副本分片用于数据冗余及查询时的负载均衡。每个主shard的副本数量可自定义,且可动态修改。
启动时,通过单播方式在9300/tcp查找同一集群中的其它节点,并与之建立通信。
集群中的所有节点会选举出一个主节点负责管理整个集群状态,以及在集群范围内决定各分片的分布方式。站在用户角度而言,每个均可接收并响应用户的各类请求。
green(正常状态), red(有分片失效), yellow
安装前需要配置四台主机的主机名能够互相解析,在四台主机上分别执行如下命令。
~]# cat >> /etc/hosts < 10.0.0.11 elk1
> 10.0.0.12 elk2
> 10.0.0.13 elk3
> 10.0.0.14 elk4
> EOF
Elasticsearch是由Java语言开发,所以在安装elasticsearch前需要先安装Javajdk,jdk版本选择8以上版本。同时安装jdk-devel。
(1)安装jdk
~]# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
~]# java -version
openjdk version "1.8.0_144"
OpenJDK Runtime Environment (build 1.8.0_144-b01)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)
(2)安装elasticsearch
]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.rpm
]# rpm -ivh elasticsearch-5.5.1.rpm
warning: elasticsearch-5.5.1.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
Updating / installing...
1:elasticsearch-0:5.5.2-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
Elasticsearch5版本的配置文件有三个,分别为:
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/elasticsearch/log4j2.properties
(1)elasticsearch.yml为elasticsearch的主配置文件,主要的配置项有:
集群的名称:
cluster.name: myelk
当前节点的名称:
node.name: node-1
节点的描述:
#node.attr.rack: r1
数据存放目录:
path.data: /data/to/path
日志存放目录
path.logs: /logs/to/path
是否锁定内存大小:
#bootstrap.memory_lock: true
启动es后监听的ip地址:
network.host: 192.168.0.1
Es使用的端口,默认为9200,集群端口为9300
#http.port: 9200
检测的集群节点:
discovery.zen.ping.unicast.hosts: ["elk1", "elk2"]
最少启动几个节点:
discovery.zen.minimum_master_nodes: 2
#gateway.recover_after_nodes: 3
#action.destructive_requires_name: true
此处,我们需要修改的配置项有(具体配置根据各节点主机具体信息配置,此处以elk1的配置为例):
cluster.name: myelk
node.name: elk1
path.data: /data/els/data
path.logs: /data/els/logs
network.host: 10.0.0.11
discovery.zen.minimum_master_nodes: 2
(2)java内存分配的配置文件jvm.options
主要的配置项有:
启动时分配的内存:
-Xms2g
最大的使用内存:
-Xmx2g
建议都为实际物理内存的一半,具体根据自己主机内存的大小配置,物理主机的内存不宜太小,由于我两台主机物理内存均为2g,所以elk1及elk2的配置均为
-Xms1g
-Xmx1g
(3)log4j2.properties
为日志的配置文件,此处不需要做修改。
(1)在配置集群中,我们将两台主机的日志文件和数据文件都放在了/data/els/下,我们我们需要为elasticsearch建立日志存放目录及数据存放目录。并修改所有者及所属组为elasticsearch。
]# mkdir /data/els/{data,logs} -p
]# chown elasticsearch:elasticsearch /data/ -R
(2)启动elasticsearch
]# systemctl start elasticsearch.service
]# systemctl enable elasticsearch.service
]# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2017-09-23 09:44:49 EDT; 43min ago
Docs: http://www.elastic.co
Process: 12203 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)
Main PID: 12205 (java)
CGroup: /system.slice/elasticsearch.service
└─12205 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFracti...
Sep 23 09:44:49 elk2 systemd[1]: Starting Elasticsearch...
Sep 23 09:44:49 elk2 systemd[1]: Started Elasticsearch.
Sep 23 09:44:50 elk2 elasticsearch[12205]: OpenJDK 64-Bit Server VM warning: If the number of pr...s=N
Hint: Some lines were ellipsized, use -l to show in full.
在启动时如果出现错误可根据日志”/data/els/logs/elk/”及状态信息查看错误。
(3)检测启动结果
启动后,查看端口,如果9200端口及9300端口启动起来,则说明elasticsearch启动成功。
[root@elk2 elasticsearch-head]# ss -tanl|grep -E "9200|9300"
LISTEN 0 128 ::ffff:10.0.0.12:9200 :::*
LISTEN 0 128 ::ffff:10.0.0.12:9300
至此,elasticsearch的安装完成。