ELK===》ELK介绍、Elasticsearch单节点部署、Elasticsearch集群部署
一、什么是ELK?通俗来讲,ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组 成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称 为 ELK stack,官方域名为 stactic.co,ELK stack 的主要优点有如下几个:处理方式灵活: elasticsearch 是实时全文索引,具有强大的搜索功能配置相对简单:elastic
一、什么是ELK?
通俗来讲,ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组 成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称 为 ELK stack,官方域名为 stactic.co,ELK stack 的主要优点有如下几个:
- 处理方式灵活: elasticsearch 是实时全文索引,具有强大的搜索功能
- 配置相对简单:elasticsearch 全部使用 JSON 接口,logstash 使用模块配置, kibana 的配置文件部分更简单。
- 检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百 亿级数据的查询秒级响应。
- 集群线性扩展:elasticsearch 和 logstash 都可以灵活线性扩展 前端操作绚丽:kibana 的前端设计比较绚丽,而且操作简单
1.什么是Elasticsearch?
是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索 搜索、支持分布式可实现高可用、提供 API 接口,可以处理大规模日志数据,比 如 Nginx、Tomcat、系统日志等功能。
2.什么是 Logstash?
可以通过插件实现日志收集和转发,支持日志过滤,支持普通 log、自定义 json格式的日志解析。
3.什么是kibana?
主要是通过接口调用 elasticsearch 的数据,并进行前端数据可视化的展现。
二、Elasticsearch 部署
ELK使用场景:
日志平台:利用elasticsearch的快速检索功能,在大量的数据当中可以快速查询需要的日志。
订单平台:利用elasticsearch的快速检索功能,在大量的订单当中检索我们所需要的订单。
搜索平台:利用elasticsearch的快速检索功能,在大量的数据中检索出我们所需要的数据。
1.部署
一般部署elasticsearch有三种方式:
- rpm包安装
- 源码包安装
- docker安装
官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
官网其他版本安装包下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
2.rpm包安装
1)集群规划
2)集群配置
官方推荐集群配置30G。本地使用2核2G
3)系统优化 (两台节点)
#1.关闭selinux
[root@es-01 ~]# setenforce 0
#2.关闭防火墙
[root@es-01 ~]# systemctl disable firewalld
#3.设置时区
[root@es-01 ~]# timedatectl set-timezone Asia/Shanghai
#4.设置程序可以打开的文件数
[root@es-01 ~]# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
#5.重启
reboot
4)下载安装包 (两台节点)
[root@es-01 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-x86_64.rpm
[root@es-02 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-x86_64.rpm
5)安装 (两台节点)
#elasticsearch是依赖于Java
[root@es-01 ~]# yum install java-1.8.0* -y
[root@es-01 ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
#安装elasticsearch
[root@es-01 ~]# yum install elasticsearch-7.12.1-x86_64.rpm -y
6)elastcsearch设置内存锁定(两台节点)
[root@es-01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
LimitAS=infinity
LimitMEMLOCK=infinity #在[service]层LimitAS行下边添加此行内容
[root@es-01 ~]# systemctl daemon-reload
7)修改elasticsearch锁定内存大小
[root@es-01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g #最大锁定内存1g
-Xmx1g #最小锁定内存1g
8)修改elasticsearch的配置文件
#1.主节点配置
[root@es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
[root@es-01 ~]# grep -E '^[^#]' /etc/elasticsearch/elasticsearch.yml
# 设置集群名称
cluster.name: elaina-es
# 设置集群节点名称(节点名称在集群中唯一)
node.name: elaina-node-01
# 设置数据存放目录
path.data: /var/lib/elasticsearch
# 设置日志存放目录
path.logs: /var/log/elasticsearch
# 设置内存锁定
bootstrap.memory_lock: true
# 设置监听的IP
network.host: 0.0.0.0
# 设置监听的端口
http.port: 9200
# 设置主节点
cluster.initial_master_nodes: ["172.16.1.20"]
#2.从节点配置
[root@es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
# 设置集群名称
cluster.name: elaina-es
# 设置集群节点名称(节点名称在集群中唯一)
node.name: elaina-node-02
# 设置数据存放目录
path.data: /var/lib/elasticsearch
# 设置日志存放目录
path.logs: /var/log/elasticsearch
# 设置内存锁定
bootstrap.memory_lock: true
# 设置监听的IP
network.host: 0.0.0.0
# 设置监听的端口
http.port: 9200
# 设置主节点
cluster.initial_master_nodes: ["172.16.1.21"]
9)启动
[root@es-01 ~]# systemctl start elasticsearch.service
3.源码包安装
# 下载源码包
[root@es-01 ~]# wget https://github.com/elastic/elasticsearch/archive/refs/tags/v7.12.1.tar.gz
# 解压
[root@es-01 ~]# tar -xf v7.12.1.tar.gz -C /usr/local
# elasticsearch是依赖于Java
[root@es-01 /opt]# yum install java-1.8.0* -y
[root@es-01 ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
[root@es-01 /opt]# yum install elasticsearch-7.12.1-x86_64.rpm -y
4.docker安装 (主节点安装)
docker run -p 9200:9200 -p 9300:9300 -e "cluster.name=xxx" docker.elastic.co/elasticsearch/elasticsearch:7.12.1
5.安装集群head插件 (主节点安装)
head插件主要是图形化elastic search
1)安装docker (主节点安装)
yum remove docker docker-common docker-selinux docker-engine -y
sudo yum install -y gcc gcc-c++ yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
yum makecache
yum install docker-ce -y
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xj6uu5rz.mirror.aliyuncs.com"]
}
EOF
# 启动docker
systemctl start --now docker
2)拉取镜像并后台运行 (主节点)
[root@es-01 ~]# docker run -d -p 9100:9100 alvinos/elasticsearch-head
e9c8f62358c1ddae141ab4eff64d19d3cce1b4944a4ed75d4907541f6a0f33e6
2)设置elasticsearch跨域访问 (两节点)
[root@es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@es-01 ~]# systemctl restart elasticsearch.service
6.部署elasticsearch主从
elasticsearch是主从数据节点分离的,按照节点还可以分为热数据节点和冷数据节点。
1)部署主节点
参考上述4、5.主节点操作
#修改配置文件
[root@es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.initial_master_nodes: ["172.16.1.20"] #在此行下添加以下内容
# # 设置选举策略
discovery.zen.minimum_master_nodes: 2
# # 设置节点
discovery.zen.ping.unicast.hosts: ["172.16.1.20","172.16.1.21"]
# # 设置是否的主节点
node.master: true
#重启服务
[root@es-01 ~]# systemctl restart elasticsearch.service
2)部署从节点
从节点系统优化与主节点一样
#修改从节点配置文件
[root@es-02 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.initial_master_nodes: ["172.16.1.20"] #在此行下添加以下内容
# # 设置选举策略
discovery.zen.minimum_master_nodes: 2
# # 设置节点
discovery.zen.ping.unicast.hosts: ["172.16.1.20","172.16.1.21"]
# # 设置是否的主节点
node.master: false
#重启服务
[root@es-02 ~]# systemctl restart elasticsearch.service
#故障报错解决:
做到这一步极其容易出现数据不一致的问题,反应到登录网页上就上明明好像能正常访问,其实它的的UUID是错误的。为此可以先删除/var/lib/elasticsearch/*下面的东西,然后再重启elasticsearch。这样就可以了。
[root@es-02 ~]# systemctl stop elasticsearch.service
[root@es-02 ~]# rm -rf /var/lib/elasticsearch/*
[root@es-02 ~]# tail -f /var/log/elasticsearch/elaina-es.log #实时监控集群日志发现问题
[root@es-02 ~]# systemctl start elasticsearch.service #新窗口执行启动命令
三、测试集群性能
1.elasticsearch监控
通过浏览器访问:http://192.168.15.20:9200/_cluster/health?pretty=true, 例如对 status 进行分析,如果等于green(绿色)就是运行在正常,等于yellow(黄色)表示副本分片丢失,red(红色)表示主分片丢失。
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)