环境搭建
因为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
至此环境搭建完毕