1. ELK介绍
ElK,即ElasticSearch+Logstash+Kibana
ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Elasticsearch (ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在储、搜索和分析大量的数据。它通常作为具有复杂搜索场景情况下的核心发动机。Elasticsearch就是为高可用和可扩展而生的。可以通过购置性能更强的服务器来完成。
Elasticsearch优势
横向可扩展性:只需要增加台服务器,做一点儿配置,启动一下Elasticsearch就可以并入集群。
分片机制提供更好的分布性:同一个索引分成多个分片(sharding), 这点类似于HDFS的块机制;分而治之的方式可提升处理效率。
高可用:提供复制( replica) 机制,一个分片可以设置多个复制,使得某台服务器在宕机的情况下,集群仍旧可以照常运行,并会把服务器宕机丢失的数据信息复制恢复到其他可用节点上。
口使用简单:共需一条命令就可以下载文件,然后很快就能搭建一一个站内搜索引擎。
Elasticsearch应用场景
大型分布式日志分析系统ELK elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据)
大型电商商品搜索系统、网盘搜索引擎等。
Elasticsearch存储结构
Elasticsearch是文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:
{
"name" : "jiayoubing",
"sex" : 0,
"age" : 25
}
关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields)
Centos上安装Elasticsearch
关闭防火墙 systemctl stop firewalld.service
1.配置jdk安装环境,vi /etc/profile
在最后加入jdk环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_11
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
刷新环境变量:source /etc/profile
2.下载elasticsearch安装包
进入elasticsearch官网:https://www.elastic.co/cn/downloads/elasticsearch
注意:linux安装内存建议1g内存以上
3.新建elasticsearch的群组和用户(elasticsearch默认不允许在root用户下面运行)
第一步:liunx创建新用户 adduser elk 然后给创建的用户加密码 passwd elk 输入两次密码。
[root@192 ~]# adduser elk
[root@192 ~]# passwd elk
Changing password for user elk.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
第二步:新建elk的群组 groupadd elk
在lcoal目录中,给elk同等root权限:sudo chown -R elk /usr/local
su elk 切换用户
4.通过ftp上传elasticsearch安装包(我这里统一用7.6.1版本)
5.解压elasticsearch
tar -xvf elasticsearch-7.6.1-linux-x86_64.tar.gz
6.修改elasticsearch-7.6.1/config/elasticsearch.yml
network.host: 192.168.234.142
http.port: 9200
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
7.启动elasticsearch
cd /usr/local/elasticsearch-7.6.1/bin
./elasticsearch
解决报错问题,日志如下
[2020-04-06T07:24:34,390][INFO ][o.e.b.BootstrapChecks ] [192.168.234.142] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/elasticsearch-7.6.1/logs/elasticsearch.log
在sysctl中增加如下:vi /etc/sysctl.conf
vm.max_map_count=655360
在limits.conf中增加如下:vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
sysctl -p 刷新生效
保存后重启,启动成功,查看日志如下
网页登录查看状态(切记这里要用ip地址登录,127.0.0.1已经修改为对外IP地址)