集群部署Elasticsearch+Logstash+Kibana+Filebeat+Kafka+Zookeeper

目录引言一、安装Zookeeper步骤1、准备阶段(全部节点操作,以node1为例)(1)关闭防火墙和系统安全机制(全部节点操作,以node1为例)(2)同步时钟源(全部节点操作,以node1为例)(3)JDK的安装(全部节点操作,以node1为例)(4)配置hosts(全部节点操作,以node1为例)2、安装Zookeeper软件包(全部节点操作,以node1为例)3、修改配置文件(全部节点操作,以node1为例)4、创建数据目录和日志目录(全部节点操作,以node
摘要由CSDN通过智能技术生成

目录

引言

一、安装Zookeeper步骤

1、准备阶段(全部节点操作,以node1为例)

(1)关闭防火墙和系统安全机制(全部节点操作,以node1为例)

(2)同步时钟源(全部节点操作,以node1为例)

(3)JDK的安装(全部节点操作,以node1为例)

(4)配置hosts(全部节点操作,以node1为例)

2、安装Zookeeper软件包(全部节点操作,以node1为例)

3、修改配置文件(全部节点操作,以node1为例)

4、创建数据目录和日志目录(全部节点操作,以node1为例)

5、创建myid文件(全部节点操作)

6、配置Zookeeper启动脚本(全部节点操作,以node1为例)

7、设置开机自启(全部节点操作,以node1为例)

8、启动并查看状态(全部节点操作)

二、安装Kafka步骤

1、安装Kafka软件包(全部节点操作,以node1为例)

2、修改配置文件(全部节点操作,以node1为例)

3、 修改环境变量(全部节点操作,以node1为例)

4、配置Kafka启动脚本(全部节点操作,以node1为例)

5、设置开机自启(全部节点操作,以node1为例)

6、启动Kafka(全部节点操作,以node1为例)

7、Kafka命令行操作(在node1节点操作)

(1)创建topic

(2)查看当前topic列表

(3)查看topic详细信息

(4)发布消息

(5)消费消息

(6)删除分区数

三、安装Elasticsearch步骤

1、安装elasticsearch-rpm软件包(在node1和node2节点操作,以node1为例)

2、加载系统服务(在node1和node2节点操作,以node1为例)

3、更改elasticsearch主配置文件(在node1和node2节点操作,以node1为例)

4、创建数据存放路径并授权 (在node1和node2节点操作,以node1为例)

5、启动elasticsearch是否成功开启(在node1和node2节点操作,以node1为例)

6、查看节点信息(在windows上访问)

7、检验集群健康状态(在windows上访问)

8、查看集群状态(windows上访问)

四、安装Elasticsearch-head插件步骤

1、编译安装node组件依赖包(在node1和node2节点操作,以node1为例)

2、安装phantomjs,前端框架(在node1和node2节点操作,以node1为例)

3、安装elasticsearch-head,数据可视化工具(在node1和node2节点操作,以node1为例)

4、修改主配置文件(在node1和node2节点操作,以node1为例)

5、启动elasticsearch-head(在node1和node2节点操作,以node1为例)

6、使用elasticsearch-head插件查看集群状态(windows上访问)

7、创建索引(在node1创建)

五、安装Logstash步骤

1、安装Apahce服务(在node3节点操作)

2、安装logstash-rpm软件包(在node3节点操作)

3、测试logstash命令

(1)输入采用标准输入,输出采用标准输出

(2)使用rubydebug显示详细输出,codec为一种编解码器

(3)使用Logstash将信息写入Elasticsearch中

(4)在windows上访问,查看索引信息,多出logstash-日期,http://192.168.32.11:9100

(5)点击数据浏览查看响应的内容

4、在Apache主机上做对接配置

(1)给系统日志其他用户加“读”的权限

(2)便捷logstash配置文件

(3)重启服务

(4)在windows上访问,查看索引信息,会多出system-日期,http://192.168.32.11:9100

六、安装Kibana步骤

1、安装kibana-rpm软件包(在node1节点操作)

2、修改配置文件(在node1节点操作)

3、重启、自开启服务(在node1节点操作)

4、在windows上访问192.168.32.11:5601,首次登录创建一个索引名字:system-*(这是对接系统日志文件),然后点最下面的出面的create 按钮创建

5、然后点最左上角的Discover按钮会发现system-*信息

6、对接Apache主机的Apache日志文件,访问日志、错误日志(在node3节点操作)

(1)编写对接apache服务的配置文件

(2)在windows上访问打开输入http://192.168.32.13,制造点访问记录

(3)打开浏览器输入http://192.168.32.11:9100/查看索引信息,能发现apache_error-2021.11.26和apache_access-2021.11.26

(4)打开浏览器输入http://192.168.32.11:5601,点击左下角有个management选项—index patterns—create index pattern,分别创建apache_error-*和 apache_access-*的索引。

七、安装Filebeat步骤

1、安装filebeat-rpm软件包(在node4节点操作)

2、 修改filebeat主配置文件(在node4节点操作)

3、修改Logstash节点配置并启动(在node3节点操作)

八、访问测试


引言

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎;

Logstash是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出;

Kibana是一个针对Elasticsearch的开源分析及可视化平台;

Filebeat是一款实现的轻量型日志采集器;

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据;

Zookeeper是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

这个架构图从左到右,总共分为5层,每层实现的功能和含义分别介绍如下:     

第1层:数据采集层

数据采集层位于最左边的业务服务器集群上,在每个业务服务器上面安装了Filebeat做日志收集,然后把采集到的原始日志发送到Kafka+Zookeeper集群上。          

第2层:消息队列层

原始日志发送到Kafka+Zookeeper集群上后,会进行集中存储,此时,Filbeat是消息的生产者,存储的消息可以随时被消费。        

第3层:数据分析层

Logstash作为消费者,会去Kafka+Zookeeper集群节点实时拉取原始日志,然后将获取到的原始日志根据规则进行分析、清洗、过滤,最后将清洗好的日志转发至Elasticsearch集群。        

第4层:数据持久化存储

Elasticsearch集群在接收到Logstash发送过来的数据后,执行写磁盘,建索引库等操作,最后将结构化的数据存储到Elasticsearch集群上。      

第5层:数据查询、展示层

Kibana是一个可视化的数据展示平台,当有数据检索请求时,它从Elasticsearch集群上读取数据,然后进行可视化出图和多维度分析。

实验部署

主机名

操作系统

IP地址

主要软件

node1

Centos7.6

192.168.32.11

Elasticsearch、Kibana、Zookeeper、Kafka

node2

Centos7.6

192.168.32.12

Elasticsearch、Zookeeper、Kafka

node3

Centos7.6

192.168.32.13

Logstash、Apache、Zookeeper、Kafka

node4

Centos7.6

192.168.32.14

Filebeat、Zookeeper、Kafka

一、安装Zookeeper步骤

1、准备阶段(全部节点操作,以node1为例)

(1)关闭防火墙和系统安全机制(全部节点操作,以node1为例)

[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@node1 ~]# setenforce 0
setenforce: SELinux is disabled

(2)同步时钟源(全部节点操作,以node1为例)

[root@node1 ~]# ntpdate ntp1.aliyun.com

(3)JDK的安装(全部节点操作,以node1为例)

[root@node1 ~]# cd /opt/
[root@node1 opt]# ls
jdk-8u91-linux-x64.tar.gz
[root@node1 opt]# tar xzvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@node1 opt]# cd /usr/local/
[root@node1 local]# mv jdk1.8.0_91/ jdk
[root@node1 local]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@node1 local]# cd 
[root@node1 ~]# vim /etc/profile
[root@node1 ~]# source /etc/profile
[root@node1 ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

(4)配置hosts(全部节点操作,以node1为例)

[root@node1 ~]# vim /etc/hosts
192.168.32.11 node1
192.168.32.12 node2
192.168.32.13 node3
192.168.32.14 node4

2、安装Zookeeper软件包(全部节点操作,以node1为例)

[root@node1 ~]# cd /opt/
[root@node1 opt]# ls
apache-zookeeper-3.5.7-bin.tar.gz
[root@node1 opt]# tar xzvf apache-zookeeper-3.5.7-bin.tar.gz -C /usr/local/

3、修改配置文件(全部节点操作,以node1为例)

[root@node1 opt]# cd /usr/local/apache-zookeeper-3.5.7-bin/conf/
[root@node1 conf]# ls
zoo_sample.cfg
[root@node1 conf]# cp zoo_sample.cfg zoo.cfg
[root@node1 conf]# vim zoo.cfg
#2行,通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒
tickTime=2000
#5行,Leader和Follower初始连接时能容忍的最多心跳数(tickTime的数量),这里表示为10*2s
initLimit=10
#8行,Leader和Follower之间同步通信的超时时间,这里表示如果超过5*2s,Leader认为Follwer死掉,并从服务器列表中删除Follwer
syncLimit=5
#12行,修改,指定保存Zookeeper中的数据的目录,目录需要单独创建
dataDir=/usr/local/apache-zookeeper-3.5.7-bin/data
#13行,添加,指定存放日志的目录,目录需要单独创建
dataLogDir=/usr/local/apache-zookeeper-3.5.7-bin/logs
#15行,客户端连接端口
clientPort=2181
#末行添加集群信息
server.1=192.168.32.11:3188:3288
server.2=192.168.32.12:3188:3288
server.3=192.168.32.13:3188:3288
server.4=192.168.32.14:3188:3288
注:server.A=B:C:D
A是一个数字,表示这个是第几号服务器。集群模式下需要在zoo.cfg中dataDir指定的目录下创建一个文件myid,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
B是这个服务器的地址。
C是这个服务器Follower与集群中的Leader服务器交换信息的端口。
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 

4、创建数据目录和日志目录(全部节点操作,以node1为例)

[root@node1 ~]# cd /usr/local/apache-zookeeper-3.5.7-bin/
[root@node1 apache-zookeeper-3.5.7-bin]# mkdir data
[root@node1 apache-zookeeper-3.5.7-bin]# mkdir logs
[root@node1 apache-zookeeper-3.5.7-bin]# ls
data   logs 

5、创建myid文件(全部节点操作)

(1)node1:
echo 1 > /usr/local/apache-zookeeper-3.5.7-bin/data/myid
(2)node2:
echo 2 > /usr/local/apache-zookeeper-3.5.7-bin/data/myid
(3)node3:
echo 3 > /usr/local/apache-zookeeper-3.5.7-bin/data/myid
(4)node4:
echo 4 > /usr/local/apache-zookeeper-3.5.7-bin/data/myid

6、配置Zookeeper启动脚本(全部节点操作,以node1为例)

[root@node1 ~]# vim /etc/init.d/zookeeper
#!/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
ZK_HOME='/usr/local/apache-zookeeper-3.5.7-bin'
case $1 in
start)
    echo "---------- zookeeper 启动 ------------"
    $ZK_HOME/bin/zkServer.sh start
