使用自带Zookeeper搭建kafka集群

来源:互联网 发布:最心酸的一句话知乎 编辑:程序博客网 时间:2024/06/05 19:53

简要说明

新版本的kafka自带有zookeeper,其实自带的zookeeper完全够用,本篇文章以记录使用自带zookeeper搭建kafka集群。

1、关于kafka

kafka官网:http://kafka.apache.org/
kafka下载页面:http://kafka.apache.org/downloads
kafka配置快速入门:http://kafka.apache.org/quickstart

2、修改kafka配置文件

kafka安装目录下的config文件夹为其配置文件,我们需要修改的有 server.properties和zookeeper.properties。

2.1、修改日志目录

首先修改kafka的日志目录和zookeeper数据目录,因为这两项默认放在tmp目录,而tmp目录中内容会随重启而丢失:
server.properties:
    log.dirs=/tmp/kafka-logs
    修改为
    log.dirs=/usr/local/kafka/logs

zookeeper.properties
    dataDir=/tmp/zookeeper
    修改为
    dataDir=/usr/local/zookeeper/data

2.2、配置kafka

kafka集群为便于推选leader,一般由奇数台服务组件集群,这里以三台为例,分别已xxx.xxx.xxx.xxA、xxx.xxx.xxx.xxB和xxx.xxx.xxx.xxC代表服务的ip。
(服务器IP可使用ifconfig命令查看)

修改server.properties:
1、设置broker.id,保证每个broker唯一,第一台可以不修改默认为0,后面两台需要修改,如改为1和2
2、设置num.partitions,分区数量一般与broker保持一致
3、设置advertised.listeners和listeners,如listeners=PLAINTEXT://xxx.xxx.xxx.xx:9092
4、设置zookeeper.connect,配置三台服务zookeeper连接地址,如zookeeper.connect=xxx.xxx.xxx.xxA:2181,xxx.xxx.xxx.xxB:2181,xxx.xxx.xxx.xxC:2181

修改zookeeper.properties:
1、设置连接参数,添加如下配置
        tickTime=2000
        initLimit=10
        syncLimit=5

2、设置broker Id的服务地址
        server.0=xxx.xxx.xxx.xxA:2888:3888
        server.1=xxx.xxx.xxx.xxB:2888:3888
        server.2=xxx.xxx.xxx.xxC:2888:3888

zookeeper数据目录添加id配置
在各台服务的zookeeper数据目录添加myid文件,写入服务broker.id属性值,如这里的目录是/usr/local/zookeeper/data
第一台broker.id为0的服务到该目录下执行:echo 0 > myid

3、启动kafka

kafka启动时先启动zookeeper,再启动kafka;关闭时相反,先关闭kafka,再关闭zookeeper
启动zookeeper:
        bin/zookeeper-server-start.sh config/zookeeper.properties &
启动kafka:
        bin/kafka-server-start.sh config/server.properties &

4、测试kafka集群

4.1、在第一台服务上创建test主题
bin/kafka-topics.sh --create --topic test --zookeeper xxx.xxx.xxx.xxA:2181 --replication-factor 3 --partition 3
4.2、展示主题,确认主题创建成功
bin/kafka-topics.sh --list --zookeeperxxx.xxx.xxx.xxA:2181
4.3、创建生产者
bin/kafka-console-producer.sh --broker-listxxx.xxx.xxx.xxA:9092 --topic test
4.4、创建消费者,再另外两台服务上分别创建消费者
bin/kafka-console-consumer.sh --zookeeper xxx.xxx.xxx.xxB:2181 --topic test --from-beginning
bin/kafka-console-consumer.sh --zookeeper xxx.xxx.xxx.xxC:2181 --topic test --from-beginning
4.5、测试消息发布与消费
在IP为xxx.xxx.xxx.xxA的服务生产中输入消息回车发送,确认在服务B和C中的消费者是否接收到

5、其他

如配置完成后需要修改端口或其他配置,但是没有生效,启动报错,可以尝试清楚kafka(/usr/local/kafka/logs)和zookeeper(/usr/local/zookeeper/data)缓存目录的内容然后重新启动。