ELK(5.6.3)技术栈集群搭建

1、ElasticSearch单节点和集群搭建

系统环境

系统/软件 版本
centos 7
jdk # es 依赖jdk 8
node # es 安装head插件需要 8.2.1
elasticsearch 5.6.3
logstash 5.6.3
kibana 5.6.3

机器规划及节点分布

主机 节点 节点 节点
192.168.1.110 elasticsearch-master logstash kibana
192.168.1.111 Elasticsearch-slave1 logstash
192.168.1.112 Elasticsearch-slave2 logstash

目录分配

  • 下载软件源码包存放的位置:
1
/usr/local/src/
  • 安装位置:
1
/usr/local/

相关软件包官方下载地址

https://www.elastic.co/downloads

①、elasticsearch 单节点安装(192.168.1.110)

下载:

1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.3.tar.gz

解压缩

1
tar -zxvf elasticsearch-5.6.3.tar.gz

创建软链接

1
ln -s /usr/local/elasticsearch-5.6.3/ /usr/local/elasticsearch-master

创建elasticsearch用户,把elasticsearch-master的所有者和所有组设置为用户elasticsearch(ES不能以root用户启动)

1
2
3
4
5
6
# 添加 elasticsearch 用户
useradd elasticsearch
# 为 elasticsearch 用户设置密码
passwd elasticsearch
# 将 elasticsearch-master 的目录的所有者和所属组设置为用户 elasticsearch
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-master

启动

1
2
3
4
5
6
# 进入es的根目录
cd elasticsearch-master
# 启动(放入后台启动,注意不能以root用户启动,以elasticsearch用户启动)
./bin/elasticsearch -d
# 访问es
http://localhost:9200

elastisearch 安装常见错误日志和解决方案参考地址:

  • 报错”max virtual memory areas vm.maxmapcount [65530] is too low”,要运行下面的命令。
1
sudo sysctl -w vm.max_map_count=262144
  • 其它报错信息解决方案参考地址
1
http://www.jianshu.com/p/4c6f9361565b

测试ES服务是否启动正常(默认监听9200端口)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 访问地址
http://192.168.1.110:9200
# 返回数据
{
name: "aRvmIj4",
cluster_name: "elasticsearch",
cluster_uuid: "tXoxyBvmSFGNkiJfAOJWXw",
version: {
number: "5.6.3",
build_hash: "1a2f265",
build_date: "2017-11-24T20:33:39.012Z",
build_snapshot: false,
lucene_version: "6.6.1"
},
tagline: "You Know, for Search"
}

ES的Head插件安装(提供友好的web界面,es一些基本信息的查询)

下载

1
wget  https://github.com/mobz/elasticsearch-head/archive/master.zip

解压缩

1
unzip master.zip

安装

1
2
3
4
5
6
# 进入 elasticsearch-head-master 目录
cd elasticsearch-head-master
# 执行 npm install
npm install
# 运行 npm run start
npm run start

访问ESHead插件(默认监听9100端口)

http://localhost:9100

ES和Head插件关联配置(ES和Head插件属于两个不同的进程,解决跨域问题)

修改:elasticsearch-5.6.3/config/elasticsearch.yml配置文件

1
2
3
4
5
# 编辑ES配置文件
vim elasticsearch.yml
# 在配置文件最后添加两行配置
http.cors.enabled: true # 注意yml文件的格式,true 前面有空格
http.cors.allow-origin: "*"

最后重启ES服务和ES的Head插件,配置完成

②、elasticsearch 集群(1 master,2个slave)-> (192.168.1.110(master),192.168.1.111,192.168.1.112)

基于第一步单节点(192.168.1.110)安装集群(我们把它设置为Master节点)

修改:elasticsearch-master/config/elasticsearch.yml配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 解决跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"
# 集群名称
cluster.name: gulj-es
# 节点名称
node.name: es-master
# 告知节点为master节点
node.master: true
# 设置是否为数据节点
node.data: true
# Ip地址
network.host: 192.168.1.110
# 端口
http.port: 9200
# 日志存放位置
path.logs: /data/elasticsearch/logs
# 数据存放位置
path.data: /data/elasticsearch/data
# 单播,配置集群中的所有节点
discovery.zen.ping.unicast.hosts: ["192.168.1.110","192.168.1.111"]

重新解压缩elasticsearch-5.6.3.tar.gz包复制两份,

分别命名为 elasticsearch_slave1(节点:192.168.1.111)和elasticsearch_slave2(节点:192.168.1.112)

1
2
3
4
5
# 解压缩 es 包
tar -zxvf elasticsearch-5.6.3.tar.gz
# 复制两份 es 并重命名
cp -r elasticsearch-5.6.3 elasticsearch_slave1
cp -r elasticsearch-5.6.3 elasticsearch_slave2

分别修改 elasticsearch_slave1、elasticsearch_slave2 的 elasticsearch.yml 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 集群名称
cluster.name: gulj-es
# 节点名称,注意salve2节点,需要命名为对应的es-slave02
node.name: es-slave01
# 不是master
node.master: false
# 数据节点
node.data: true
# 绑定的Ip
network.host: 0.0.0.0
# 绑定端口
http.port: 9200
# 日志位置
path.logs: /data/elasticsearch/logs
# 数据位置
path.data: /data/elasticsearch/data
# 单播发现
discovery.zen.ping.unicast.hosts: ["192.168.1.110"]
# 解决跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

elasticsearch_slave2的配置文件和elasticsearch_slave1的配置文件大致相同,只需要修改node.name(节点名称)这里不再演示(注意防火墙的设置,建议关闭)

Elasticsearch Head 插件页面展示

2、logStash安装

下载
1
wget  https://artifacts.elastic.co/downloads/logstash/logstash-5.6.3.tar.gz

解压缩

1
tar -zxvf logstash-5.6.3.tar.gz

创建软链接

1
2
# 创建软连接
ln -s /usr/local/logstash-5.6.3 /usr/local/logstash

创建logstash配置文件

1
2
# 创建logstash配置文件
vim logstash.conf

logstash.conf 文件内容(根据各自的业务需求,收集相应的日志,具体语法,参考官方文档)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
input {
file {
# 收集ES的Log日志
path => "/data/elasticsearch/logs/gulj-es.log"
# 自定义类型
type => "es-master"
# 从开始位置进行收集
start_position => "beginning"
}

}
output{
elasticsearch{
# ES节点主机地址
hosts => ["192.168.1.110:9200"]
# 设置索引名称
index => "es-master-log"
}
}

启动

1
2
# 启动logstash
./bin/logstash -f logstash.conf

3、Kibana安装

下载

1
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.3-linux-x86_64.tar.gz

解压缩

1
tar -zxvf kibana-5.6.3-linux-x86_64.tar.gz

创建软连接

1
ln -s /usr/local/kibana-5.6.3-linux-x86_64 /usr/local/kibana

修改配置文件

1
2
3
4
5
6
7
8
9
10
11
# 打开kibana配置文件
vim kibana/conf/kibana.yml
# 打开或修改以下配置参数
# 监听端口
server.port: 5601
# 监听主机
server.host: "192.168.1.110"
# ES服务地址
elasticsearch.url: "http://192.168.1.110:9200"
# kibana的索引
kibana.index: ".kibana"

启动

1
2
# 启动kibana
./bin/kibana

Kibana页面展示