提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
搭建kafka
kafka是什么?
kafka:消息中间件
典型的生产者消费者模型,一边生产一边消费
为什么要使用kafka?
使用kafka做日志统一收集
1、故障发送时方便定位问题
2、日志集中管理,后续需要日志的程序直接从kafka获取日志即可,尽可能减少日志处理对nginx的影响
kafka通常用于:日志收集、业务解耦、流量削峰
这里使用三台机器搭建kafka集群,三台机器都要搭建好kafka
1、安装
安装java
yum install java wget -y
安装kafka
wget https://mirrors.bfsu.edu.cn/apache/kafka/2.8.1/kafka_2.12-2.8.1.tgz --no-check-certificate
安装zookeeper
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz --no-check-certificate
解包kafka和zk(在/opt目录下进行)
tar xf kafka_2.12-2.8.1.tgz
tar xf apache-zookeeper-3.6.3-bin.tar.gz
2、配置kafka
修改/opt/kafka_2.12-2.8.1/config/server.properties文件
注意每台机器的broker.id不一样,主机名不一样,其他的配置都一样
机器一
[root@nginx-kafka01 config]# vim server.properties
broker.id=1
listeners=PLAINTEXT://nginx-kafka01:9092
log.dirs=/data
num.partitions=3
zookeeper.connect=192.168.225.146:2181,192.168.225.147:2181,192.168.225.148:2181
机器二
[root@nginx-kafka02 config]# vim server.properties
broker.id=2
listeners=PLAINTEXT://nginx-kafka02:9092
log.dirs=/data
num.partitions=3
zookeeper.connect=192.168.225.146:2181,192.168.225.147:2181,192.
168.225.148:2181
机器三
[root@nginx-kafka03 config]# vim server.properties
broker.id=3
listeners=PLAINTEXT://nginx-kafka03:9092
log.dirs=/data
num.partitions=3
zookeeper.connect=192.168.225.146:2181,192.168.225.147:2181,192.168.225.148:2181
3、配置zookeeper
配置文件的路径: /opt/apache-zookeeper-3.6.3-bin/conf
1、复制
[root@nginx-kafka01 conf]# pwd
/opt/apache-zookeeper-3.6.3-bin/conf
[root@nginx-kafka01 conf]# cp zoo_sample.cfg zoo.cfg
2、修改zoo.cfg(每台机器的zoo.cfg文件里加入以下三行)
[root@nginx-kafka01 conf]# vim zoo.cfg
server.1=192.168.225.146:3888:4888
server.2=192.168.225.147:3888:4888
server.3=192.168.225.148:3888:4888
3、宣告id (宣告的id要和server后面的id对应上,如1号是192.168.225.146)
[root@nginx-kafka01 conf]# mkdir /tmp/zookeeper
[root@nginx-kafka01 conf]# echo 1 > /tmp/zookeeper/myid
[root@nginx-kafka02 conf]# mkdir /tmp/zookeeper
[root@nginx-kafka02 conf]# echo 2 > /tmp/zookeeper/myid
[root@nginx-kafka03 conf]# mkdir /tmp/zookeeper
[root@nginx-kafka03 conf]# echo 3 > /tmp/zookeeper/myid
4、启动zookeeper(三台全部启动,再查看状态,是否有leader和follower)
[root@nginx-kafka03 bin]# pwd
/opt/apache-zookeeper-3.6.3-bin/bin
[root@nginx-kafka01 bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 机器二、三同样的操作
[root@nginx-kafka02 bin]# ./zkServer.sh start
[root@nginx-kafka03 bin]# ./zkServer.sh start
# 查看状态
[root@nginx-kafka02 bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
5、启动kafka(以守护进程的形式启动)
[root@nginx-kafka01 bin]# cd /opt/kafka_2.12-2.8.1
[root@nginx-kafka01 kafka_2.12-2.8.1]# bin/kafka-server-start.sh -daemon config/server.properties
[root@nginx-kafka01 kafka_2.12-2.8.1]# ps -ef |grep kafka
注意:
开启zookeeper和kafka的时候,一定是先启动zookeeper,再启动kafka。
关闭服务的时候,先关闭kafka,再关闭zookeeper。
4、测试
1、创建topic (test)
[root@nginx-kafka02 bin]# cd /opt/kafka_2.12-2.8.1
[root@nginx-kafka02 kafka_2.12-2.8.1]# bin/kafka-topics.sh --create --zookeeper 192.168.225.147:2181 --replication-factor 3 --partitions 3 --topic test
2、查看topic
[root@nginx-kafka02 kafka_2.12-2.8.1]# bin/kafka-topics.sh --list --zookeeper 192.168.225.147:2181
3、创建生产者
[root@nginx-kafka02 kafka_2.12-2.8.1]# bin/kafka-console-producer.sh --broker-list 192.168.225.147:9092 --topic test
在机器二创建生产者,生产数据
4、创建消费者
[root@nginx-kafka03 kafka_2.12-2.8.1]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.225.148:9092 --topic test --from-beginning
在机器三创建消费者,消费数据
总结
学会看日志
看日志中的error信息,定位错误
kafka的日志在/opt/kafka_2.12-2.8.1/logs下,主要看server.log
zookeeper的日志在/opt/apache-zookeeper-3.6.3-bin/logs下,看以.out结尾的文件
常见错误:
防火墙没关,ip地址映射错误,服务没起来