目录
Elasticsearch简介
• Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上
• Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎:
•一个分布式的实时文档存储,每个字段可以被索引与搜索
•一个分布式实时分析搜索引擎
•能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
•基础模块
• cluster:管理集群状态,维护集群层面的配置信息
• alloction:封装了分片分配相关的功能和策略
• discovery:发现集群中的节点,以及选举主节点。
• gateway:对收到master广播下来的集群状态数据的持久化存储
• indices:管理全局级的索引设置
• http:允许通过JSON over HTTP的方式访问ES的API
• transport:用于集群内节点之间的内部通信
• engine:封装了对Lucene的操作及translog的调用
•elasticsearch应用场景:
• 信息检索
• 日志分析
• 业务数据分析
• 数据库加速
• 运维指标监控
一、Elasticsearch分布式部署
操作:在test1,test2,test3中
(1)软件下载
软件下载地址:下载中心 - Elastic 中文社区
(2)安装软件
rpm -ivh elasticsearch-7.6.1.rp ##7.6版本自带jdk
(3)设置服务开启
systemctl daemon-reload
(4)修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-es #集群名称
node.name: test1 #主机名,三台虚拟机分别为test1,test2,test3
path.data: /var/lib/elasticsearch #数据目录
path.logs: /var/log/elasticsearch #日志目录
bootstrap.memory_lock: true #锁定内存分配(默认1G)
network.host: 0.0.0.0
http.port: 9200 #http服务端口
discovery.seed_hosts: ["test1", "test2", "test3"] ##集群包含test1-3
cluster.initial_master_nodes: ["test1", "test2", "test3"] ##都可作为master
(5)修改系统限制
vim /etc/security/limits.conf
(6)查看默认xmx
vim /etc/elasticsearch/jvm.options
(7)修改systemd启动文件
vim /usr/lib/systemd/system/elasticsearch.service
在[service]下添加
LimitMEMLOCK=infinity
(8)关闭系统交换分区,修改/etc/fstab
swapoff -a
vim /etc/fstab
(9)重新加载服务配置文件
systemctl daemon-reload
(10)开启并检查端口
systemctl start elasticsearch.service
netstat -antlp 查看端口
9200端口已开启
curl localhost:9200
检查三个虚拟机集群名称与集群uuid是否相同即可
二、ElasticSearch监控插件
1.cerebro
(1)在宿主机中拉取并在后台运行cerebro
podman pull docker.io/lmenezes/cerebro 拉取
podman run -d --name cerebro -p 9000:9000 docker.io/lmenezes/cerebro 后台运行
(2)在浏览器中输入宿主机ip(需加端口号)进入cerbro
(3)输入test1-3任意一台虚拟机的ip登陆(9200端口)
可看到集群信息
2.head(版本5)
(1)在宿主机中拉取并在后台运行head:5
podman pull docker.io/mobz/elasticsearch-head:5 拉取
podman run -d --name head -p 9100:9100 docker.io/mobz/elasticsearch-head:5 后台运行
(2)在server1中编辑/etc/elasticsearch/elasticsearch.yml
vim /etc/elasticsearch/elasticsearch.yml
(3)在浏览器中输入宿主机ip(需加端口号)进入head
(4) 连接节点test1(9200端口)
可看到集群信息
三、elasticsearch节点优化
在生产环境下,如果不修改elasticsearch节点的角色信息,在高数
据量,高并发的场景下集群容易出现脑裂等问题。
• 默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,
也都存储数据,还可以提供查询服务。
• 节点角色是由以下属性控制:
• node.master: false|true
• node.data: true|false
• node.ingest: true|false
• search.remote.connect: true|false
默认情况下这些属性的值都是true。
• node.master:这个属性表示节点是否具有成为主节点的资格
注意:此属性的值为true,并不意味着这个节点就是主节点,因为真正的主节点,是由多个具有主节点资格的节点进行选举产生的
• node.data:这个属性表示节点是否存储数据
• node.ingest: 是否对文档进行预处理
• search.remote.connect:是否禁用跨集群查询
test1:
修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
重启服务
systemctl restart elasticsearch.service
test2:
修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
重启服务
systemctl restart elasticsearch.service
test3:
systemctl restart elasticsearch.service
重启服务
vim /etc/elasticsearch/elasticsearch.yml
• 节点需求
• master节点:普通服务器即可(CPU、内存 消耗一般)
• data节点:主要消耗磁盘、内存。
• path.data: data1,data2,data3
这样的配置可能会导致数据写入不均匀,建议只指定一个数据路径,磁盘可以使用raid0阵列,而不 需要成本高的ssd。
• Coordinating节点:对cpu、memory要求较高。
四、logstash数据采集
• Logstash是一个开源的服务器端数据处理管道。
• Logstash拥有200多个插件,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多都是 Elasticsearch。)
• Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器
1.安装logstash
新建一台虚拟机test4:
(1)下载jdk-8u181-linux-x64.rpm和logstash-7.6.1.rpm
(2) 先安装jdk,再安装logstash
rpm -ivh jdk-8u181-linux-x64.rpm
rpm -ivh logstash-7.6.1.rpm
(3)进入目录/usr/share/logstash/bin,建立软链接,方便开启logstash
cd /usr/share/logstash/bin
ln -s /usr/share/logstash/bin/logstash /usr/bin
(4)测试logstash
logstash -e 'input { stdin { } } output { stdout { } }'
标准输入到标准输出
2.标准输入到es主机
(1)进入目录/etc/logstash/conf.d,编辑test.conf ,使logstash可以标准输入到elasticsearch主机
cd /etc/logstash/conf.d
vim test.conf
hosts指向要elasticsearch主机节点ip及端口
(2)指定配置文件运行logstash
logstash -f /etc/logstash/conf.d/test.conf
(3)输入"westos","redhat"
(4)查看ES主机
在索引中即可看到输入的内容
3.把文件内容输出到es主机(可伪装为日志服务器)
(1)进入目录/etc/logstash/conf.d,编辑log.conf ,使logstash可以将my-es.log文件(从test1上的/var/log/elasticsearch/my-es.log传送至test4上的/var/log/my-es.log)输入到elasticsearch主机
cd /etc/logstash/conf.d
vim log.conf
其中codec是多行过滤插件,多行过滤可以把多行日志记录合并为一行事件
注意:logstash用户需要有要上传的文件的读权限
(2)指定配置文件运行logstash
logstash -f /etc/logstash/conf.d/log.conf
(3)查看ES主机
可看到日志成功上传到es主机中,且多行日志记录合并为了一行
4.grok过滤插件
可对数据进行预处理,更有利于检索
(1)进入目录/etc/logstash/conf.d,编辑grok.conf ,使logstash可以标准输入到elasticsearch主机
cd /etc/logstash/conf.d
vim grok.conf
(2)指定配置文件运行logstash
logstash -f /etc/logstash/conf.d/grok.conf
(3)查看ES主机
可看到message已被预处理,拆分为了多个类型