;;
stop)
    echo "---------- zookeeper 停止 ------------"
    $ZK_HOME/bin/zkServer.sh stop
;;
restart)
    echo "---------- zookeeper 重启 ------------"
    $ZK_HOME/bin/zkServer.sh restart
;;
status)
    echo "---------- zookeeper 状态 ------------"
    $ZK_HOME/bin/zkServer.sh status
;;
*)
    echo "Usage: $0 {start|stop|restart|status}"
esac

7、设置开机自启(全部节点操作,以node1为例)

[root@node1 ~]# chmod +x /etc/init.d/zookeeper 
[root@node1 ~]# chkconfig --add zookeeper

8、启动并查看状态(全部节点操作)

(1)node1:
[root@node1 ~]# service zookeeper start
---------- zookeeper 启动 ------------
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node1 ~]# service zookeeper status 
---------- zookeeper 状态 ------------
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
(2)node2:
[root@node2 ~]# service zookeeper start
---------- zookeeper 启动 ------------
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node2 ~]# service zookeeper status 
---------- zookeeper 状态 ------------
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
(3)node3:
[root@node3 ~]# service zookeeper start
---------- zookeeper 启动 ------------
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node3 ~]# service zookeeper status 
---------- zookeeper 状态 ------------
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
(4)node4:
[root@node4 ~]# service zookeeper start
---------- zookeeper 启动 ------------
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node4 ~]# service zookeeper status 
---------- zookeeper 状态 ------------
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader

二、安装Kafka步骤

1、安装Kafka软件包(全部节点操作,以node1为例)

[root@node1 ~]# cd /opt/
[root@node1 opt]# ls
kafka_2.13-2.7.1.tgz  rh
[root@node1 opt]# tar zxvf kafka_2.13-2.7.1.tgz -C /usr/local/

2、修改配置文件(全部节点操作,以node1为例)

[root@node1 opt]# cd /usr/local/kafka_2.13-2.7.1/config/
[root@node1 config]# cp server.properties server.properties.bak
##21行,broker的全局唯一编号,每个broker不能重复,因此要在其他node上配置不同的broker.id,node2为1,node3为2,node4为3
broker.id=0
##31行,指定监听的IP(本机的ip地址)和端口
listeners=PLAINTEXT://192.168.32.11:9092
##36行,指定监听的IP(本机的ip地址)和端口
advertised.listeners=PLAINTEXT://192.168.32.11:9092
##42行,broker 处理网络请求的线程数量,一般情况下不需要去修改
num.network.threads=3
##45行,用来处理磁盘IO的线程数量,数值应该大于硬盘数
num.io.threads=8
##48行,发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
##51行,接收套接字
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值