环境搭建

因为Kafka运行依赖JDK和Zookeeper,所以首先要搭建依赖工具。本次服务器部署在Linux系统中。

1、安装JDK

JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载后上传到服务器目录/home/work/tools(目录名称根据自已喜好选择),或者直接在Linux服务器上使用wget命令下载JDK,省去上传的步骤,命令如下:

64位JDK:wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"

32位JDK:wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-i586.tar.gz"
tar xzf jdk-8u141-linux-i586.tar.gz

然后解压JDK压缩包,命令:tar -zxvf jdk-8u141-linux-x64.tar.gz

然后配置JDK环境变量,环境变量配置需要编辑~/.bash_profile

#vim ~/.bash_profile

添加如下配置

export JAVA_HOME=/home/work/tools/jdk1.8.0_181
 export PATH=$PATH:$JAVA_HOME/bin环境变量生效
#source ~/.bash_profile
走到这一步可以验证JDK是否设置成功
#java -version

如果打印出jdk相关信息,恭喜你安装完成

~/.bash_profile设置环境变量后可能只对当前终端生效,遇到这种情况可以编辑~/.zshrc,在最后一行添加source ~/.bash_profile,这样就会一直生效。

2、安装Zookeeper

Kafka一般情况下是部署为集群提供服务,Broker、Topic注册,生产者和消费者负载均衡,以及消息消费进度都需要保存到Zookeeper,所以还需要部署Zookeeper。

下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/

同样解压压缩包,复制conf/zoo_sample.cfg成conf/zoo.cfg

设置ZK数据和日志路径

# vim zoo.cfg
dataDir=/home/work/services/zookeeper/zookeeper-3.4.13/data
 dataLogDir=/home/work/services/zookeeper/zookeeper-3.4.13/logs执行如下命令后台启动ZK
#nohup ./bin/zkServer.sh start &
检查启动是否成功
#./bin/zkServer.sh status
打印如下则启动成功
ZooKeeper JMX enabled by default
 Using config: /home/work/services/zookeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
 Mode: standalone

以下为配置文件说明

#tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
#initLimit:
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
#syncLimit:
这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒
#dataDir:
快照日志的存储路径
#dataLogDir:
事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
#clientPort:
这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点

3、安装Kafka

下载地址:http://kafka.apache.org/downloads

解压压缩包,复制出三份conf/server.properties,分别为server1.properties、server2.properties、server3.properties

修改对应server.properties中的broker.id值分别为1、2、3,监听地址修改为advertised.listeners=PLAINTEXT://172.16.115.130:9092
advertised.listeners=PLAINTEXT://172.16.115.130:9093
advertised.listeners=PLAINTEXT://172.16.115.130:9094
然后启动第一台
nohup bin/kafka-server-start.sh config/server1.properties &

同样的方式启动剩余两台

下面使用Kafka创建Topic

#bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

然后在该Topic下生产消息

#bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

>This is a message

>This is another message

启动一个消费者

#bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
输出如下:
This is a message
This is another message

至此环境搭建完毕