目录
(1)关闭防火墙和系统安全机制(全部节点操作,以node1为例)
2、安装Zookeeper软件包(全部节点操作,以node1为例)
4、创建数据目录和日志目录(全部节点操作,以node1为例)
6、配置Zookeeper启动脚本(全部节点操作,以node1为例)
4、配置Kafka启动脚本(全部节点操作,以node1为例)
1、安装elasticsearch-rpm软件包(在node1和node2节点操作,以node1为例)
2、加载系统服务(在node1和node2节点操作,以node1为例)
3、更改elasticsearch主配置文件(在node1和node2节点操作,以node1为例)
4、创建数据存放路径并授权 (在node1和node2节点操作,以node1为例)
5、启动elasticsearch是否成功开启(在node1和node2节点操作,以node1为例)
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上访问)
2、安装logstash-rpm软件包(在node3节点操作)
(2)使用rubydebug显示详细输出,codec为一种编解码器
(3)使用Logstash将信息写入Elasticsearch中
(4)在windows上访问,查看索引信息,多出logstash-日期,http://192.168.32.11:9100
(4)在windows上访问,查看索引信息,会多出system-日期,http://192.168.32.11:9100
4、在windows上访问192.168.32.11:5601,首次登录创建一个索引名字:system-*(这是对接系统日志文件),然后点最下面的出面的create 按钮创建
5、然后点最左上角的Discover按钮会发现system-*信息
6、对接Apache主机的Apache日志文件,访问日志、错误日志(在node3节点操作)
(2)在windows上访问打开输入http://192.168.32.13,制造点访问记录
(3)打开浏览器输入http://192.168.32.11:9100/查看索引信息,能发现apache_error-2021.11.26和apache_access-2021.11.26
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行,接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
##54行