SpringBoot+Kafka+ELK收集日志搭建可视化框架—02.搭建Kafka集群
准备搭建所需压缩包:
1.jdk-1.8
2.zookeeper-3.4.10
3.kafka-2.11
准备搭建集群的三台服务器
三台服务器:
192.168.133.167
192.168.133.168
192.168.133.169
1.安装jdk
解压jdk
[root@localhost opt]# tar -zxvf jdk8.tar.gz
[root@localhost opt]# ll
total 209100
drwxr-xr-x. 8 10 143 255 Mar 28 2018 jdk1.8.0_171
-rw-r--r--. 1 root root 214117177 Jul 10 2020 jdk8.tar.gz
[root@localhost opt]#
修改 /etc/profile文件末尾添加以下几句
[root@localhost ~]# vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_171/
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
#保存退出后,刷新配置文件 查看jdk版本
[root@localhost opt]# source /etc/profile
[root@localhost opt]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
2.安装zookeeper集群
kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境。一般不建议直接使用 Kafka 自带的 Zookeeper 建立 zk 集群,这里我们使用独立的 zk 集群。
下载zookeeper分别上传到三台主机,下面配置192.168.133.167主机:
http://mirror.bit.edu.cn/apache/zookeeper/
本文使用的是http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/
上传zookeeper-3.4.10到/opt目录,使用如下命令解压文件。
#解压文件
[root@localhost opt]# tar -zxvf zookeeper-3.4.10.tar.gz
#重命名
[root@localhost opt]# mv zookeeper-3.4.10 zookeeper
进入目录创建两个文件夹存放快照日志和事物日志
[root@localhost zookeeper]#mkdir data datalog
[root@localhost zookeeper]#mkdir
修改配置文件
进入conf目录
[root@localhost zookeeper]# cd conf
复制一份默认的zoo_sample.cfg文件修改文件名为zoo.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
接下来修改zoo.cfg 文件添加如下图所示:
[root@localhost conf]# vi zoo.cfg
#tickTime:是 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,每个 tickTime 时间就会发送一个心跳。。
#initLimit:用来配置 Zookeeper 接受客户端(Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器集群中只会有一个Leader,Follower 会有多个)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过
5个心跳的时间(也就是 tickTime)长度后 Zookeeper
服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 52000=10 秒。
#syncLimit:用来标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是52000=10秒
#dataDir:快照日志的存储路径。
#dataLogDir:事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,当zk吞吐量较大的时候,产生的事物日志、快照日志太多会严重影响zk的性能。
#clientPort:是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
进入创建的data目录下创建myid文件
[root@localhost conf]# cd ../data
[root@localhost data]# vi myid
内容为1
#后面的168和169机器myid文件内容改为 2 和3
配置192.168.133.168和192.168.133.169主机步骤同上:
启动Zk服务
#进入到zookeeper的bin目录下
#启动服务
./zkServer.sh start
#启动成功后的信息:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/ ../conf/zoo.cfg
Starting zookeeper ... STARTED
#检查服务器状态
./zkServer.sh status
#下面的状态为启动成功。
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/ ../conf/zoo.cfg
Mode: follower
#Mode有两种类型:leader和follower,leader代表领导(主节点),follower代表下属(备节点)
#zk集群一般只有一个leader,follower有多个,主一般是相应客户端的读写请求,而从主同步数据,当主挂掉之后就会从follower里投票选举一个leader出来。
此时zookeeper集群就成功搭建完成了,下面开始搭建kafka集群。
3. 安装Kafka
上传压缩文件到/opt目录下
使用以下命令进行解压
tar -zxvf kafka_2.11-1.0.0.tgz
修改解压后的文件夹名字
mv kafka_2.11-1.0.0 kafka
进入该文件夹 创建kafka消息目录
mkdir kafkalogs
接下来修改kafka配置文件
#进入到config目录
cd /opt/kafka/config/
可以看到此目录下有关于zookeeper的一些文件,这是kafka内置的zookeeper集群,可以使用它来直接启动,但建议使用独立的zookeeper集群。
修改 server.properties一下几项
broker.id=1 #后面的每台服务器在上面需要修改一下 依次为 1 、2 、3
listeners=PLAINTEXT://192.168.133.167:9092 #后面的机器修改为各自的ip
log.dirs=/opt/kafka/kafkalogs
zookeeper.connect=192.168.133.167:2182,192.168.133.168:2183,192.168.133.167:2184 #zk集群地址
配置192.168.133.168和192.168.133.169主机步骤同上:
此时Kafka集群就成功搭建完成了,启动Kafka集群并测试。
#从启动Kafka集群(3台都需要启动)
#分别进入三台主机的kafka的根目录
cd /opt/kafka
#启动服务
./bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
# 启动命令中的 -daemon 表示以守护进程的方式启动.
测试kafka
创建主题:
#创建一个kafak_test主题,分区数为3,备份数为3
#在kafka根目录执行下面命令
./bin/kafka-topics.sh --create --zookeeper 192.168.133.167:2182 --replication-factor 3 --partitions 3 --topic kafak_test
启动生产者:
#kafka根目录执行,启动一个生产者
./bin/kafka-console-producer.sh --broker-list 192.168.133.167:9092 --topic kafak_test
不要关闭生产者窗口,再打开一个新窗口,进入到kafka根目录,启动消费者:
#启动消费者
./bin/kafka-console-consumer.sh --bootstrap-server 192.168.133.167:9092,192.168.133.168:9092,192.168.133.169:9092 --topic test --from-beginning
在生产者窗口随意发送一条消息,查看消费者是否接收成功。
参考与:https://www.cnblogs.com/bixiaoyu/p/9487539.html