一 .Elasticsearch 介绍
Elasticsearch(简称 ES) 是一个基于 Apache Lucene 构建的分布式、RESTful 风格的搜索和分析引擎。它最擅长的就是海量数据的快速存储、搜索和分析。我们可以把它想象成一个超级搜索引擎,但它不是搜网页,而是搜我们存进去的结构化或非结构化数据(比如日志、文档、商品信息)。我们平常在购物软甲或者其他平台进行搜索的时候,这个时候就是用到了Elasticsearch的,而不是访问了数据库,访问了数据库时不会达到实时反馈的。
Elasticsearch的核心特征就是就是分布式、高可用、全文搜索、实时性等等。它在ELK架构中的作用就是存储logstash获取到的日志信息,以及为数据建立索引,达到毫秒级的搜索速率。
那么这里的分布式和高可用是怎么理解的呢?这是因为,在部署Elasticsearch的时候,一般都会先部署一个集群,这个集群就可以分布式的存储数据,同时,这个集群中的master可以不存储数据,而是选择调用哪一个来工作。这样就可以大大的减缓海量数据的压力了。
二 . 部署 Elasticsearch 集群
要部署Elasticsearch集群,我们先要安装这个服务,我们现在一台主机上安装ES服务。

同样也是使用rpm包的方式下载,这样操作比较快。
安装完成之后,我们就要部署集群了,部署集群我们就要配置ES的配置文件,ES的配置文件是在/etc/elasticsearch下面的elasticsearch.yml文件,注意yml文件对于缩进的要求是十分严格的。

我们打开这个yml配置文件,在对应的区域添加上对应的语句:

首先就是集群名字,同属一个集群中的机器,这里写的名字一定要是一样的才对。然后node这里的配置我们不用动它。

这两个配置的路径分别指的是数据文件和日志文件的存储目录。

这里的第一个配置的作用是锁定 Elasticsearch 使用的内存,禁止操作系统将其交换到磁盘(swap)。这是因为ES 对性能要求极高,一旦内存被 swap,性能会急剧下降,甚至导致节点失联。
然后后续两个配置就是0.0.0.0代表监听所有网络接口,以及服务端口。

最后就是集群中的其他节点名称,注意我们这里这样写是提前配置了解析,如果没有解析我们写ip地址就可以了。
然后下面的代表的是,有哪些是可以当作master节点,我们这里全部都可以。
配置完ES的配置文件,我们还需要配置系统文件,让ES只运行在内存,关闭swap分区。这些是需要操作系统的支持的。

打开limies.conf这个系统文件。

在这里面添加上这几句,代表允许ES锁定内存,允许ES同时打开65535个文件和4096个进程。
最后,要使ES只在内存中执行,只配置limits.conf是不够的,在system层面的权限也要放开,所以我们还要配置sysytemd里面的系统文件。

在service中添加这个语句,此时ES就只会在内存中了。

最后输入swapoff -a禁止swap分区的使用

配置文件中注释,代表永久禁用,否则重启又会再次开启swap分区。

此时我们访问这个主机的9200端口,就会是一段json串,代表的是已经配置好了。

那么server2和server3也是如此配置,我们可以直接远程拷贝即可。
三 . 部署 cerebro
Cerebro 是 Elasticsearch 的一个开源 Web 管理工具,专门用来查看和管理ES集群。我们可以把它理解为 Elasticsearch 的"图形化管理界面"。由于我们刚才的ES集群的9000端口出来的只是json串,是不方便观看的,那么cerebro就是专门针对于ES的,它可以反馈出集群的状态,查看节点列表,查看索引列表等等。
配置方式也很简单,不过由于cerebro是一个java程序,依赖性较多,本身也较重,所以我们这里是通过docker容器来配置的,此时我们只需要一个镜像,然后创建容器即可,不用再管依赖性了。

先安装docker,在阿里云中找到容器docker的操作步骤,先把yum源更新,然后就可以直接下载docker了。

下载完之后,我们就需要先拉取cerebro镜像,不过我这里有本地镜像,相比于网络拉取会快上很多。

镜像配置好之后,我们就可以直接docker run创建一个容器跑我们的cerebro的服务了,然后我们就可以直接浏览器上9000端口访问了,这就是docker的方便,不用再解决依赖性,一个镜像全部解决。同时docker是轻量级的,用的是宿主的操作系统内核,所以占用空间也不大。

在浏览器中就是这样一个界面,然后这里输入的是我们集群随便一个节点的ip+9200端口,此时就可以连接成功。

连接成功之后,就可以看到各个节点的状态、索引,同时会将每个节点的分片显示出来。
