【ELK7.4】 集群部署

我与影子孤独终老i 提交于 2020-10-01 23:49:48

一、 简介
Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速,近实时地存储,搜索和分析大量数据。它通常用作支持具有复杂搜索功能和需求的应用程序的底层引擎/技术。

架构图:

二、安装前准备
服务器环境

Node1:  ES、
Node2: ES、filebeat、logstash
Node3: ES、kibana

1、系统优化(在正式安装前需要进行系统优化,负责无法启动)
单个JVM下支撑的线程数
vim /etc/sysctl.conf
vm.max_map_count=655360
vm.swappiness=0



修改文件句柄数

root用户设置
vim /etc/security/limits.conf

root soft nofile 65535
root hard nofile 65535
* soft nofile 65536
* hard nofile 65536
* soft memlock unlimited
* hard memlock unlimited

普通账户设置(es使用非root启动)
vim /etc/security/limits.d/20-nproc.conf

*          soft    nproc     65535
*          hard    nproc     65535
root       soft    nproc     unlimited

2、基础环境

#配置主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3

#主机映射
vim /etc/hosts
172.16.12.110 node1
172.16.12.111 node2
172.16.12.112 node3
#配置Java环境
tar zxf /root/jdk1.8.0_101.tar.gz -C /data/
echo 'export PATH=$PATH:/data/jdk1.8.0_101/bin' >>/etc/profile
source /etc/profile

#配置SSH无密码登陆(三台服务器都需要免密)
ssh-keygen
ssh-copy-id -i id_rsa.pub  work@node1

二、elasticsearch安装
1、下载安装

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.0-linux-x86_64.tar.gz
tar zxf elasticsearch-7.4.0-linux-x86_64.tar.gz  -C /data/

2、集群配置

vim /data/elasticsearch-7.4.0/config/elasticsearch.yml

