共计 4037 个字符,预计需要花费 11 分钟才能阅读完成。
一、环境操作系统和软件版本介绍
1. 环境操作系统为 CentOS Linux release 7.2.1511 (Core)
可用 cat /etc/RedHat-release 查询
2. 软件版本
Kafka 版本为:0.10.0.0
二、软件的基础准备
由于 Kafka 集群需要依赖 ZooKeeper 集群来协同管理,所以需要事先搭建好 ZK 集群。此文主要介绍搭建 Kafka 集群环境。
三、详细安装搭建步骤
1. 下载压缩包 kafka_2.10-0.10.0.0.tgz 到 /data/soft 目录
2. 将 kafka_2.10-0.10.0.0.tgz 解压到 /data/app/Kafka 目录
tar –xzf kafka_2.10-0.10.0.0.tgz –C /data/app/kafkacluster
把文件夹重命名为 19092,进入 config 目录,修改 server.properties 文件
3. 用 vi 命令打开 server.properties
1 [root@centos7 config]# vi server.properties
4. 修改如下:
1 broker.id=0
2 port=19092
3 log.dirs=/data/app/kafkacluster/19093/bin/kafka-logs19092
4 zookeeper.connect=192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003
其他两台服务器上的 kafka 同上,先修改文件夹名称(在此文另外两个文件夹名称为 19093 和 19094)
再进入 config 目录,分别改 server.properties 名称为 server1.properties 和 server2.properties
server1.properties 中的配置需要改:
1 broker.id=1
2 port=19093
3 log.dirs=/data/app/kafkacluster/19093/bin/kafka-logs19093
4 zookeeper.connect=192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003
server2.properties 中的配置需要改:
1 broker.id=2
2 port=19094
3 log.dirs=/data/app/kafkacluster/19094/bin/kafka-logs19094
4 zookeeper.connect=192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003
四、启动 kafka& 测试验证
1. 首先启动独立的 ZK 集群,三台都要启动(./zkServer.sh start)
2. 进入到 kafka 的 bin 目录,然后启动服务./kafka-server-start.sh ../config/server.properties(三台服务器都要启动)
1 ./kafka-server-start.sh ../config/server1.properties
2 ./kafka-server-start.sh ../config/server2.properties
另外,启动其他节点的时候,在最先开始启动的节点会显示其它节点加入的信息记录,如下所示:
1 [2017-01-18 14:44:24,352] INFO Partition [aaa,0] on broker 0: Expanding ISR for partition [aaa,0] from 0 to 0,1 (kafka.cluster.Partition)
2 [2017-01-18 14:44:37,065] INFO Partition [aaa,0] on broker 0: Expanding ISR for partition [aaa,0] from 0,1 to 0,1,2 (kafka.cluster.Partition)
3. 验证启动进程
1 [root@centos7 bin]# jps
2 25778 Kafka
3 26132 Jps
4 25285 Kafka
5 25014 QuorumPeerMain
6 25064 QuorumPeerMain
7 25531 Kafka
8 25116 QuorumPeerMain
4. 使用客户端进入 zk
1 [root@centos7 bin]# ./zkCli.sh -server 192.168.1.18:3001
2 Connecting to 192.168.1.18:3001
5. 查看目录情况
1 [zk: 192.168.1.18:3001(CONNECTED) 0] ls /
2 [controller_epoch, controller, brokers, zookeeper, test, admin, isr_change_notification, consumers, config]
3 [zk: 192.168.1.18:3001(CONNECTED) 1]
上面的显示结果中:只有 zookeeper 是 zookeeper 原生的,其他都是 Kafka 创建的
6. 创建一个 topic:
1 [root@centos7 bin]# ./kafka-topics.sh --create --zookeeper 192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003 --replication-factor 3 --partitions 1 --topic test666
2 Created topic "test666".
7. 查看 topic 状态:
1 [root@centos7 bin]# ./kafka-topics.sh --describe --zookeeper 192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003 --topic test666
2 Topic:test666 PartitionCount:1 ReplicationFactor:3 Configs:
3 Topic: test666 Partition: 0 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1
输出参数解释:
第一行是对所有分区的一个描述,然后每个分区都会对应一行,因为我们只有一个分区所以下面就只加了一行。
Leader:负责处理消息的读和写,Leader 是从所有节点中随机选择的。
Replicas:列出了所有的副本节点,不管节点是否在服务中
Isr:是正在服务中的节点
由上可见,此时的 leader 是 0
下文会 kill 0,看 leader 是否更改
8. 往 test666 中发送消息:
1 [root@centos7 bin]# ./kafka-console-producer.sh --broker-list localhost:19092,localhost:19093,localhost:19094 --topic test666
2 hello kafka!
3 hello littleMonster!
4 hello world!
9. 接收消息:
1 [root@centos7 bin]# ./kafka-console-consumer.sh --zookeeper 192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003 --topic test666 --from-beginning
2 hello kafka!
3 hello littleMonster!
4 hello world!
消息接收成功。
10. 找到为 0 的 leader 的进程,并杀死
1 [root@centos7 /]# ps -ef | grep ka
1 [root@centos7 /]# kill -9 25285
11. 再次查看 topic 状态:
1 [root@centos7 bin]# ./kafka-topics.sh --describe --zookeeper 192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003 --topic test666
2 Topic:test666 PartitionCount:1 ReplicationFactor:3 Configs:
3 Topic: test666 Partition: 0 Leader: 2 Replicas: 0,2,1 Isr: 2,1
由此可见,在 Isr(正在服务中的节点)项,0 已消失,新选举出的 leader 是 2。
12. 再次发送消息
接收消息
消息正常接收,该测试通过。
CentOS 7.2 部署 Elasticsearch+Kibana+Zookeeper+Kafka http://www.linuxidc.com/Linux/2016-11/137636.htm
CentOS 7 下安装 Logstash ELK Stack 日志管理系统 http://www.linuxidc.com/Linux/2016-08/134165.htm
Apache Kafka 代码实例 http://www.linuxidc.com/Linux/2013-11/92754.htm
Apache Kafka 教程笔记 http://www.linuxidc.com/Linux/2014-01/94682.htm
Apache kafka 原理与特性 (0.8V) http://www.linuxidc.com/Linux/2014-09/107388.htm
Kafka 部署与代码实例 http://www.linuxidc.com/Linux/2014-09/107387.htm
Kafka 介绍和集群环境搭建 http://www.linuxidc.com/Linux/2014-09/107382.htm
Kafka 的详细介绍 :请点这里
Kafka 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-01/139734.htm