2.Elasticsearch部署
[toc]
ELKstack部署及配置
环境准备
公网IP | 内网IP | 主机名 | 部署服务 | 用途 |
---|---|---|---|---|
10.0.0.81 | 172.16.1.81 | elk01 | elasticsearch、JDK | 存储日志的数据库(2G内存) |
10.0.0.82 | 172.16.1.82 | elk02 | elasticsearch、JDK | 存储日志的数据库(2G内存) |
10.0.0.83 | 172.16.1.83 | elk03 | Logstash、JDK | 收集日志、过滤日志 |
10.0.0.84 | 172.16.1.84 | elk04 | Redis、Kibana | 消息队列、日志展示 |
10.0.0.85 | 172.16.1.85 | nginx01 | nginx、filebeat | 修改nginx日志格式为json收集 |
10.0.0.86 | 172.16.1.86 | tomcat01 | tomcat、JDK、filebeat | 修改tomcat日志格式为json收集 |
安装包准备
安装包名 | 用途 |
---|---|
elasticsearch-5.3.0.rpm | 存储日志的数据库 |
elasticsearch-head.tar.gz | elasticsearch的web界面插件 |
logstash-5.3.0.rpm | 日志收集、日志分析工具 |
kibana-5.3.0-x86_64.rpm | 日志展示、日志查询工具 |
filebeat-5.3.2-x86_64.rpm | 日志收集工具(比Logstash轻量) |
jdk-8u121-linux-x64.tar.gz | JAVA容器(es、Logstash、tomcat需要) |
nginx-1.10.3.tar.gz | 测试收集nginx日志 |
apache-tomcat-8.0.38.tar.gz | 测试收集tomcat日志 |
redis-3.2.8.tar.gz | 消息队列工具 |
Elasticsearch环境准备
关闭防火墙
1 | # CentOS6 关闭防火墙 |
关闭SELINUX
1 | # 临时关闭 |
设置epel源
1 | # CentOS6 下载epel源 |
修改时区
1 | # 将时区修改为上海时区 |
设置时间同步
1 | # 同步服务器时间(切记保证集群之间时间一致非常重要) |
部署Elasticsearch
在elk01 和 elk02两台机器分别安装elasticsearch,因为elasticsearch服务运行需要JAVA环境,所以两台服务器都需要安装JAVA环境。
安装JDK环境
下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1 | # 解压JDK安装包 |
安装elasticsearch
手动下载rpm包
本地安装并解决依赖
1
yum localinstall -y elasticsearch-5.3.0.rpm
ES官方源安装
更换官方源
1
2
3
4
5
6
7
8
9vim /etc/yum.repos.d/es.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安装es并解决依赖
1
yum install -y elasticsearch
修改配置文件
CentOS6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27# 查看配置文件修改部分内容
grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
# 设置集群名称(想要其他节点加入同一个集群必须集群名称相同)
cluster.name: elk-cluster
# 节点名称(通过此配置项来区分集群中的所有节点)
node.name: es01
# elasticsearch数据存放目录
path.data: /data/elk/data
# elasticsearch日志存放目录
path.logs: /data/elk/logs
# CentOS6不支持内存锁功能,所以要关闭内存锁
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# elasticsearch监听地址
network.host: 0.0.0.0
# elasticsearch服务端口
http.port: 9200
# 配置所有集群节点IP
discovery.zen.ping.unicast.hosts: ["10.0.0.81", "10.0.0.82"]CentOS7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31# 编辑配置文件
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-cluster
## 设置集群名称(想要其他节点加入同一个集群必须集群名称相同)
node.name: es01
## 节点名称(通过此配置项来区分集群中的所有节点)
path.data: /data/elk/data
## elasticsearch数据存放目录
path.logs: /data/elk/logs
## elasticsearch日志存放目录
bootstrap.memory_lock: true/false
## 内存锁设置(在CentOS7中支持内存锁并且要修改启动脚本,不使用:false)
network.host: 0.0.0.0
## elasticsearch监听地址
http.port: 9200
## elasticsearch服务端口
discovery.zen.ping.unicast.hosts: ["10.0.0.81", "10.0.0.82"]
## 配置所有集群节点IP
# 查看配置文件修改部分内容(CentOS7中配置)
grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
# 修改内存限制(如果有则去掉此行注释)
LimitMEMLOCK=infinity
# 修改启动脚本
vim /usr/lib/systemd/system/elasticsearch.service
# 重新加载启动脚本
systemctl reload-daemon
创建目录并授权
1 | # 创建数据目录 |
优化文件描述符
CentOS7
1
2
3
4
5
6# 编辑limit文件
vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072CentOS6
1
2
3
4# 编辑子配置文件
vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
root soft nproc unlimited
优化文件描述符
1 | # 在配置文件最后一行后添加 |
设置JVM最大最小内存限制
1 | # 编辑配置文件 |
启停elasticsearch
CentOS6
1
2
3# 启动、停止elasticsearch
/etc/init.d/elasticsearch start
/etc/init.d/elasticsearch stopCentOS7
1
2
3# 启动、停止elasticsearch
systemctl start elasticsearch
systemctl stop elasticsearch查看进程和端口
1
2
3
4
5
6
7# 查看启动进程
ps -ef|grep java
# 查看端口
netstat -lntup
tcp 0 0 :::9200 :::* LISTEN 10872/java
tcp 0 0 :::9300 :::* LISTEN 10872/javaPS:如果服务没有启动就修改 内存所true改为false
1
2vim /etc/elasticsearch/elasticsearch.yml
bootstrap.memory_lock: true ---> false
验证启动elasticsearch后的页面
打开浏览器访问地址:http://10.0.0.81:9200/
其他节点安装并加入集群
安装其他节点,步骤和上面一样,修改配置文件时,直接将elk01节点的配置文件scp(拷贝)过去,然后在配置文件中讲节点名称修改后启动即可。
发送修改好的配置文件
1 | # 发送配置文件到其他节点 |
创建目录并授权
1 | # 创建数据目录 |
启停elasticsearch
CentOS6
1
2
3# 启动、停止elasticsearch
/etc/init.d/elasticsearch start
/etc/init.d/elasticsearch stopCentOS7
1
2
3# 启动、停止elasticsearch
systemctl start elasticsearch
systemctl stop elasticsearch查看进程和端口
1
2
3
4
5
6
7# 查看启动进程
ps -ef|grep java
# 查看端口
netstat -lntup
tcp 0 0 :::9200 :::* LISTEN 10872/java
tcp 0 0 :::9300 :::* LISTEN 10872/javaPS:如果服务没有启动就修改 内存所true改为false
1
2vim /etc/elasticsearch/elasticsearch.yml
bootstrap.memory_lock: true ---> false
验证启动elasticsearch后的页面
打开浏览器访问地址:http://10.0.0.82:9200/
Elasticsearch的head插件
安装elasticsearch插件
插件是为了完成不同的功能,官方提供了一些插件但大部分是收费的,另外也有一些开发爱好者提供的插件,可以实现对elasticsearch集群的状态监控与管理配置等功能,我们现在要安装的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能。
安装Elasticsearch的head插件时,要安装npm,npm的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。
在Elasticsearch 5.x版本以后不再支持直接安装head插件,而是需要通过启动一个服务方式。
Github地址:https://github.com/mobz/elasticsearch-head
安装执行流程
安装npm
1 | # 安装npm(只需要在一个节点安装即可,如果前端还有nginx做反向代理可以每个节点都装) |
安装git
1 | # 安装git命令 |
安装nodejs
1 | # 下载nodejs |
安装elasticsearch-head插件
1 | #进入下载head插件代码目录 |
故障解析
故障:连接不上
- 原因是没有打开跨域访问
解决方法:
/etc/elasticsearch/elasticsearch.yml在最后一行下面追加
- http.cors.enabled: true
- http.cors.allow-origin: “*”
重启服务
1
systemctl restart elasticsearch.service