cluster.name: myescluster         #自定义修改一个集群名称
node.name: node1                 #节点名称
network.host: 0.0.0.0      #节点IP(或者解析的主机名)
http.port: 9200                 # 对外提供服务的端口,9300为集群服务的端口
transport.tcp.port:9300         #集群服务的端口
bootstrap.memory_lock: true          #设置elasticsearch的进程锁住内存
cluster.initial_master_nodes: ["node1", "node2","node3"] # Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点
discovery.zen.ping.unicast.hosts:["172.16.12.110",172.16.12.111","172.16.12.112"]  #集群个节点IP地址
path.logs: /data/elasticsearch-7.4.0/custom/logs/  #日志目录
path.data: /data/elasticsearch-7.4.0/custom/data/   #存放数据目录
path.repo: ["/data/elasticsearch-7.4.0/es_backup"]  #备份目录

#保存退出
创建相应目录
mkdir -p /data/elasticsearch-7.4.0/custom/logs/
mkdir -p /data/elasticsearch-7.4.0/custom/data
mkdir -p /data/elasticsearch-7.4.0/es_backup

path.data:用于设置数据文件的目录,可以指定多个目录,用逗号分隔即可。
path.logs:用于设置日志文件的目录

3、JVM配置

vim /data/elasticsearch-7.4.0/config/jvm.options
-Xmx1g                            # 内存设置为服务器内存的一半

4、分发es安装目录到其他两个节点

scp -r elasticsearch-7.4.0/ work@node2:/data
scp -r elasticsearch-7.4.0/ work@node3:/data
修改node2,node3节点配置文件elasticsearch.yml中的主机名和ip

5、启动集群(全部节点)

启动:
cd /data/elasticsearch-7.4.0/bin
./elasticsearch -d

页面查看,默认端口 9200

在这里插入图片描述
6、插件安装(node1)
(1)head插件

介绍:head插件是ES的一个可视化插件,类似于navicat和mysql的关系。head插件是一个用来浏览、与ES数据进行交互的web前端展示插件,是一个用来监视ES状态的客户端插件。

由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。(npm其实是Node.js的包管理工具,可以理解为maven)

#下载
wget https://github.com/mobz/elasticsearch-head/archive/master.zip

#解压
unzip master.zip
mv elasticsearch-head-master/ /data

(2)下载安装NodeJS

#下载解压
wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz
yum -y install xz
xz -d node-v8.11.4-linux-x64.tar.xz
tar  xvf node-v8.11.4-linux-x64.tar -C /data/

#配置环境变量 vim  /etc/profile
export NODE_HOME=/data/node-v8.11.4-linux-x64
export PATH=$NODE_HOME/bin:$PATH

#刷新配置
source /etc/profile

(3)使用npm安装grunt
设置npm的代理镜像,由于国外的下载较慢,所以设置为国内的,进入到elasticsearch-head-master内执行以下命令

cd  /data/elasticsearch-head-master
npm config set registry https://registry.npm.taobao.org

执行npm install,grunt是基于Node.js的项目构建工具,可以进行打包压缩,测试,执行等等的工作,head插件就是通过grunt启动

#安装
npm install -g grunt
npm install phantomjs-prebuilt@2.1.16 --ignore-scripts
npm install

#版本确认:
node -v
npm -v
grunt -version

(4)修改Head源码
由于head的代码直接执行有很多限制,比如无法跨机器访问。因此需要用户修改两个地方:

a、修改 elasticsearch-head-master/Gruntfile.js 文件,红色部分为添加的,原来没有,设置hostname属性,设置为0.0.0.0

connect: {
                        server: {
                                options: {
                                        hostname: '0.0.0.0',
                                        port: 9100,
                                        base: '.',
                                        keepalive: true
                                }
                        }
                }

b、修改跨域请求配置

修改连接的状态如下,修改之后才能连上,这样head插件才可以访问elasticsearch。
修改文件为elasticsearch-7.4.0/config/elasticsearch.yml,添加如下两行

http.cors.enabled: true
http.cors.allow-origin: "*"

c、修改head的连接地址
vim elasticsearch-head-master/_site/app.js

修改如下所示:
cat app.js |grep app-base_uri
在这里插入图片描述
把localhost修改成你es的服务器地址,如:
在这里插入图片描述
重启elasticsearch




(5)启动head

cd /data/elasticsearch-head-master
nohup grunt server &

页面访问,默认端口9100,绿色为健康,黄色为警告
在这里插入图片描述

三 、logstash安装
1、 下载解压

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz
tar zxf logstash-7.4.0.tar.gz -C /data/

2 、创建配置文件

一个Logstash的pipeline由3部分组成:input, filter, output。

mkdir /data/logstash-7.4.0/conf
vim logstash-simple.conf

input { stdin { } }
output {
  elasticsearch { hosts => ["172.16.12.110:9200"] }
  stdout { codec => rubydebug }
}

3、 运行logstash

cd /data/logstash-7.4.0/bin
./logstash -f ../conf/logstash-simple.conf

这个pipeline例子从标准输入获取数据 stdin,并把结构化数据输出到标准输出stdout。在启动后,看到日志Pipeline main started后,在终端中输入hello world,可以在终端中看到对应输出:
在这里插入图片描述
在企业架构中,一般Logstash的input是beat,output是ES,需要对应的插件。这种模式通常用来调试自己的logstash配置文件。

4、安装beat input插件:

#进入bin目录
cd /data/logstash-7.4.0/bin
#构建离线插件包: 
./logstash-plugin prepare-offline-pack logstash-input-beats

#安装离线插件包: 
./logstash-plugin install file:///data/logstash-7.4.0/logstash-offline-plugins-7.4.0.zip

#安装:
./logstash-plugin install file:///data/logstash-7.4.0/logstash-offline-plugins-7.4.0.zip

#配置 5044 端口作为 Filebeat 的连接和创建 ES 索引。新建 logstash.conf 配置文件,
cd  /data/logstash-7.4.0/config
vim logstash.conf

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => "172.16.12.110:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}
#Logstash 使用该配置使用 ES 的索引,和 Filebeat 做的事情是一样的,不过拥有了额外的缓存以及强大丰富的插件库。
#启动 logstash
nohup ./bin/logstash -f config/logstash.conf &

四 、filebeat安装
1、下载安装

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.4.0-linux-x86_64.tar.gz
tar zxf filebeat-7.4.0-linux-x86_64.tar.gz  -C /data/

2、 编辑filebeat.yml

vim filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /data/logs/*.log
output.logstash:
  hosts: ["172.16.12.111:5044"]

3、 启动filebeat

#启动
nohup ./filebeat -c filebeat.yml &

五、kibana安装
1、简介
Kibana是一个开源的分析和可视化平台,旨在与 Elasticsearch 合作。Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据

2、下载解压

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.4.0-linux-x86_64.tar.gz
tar zxf kibana-7.4.0-linux-x86_64.tar.gz -C /data/

3、 修改配置文件

cd /data/kibana-7.4.0-linux-x86_64/config
vim kibana.yml

server.port: 5601
server.host: "0.0.0.0"
server.name: "node3"
elasticsearch.hosts: ["http://172.16.12.110:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"

4、 启动Kibana

cd /data/kibana-7.4.0-linux-x86_64/bin
nohup ./kibana &

页面访问:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!