一、背景介绍
ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信息显示,ELK Stack 已经成为目前最流行的集中式日志解决方案。
Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;
Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;
Kibana:数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;
Filebeat:ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。
架构模式:
二、Elasticsearch环境描述
CentOS7 4C 8G
IP | port | version |
---|---|---|
192.168.18.7 | 9200 | 7.5.0 |
192.168.18.8 | 9200 | 7.5.0 |
192.168.18.9 | 9200 | 7.5.0 |
三、环境安装部署
1、下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-linux-x86_64.tar.gz
2、安装jdk
yum install -y java-1.8.0-openjdk
3、解压
tar -xf elasticsearch-7.5.0-linux-x86_64.tar.gz -C /opt/
4、修改配置文件
[root@es01 ~]# grep -n -v '#' /etc/elasticsearch/elasticsearch.yml |grep -v '^$'
cluster.name: escluster #设置集群名字
index.number_of_shards: 3 #设置es索引分片数量,分布式存储,提高查询效率等
index.number_of_replicas: 1 #设置分片副本数量,提供数据高可用
node.name: es01 #设置本节点名字,另外2台可依次02、03
path.data: /data/es_data #设置es索引数据存放位置
network.host: 192.168.18.7 #设置此节点绑定IP
discovery.zen.ping.unicast.hosts: ["192.168.18.7", "192.168.18.8", "192.168.18.9"] #设置集群节点成员
5、参数详解:
1、node.attr.rack指定节点的部落属性,这是一个比集群更大的范围。
2、node.master指定是否为主节点。该属性可不指定,节点之间自主选举。
3、node.data指定是否存储数据(数据节点)
4、cluster.initial_master_nodes参数:你可以通过为 cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或 IP 地址来引导启动集群。你可以在命令行或 elasticsearch.yml 中提供这些信息。你还需要配置发现子系统,这样节点就知道如何找到彼此。
6、jvm.options配置
7、启动es
由于elasticsearch不能用root用户启动,所以需要创建一个新用户
[root@es01 ~]# useradd elasticsearch -g root
将elasticsearch加入root用户组
[root@es01 elasticsearch-7.5.0]# chown -R elasticsearch /opt/elasticsearch-7.5.0
切换到elasticsearch用户
su - elasticsearch
./elasticsearch -d 启动
四、报错解决
1. seccomp unavailable 错误
解决方法:elasticsearch.yml 配置
bootstrap.memory_lock: false
#bootstrap.systemcallfilter: false
2. max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
解决方法:修改 /etc/security/limits.conf,配置:
elasticsearch soft nofile 65535 #软限 此处elasticsearch为启动用户
elasticsearch hard nofile 65535 #硬限
3. max virtual memory areas vm.maxmapcount [65530] is too low
解决方法:修改 /etc/sysctl.conf,添加 :
vm.max_map_count=262144
然后 sysctl -p 生效
4. the default discovery settings are unsuitable...., last least one of [....] must be configured
解决方法:elasticsearch.yml 开启配置:
node.name: node-1
cluster.initialmasternodes: ["es01"]*
其他节点配置一样即可
五、验证
通过浏览器访问三台机器的映射端口可以看出同属于同一个集群
至此elasticsearch集群部署完成。后面会接续介绍kibana和logstash部署及日志采集方法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。