配置三台服务器组成的ELK集群(一)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 这个ELK集群的搭建是在6月份做完,从单机尝试到完成集群配置,前后持续了一周时间、每天抽1~2小时完成的。完成后也写了个简单的文档存在本地了,一直没时间更新到博客园。大名鼎鼎的ELK日志分析系统可以说是十分适合企业使用的开源工具,但是搭建这个给测试团队用的契机并不是因为ELK的功能,反而是每次要看日志里的错误信息,都要去求运维大爷们、看他们脸色行事——那算了还是我们自己来吧。

这个ELK集群的搭建是在6月份做完,从单机尝试到完成集群配置,前后持续了一周时间、每天抽1~2小时完成的。完成后也写了个简单的文档存在本地了,一直没时间更新到博客园。

大名鼎鼎的ELK日志分析系统可以说是十分适合企业使用的开源工具,但是搭建这个给测试团队用的契机并不是因为ELK的功能,反而是每次要看日志里的错误信息,都要去求运维大爷们、看他们脸色行事——那算了还是我们自己来吧。

一、ELK的简介

这里就直接搬运了:

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

 - Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

 - Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用。

 - Kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

本案使用了FileBeats作为日志文件收集的代理,Logstash只作为服务端使用。而且FileBeats部署极为方便,5分钟完成部署、修改配置,推荐用它。

最终使用的组件列表:

 - JDK 1.8_131 x64

 - ElasticSearch 5.4.0

 - ElasticSearch-head

 - ElasticHD

 - Logstash

 - Kibana

三台服务器:

10.113.130.116:安装ElasticSearch、ElasticSearch-head、ElasticHD

10.113.130.117:安装ElasticSearch、Logstash

10.113.130.118:安装ElasticSearch、Kibana

搭建完成后,通过10.113.130.116的地址和端口访问。

 

二、安装JDK

下载JDK 1.8.0.tar.gz文件,解压:

# mkdir /usr/local/jdk
# tar -xvf jdk-8u131-linux-x64.tar.gz -C /usr/local/jdk/

配置环境变量:

# vim /etc/profile

#增加以下配置:
#java
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_131
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

执行以下语句,使环境变量生效;避免重启系统:

# source /etc/profile

验证Java安装成功:

# java -version

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

 

三、安装ElasticSearch

首先说一下,并不是不能用Yum命令来安装,其实用Yum安装的好处在于可以用Service的方式启动、停止ES的运行,比较简单。

但是坏处是Yum安装的文件结构太松散,想改配置文件都不知道存在哪里。各位请看下图:

如果各位能忍受以上的目录结构的话,建议还是用Yum安装,步骤如下:

1)导入Elasticsearch PGP Key:

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2)生成repo文件:

# vim /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

3)执行安装命令 

安装好Elasticsearch 的repo后,就可以通过yum命令安装Elasticsearch了:

# yum install -y elasticsearch

4)添加成启动服务

# chkconfig --add elasticsearch

修改配置文件的过程,将在后面有具体介绍。这里单独说一下,Yum安装后注意查看一下【/etc/sysconfig/elasticsearch】文件中Java path部分的设置,默认为空,是无法启动的,需要填写JAVA_HOME的内容:

# vim /etc/sysconfig/elasticsearch

# Elasticsearch home directory
ES_HOME=/usr/share/elasticsearch

# Elasticsearch Java path
JAVA_HOME=/usr/local/jdk/jdk1.8.0_131

 

建议通过解压tar包的方式完成部署,配置文件更集中、更可控。使用压缩包安装Elasticsearch:

下载elasticsearch-5.4.0.tar.gz,上传到/root目录;解压到/opt目录:

# tar -zxvf elasticsearch-5.4.0.tar.gz -C /opt/
...(略)
# mv /opt/elasticsearch-5.4.0/ /opt/elasticsearch/

使用压缩包安装,需要我们手动创建数据文件、日志文件的二个文件夹:

# mkdir /var/data/elasticsearch
# mkdir /var/log/elasticsearch

通过10.113.130.116上的配置来做讲解,另外2台的配置基本一样,只需要修改node.name字段的内容:

# vim /opt/elasticsearch/config/elasticsearch.yml

# Use a descriptive name for your cluster:
cluster.name: ES-Cluster-5.4.0

# Use a descriptive name for the node:
node.name: node-116

# Path to directory where to store the data (separate multiple locations by comma):
path.data: /var/data/elasticsearch

# Path to log files:
path.logs: /var/log/elasticsearch

# Lock the memory on startup:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

# Set the bind address to a specific IP (IPv4 or IPv6):
network.host: 0.0.0.0

# Set a custom port for HTTP:
http.port: 9200

# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
discovery.zen.ping.unicast.hosts: ["10.113.130.116", "10.113.130.117", "10.113.130.118"]

# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
discovery.zen.minimum_master_nodes: 3

完成配置文件的修改后,复制到另外2台服务器上,确保配置文件除了node.name字段以外的内容一致。

修改完设置以后,启动ElasticSearch:

# /opt/elasticsearch/bin/elasticsearch

 

好了,一般按照上面的步骤,操作到这一步就该出现报错信息了。别紧张,以下是解决错误:

1、错误提示:can not run elasticsearch as root

ES不能通过Root用户执行,需要我们创建一个单独的用户用来运行ElasticSearch。

先创建elasticsearch用户组及elasticsearch用户:

# groupadd elasticsearch
# useradd elasticsearch -g elasticsearch -p elasticsearch

然后更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch:

# cd /opt
# chown -R elasticsearch:elasticsearch elasticsearch

别忘了修改data和log目录的所属用户:

