1.下载Kafka安装包

​kafka官网​

Kafka搭建_zookeeper


选着需要的版本

2.上传服务器并解压

tar xzvf kafka_2.11-2.0.0.tgz -C /data/elk/

Kafka搭建_kafka_02


3.修改zookeeper配置

这里有点意思,在之前的kafka安装是需要自己下载zookeeper,后来kafka也就自己将zookeeper集成到kafka里面来了,无需单独下载zookeeper

vi /data/elk/kafka_2.11-2.0.0/config/zookeeper.properties

dataDir=/tmp/zookeeper/data
clientPort=2181
initLimit=20
syncLimit=10
tickTime=2000
dataLogDir=/tmp/zookeeper/logs
#集群配置-单节点无需配置
server.1=192.168.0.187:2888:3888
server.2=192.168.0.188:2888:3888
server.3=192.168.0.189:2888:3888

dataDir zk数据存放目录
dataLogDir zk日志存放目录
clientPort 客户端连接zk服务的端口
tickTime zk服务器之间或者客户端与服务器之间维持心跳的时间间隔
initLimit 允许follower(相对于Leaderer言的,客户端)连接并同步到Leader的初始化连接时间,以tickTime为单位,当初始化连接时间超过该值,则表示连接失败。
syncLimit Leader于Follower之间发送消息时,请求和答应时间长度,如果follow在设置时间内不能与leader通信,那么此follower将会被丢弃
server.1=192.168.0.187:2888:3888 2888是follower于leader减缓信息的端口,3888当leader交换信息的端口,3888是当leader挂了时用来执行选举是服务器互相通信的端口

4.创建zookeeper数据、日志目录

mkdir -p /tmp/zookeeper/{data,logs}

5.创建myid文件

echo 1 > /tmp/zookeeper/data/myid

集群环境下修改为 1、 2 、3即可

6.修改kafka配置

Kafka搭建_zookeeper_03


如果kafka和zk是单节点运行的话使用kafka的默认配置即可

broker.id=0                 每个server需要单独配置broker.id如果不配置系统会指定配置,需要和上一步ID一致
listeners=PLAINTEST://ip:9092 监听地址,格式PLAINTEST://ip:端口
num.network.threads=3 接收和发送网络信息的线程数
num.io.threads=8 服务器用于处理请求的线程数,其中可能包括磁盘IO
socket.send.buffer.bytes=102400 套接字服务器使用的发送缓冲区(SO_SNDBUF)
socket.receive.buffer.bytes=102400 套接字服务器使用的接收缓冲区(SO_RCVBUF)
socket.request.max.bytes=104857600 套接字服务器将接收的请求最大大小(防止OOM)
log.dirs=/tmp/kafka-logs 日志文件
num.partitions=1 partitions的数量
num.recovery.threads.per.data.dir=1 启动时恢复日志,关闭时刷盘日志每个数据目录的线程的数量,默认1
offsets.topic.replication.factor=1 偏移量话题的复制因子(设置更高保证可用),为保证有效的父子,偏移量的复制因子是可配置的,在偏移话题的第一次请求的时候可用borker的数量至少为复制因子的大小,否则要么话题创建失败,要么复制因子取可用的数量和配置复制因子取最小值
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

log.retention.hours=168 日志文件删除之前保留的时间
log.segment.bytes=1073741824 单个日志文件大小默认为1073741824
log.retention.check.interval.ms=300000 检查日志端以查看是否可以根据保留策略删除他们的时间鳄梨
zookeeper.connect=zkip:2181 zk主机地址,如果是zk集群以逗号分隔
zookeeper.connection.timeout.ms=6000 连接zk的超时时间
group.initial.rebalance.delay.ms=0

7.创建kafka的日志目录

mkdir -p /tmp/kafka-logs

8.后台启动zookeeper

cd /data/elk/kafka_2.11-2.0.0/
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

9.验证启动是否成功
这里nc命令没有需要重装yum -y install nc

查看zk配置
echo conf | nc 192.168.0.188 2181
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 00:39 GMT
Clients:
/192.168.0.188:55686[0](queued=0,recved=1,sent=0)
/192.168.0.188:47944[1](queued=0,recved=8144,sent=8144)
/192.168.0.188:47958[1](queued=0,recved=8364,sent=8364)
/127.0.0.1:57834[1](queued=0,recved=62090,sent=62093)
/192.168.0.188:47956[1](queued=0,recved=8130,sent=8130)

Latency min/avg/max: 0/0/9
Received: 87087
Sent: 87091
Connections: 5
Outstanding: 0
Zxid: 0xb3
Mode: standalone
Node count: 143
[root@master ~]# echo conf | nc 192.168.0.188 2181
clientPort=2181
dataDir=/tmp/zookeeper/data/version-2
dataLogDir=/tmp/zookeeper/logs/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0
echo stat|nc 192.168.0.188 2181

Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 00:39 GMT
Clients:
/192.168.0.188:60062[0](queued=0,recved=1,sent=0)
/192.168.0.188:47944[1](queued=0,recved=8278,sent=8278)
/192.168.0.188:47958[1](queued=0,recved=8498,sent=8498)
/127.0.0.1:57834[1](queued=0,recved=62980,sent=62983)
/192.168.0.188:47956[1](queued=0,recved=8264,sent=8264)

Latency min/avg/max: 0/0/9
Received: 88381
Sent: 88385
Connections: 5
Outstanding: 0
Zxid: 0xb3
Mode: standalone
Node count: 143

10.查看日志输出

tailf nohup.out

11.启动kafka

nohup bin/kafka-server-start.sh config/server.properties &

12.创建topic

./bin/kafka-topics.sh --create --zookeeper 192.168.0.188:2181 --replication-factor 1 --partitions 1 --topic testtopic

输出Created topic “testtopic”表示成功

13.查看topic

./bin/kafka-topics.sh  --zookeeper 192.168.0.188:2181 --list

Kafka搭建_kafka_04


14.模拟生产者

./bin/kafka-console-producer.sh --broker-list 192.168.0.188:9092 --topic testtopic

Kafka搭建_kafka_05


15.模拟消费者消费

./bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.188:9092 --topic testtopic --from-beginning

16生产者生产消息,消费者消费消息

Kafka搭建_zookeeper_06


那么到这里基本上就搞定了