# chown -R elasticsearch:elasticsearch /var/data/elasticsearch
# chown -R elasticsearch:elasticsearch /var/log/elasticsearch

再接下来,有两种处理方式:

a)切换到elasticsearch用户再启动elasticsearch:

# su elasticsearch
$ cd elasticsearch/bin 

#elasticsearch后端启动命令:
$ ./elasticsearch -d

b)不想切换root用户,可以编写如下启动脚本:

# vim es-start.sh

#添加如下内容:
su - elasticsearch -c "nohup /opt/elasticsearch/bin/elasticsearch > /dev/null 2>&1 &"

增加执行权限:

# chmod +x es-start.sh
# mv es-start.sh /usr/local/bin/

于是可以随意启动elasticsearch。像我这么懒的人,当然愿意选择第二种方法。

 

2、错误提示:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

# vim /etc/sysctl.conf

#添加下面配置:
vm.max_map_count=655360

 并执行命令、使修改生效:

# sysctl -p

 

3、错误提示:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

# vim /etc/security/limits.conf
#在文件末尾,添加如下内容: * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 # vim /etc/pam.d/common-session #添加: session required pam_limits.so # vim /etc/pam.d/common-session-noninteractive #添加: session required pam_limits.so

退出SHH的Session 重新登录;

切换到elsearch用户再启动elasticsearch:

# su elsearch

$ cd /opt/elasticsearch/bin
$ ./elasticsearch -d 

通过tail日志文件,观察运行状态:

# tail -f /opt/elasticsearch/logs/ES-Cluster-5.4.0.log
#备注:日志文件名,与设定的集群名相同

请确保在三台机器上都完成ElasticSearch的安装,再继续执行后面的操作。 

 

四、安装ElasticSearch-Head插件

严格来说,ElasticSearch-Head已经不是ES的插件了,保存到/elasticsearch/plugins/目录下是无法运行的;现在的ES-Head是一个单独运行的组件,推荐保存在/opt/目录下,和ES的根目录平级。

ES-Head只安装在10.113.130.116上。首先,需要安装nodejs和npm:

# wget https://npm.taobao.org/mirrors/node/v8.1.0/node-v8.1.0-linux-x64.tar.gz
# tar --strip-components 1 -xzvf node-v* -C /usr/local

# node --version
提示:v8.1.0

# npm -v
提示:5.0.3,安装成功

安装使用Grunt NPM:

# npm install -g grunt-cli
# npm install -g grunt

#安装成功后,请确保Grunt已安装成功,并检查版本。
# grunt -version
grunt-cli v1.2.0
grunt v1.0.1

安装ES-Head: 

# mv elasticsearch-head /opt/
# cd /opt/elasticsearch-head

# npm install

修改elasticsearch-head配置文件:

# vim _site/app.js

#找到:this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
#修改为本机的IP地址:
"http://10.113.130.116:9200";

修改elasticsearch配置文件,否则head启动以后无法连接到es集群

# vim /opt/elasticsearch/config/elasticsearch.yml

#增加如下内容:
http.cors.enabled: true
http.cors.allow-origin: “*”

编写一个ES-Head的启动脚本,与ElasticSearch的启动脚本类似:

# vim es-head-start.sh

#输入下面的2行指令;不要试图合并在一行,我试过的、没成功:
cd /opt/elasticsearch-head
npm run start &

# chmod +x es-head-start.sh
# mv es-head-start.sh /usr/local/bin

杀掉ES的进程、重启ES、再启动ES-Head:

到浏览器,输入服务器的IP和端口:http://10.113.130.116:9100/

刚发现,如果整片写在一个博文的话,篇幅太长了,安装其他的组件的步骤,写在下一篇随笔里吧。觉得有帮助的话,给个赞吧。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
14天前
|
消息中间件 安全 Unix
SSH配置多台服务器之间的免密登陆以及登陆别名
SSH配置多台服务器之间的免密登陆以及登陆别名
26 1
|
29天前
|
弹性计算
2024年阿里云服务器不同实例规格与配置实时优惠价格整理与分享
2024年阿里云服务器的优惠价格新鲜出炉,有特惠云服务器也有普通优惠价格,本文为大家整理汇总了2024年阿里云服务器的优惠价格,包含特惠云服务器和其他配置云服务器的优惠价格。以便大家了解自己想购买的云服务器选择不同实例规格和带宽情况下的价格,仅供参考。
2024年阿里云服务器不同实例规格与配置实时优惠价格整理与分享
|
7天前
|
存储 Java 网络安全
ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
【4月更文挑战第10天】ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
13 1
|
11天前
|
存储 弹性计算 安全
阿里云服务器2核2G、2核4G配置最新租用收费标准及活动价格参考
2核2G、2核4G配置是很多个人和企业建站以及部署中小型的web应用等场景时首选的云服务器配置,这些配置的租用价格也是用户非常关心的问题,本文为大家整理汇总了2024年阿里云服务器2核2G、2核4G配置不同实例规格及地域之间的收费标准,同时整理了这些配置最新活动价格,以供大家参考和选择。
阿里云服务器2核2G、2核4G配置最新租用收费标准及活动价格参考
|
14天前
|
域名解析 网络协议 应用服务中间件
阿里云服务器配置免费https服务
阿里云服务器配置免费https服务
|
17天前
|
安全 关系型数据库 MySQL
国产麒麟服务器等保二级 配置规范(一)
国产麒麟服务器等保二级 配置规范(一)
33 0
|
17天前
|
数据采集
robots.txt配置 减小服务器压力
robots.txt配置 减小服务器压力
13 0
|
28天前
|
网络协议 Linux 网络安全
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
17 0
|
2月前
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
241 0
|
3月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。