kafka安装配置(集群)以及收发消息讲解

一、安装配置

1、下载解压

wget    ​http://mirror.bit.edu.cn/apache/kafka/0.10.2.0/kafka_2.10-0.10.2.0.tgz

tar   -zxvf   kafka_2.10-0.10.2.0.tgz

kafka下载tgz包直接解压无需其他安装过程,下面是启动的过程

 

2、启动、收发消息操作

进入上步解压好的目录下:cd   kafka_2.10-0.10.2.0

目录结构如下:

total 56

drwxr-xr-x 3 rootroot  4096 Feb 15 01:28 bin

drwxr-xr-x 2 rootroot  4096 Mar  7 20:36 config

drwxr-xr-x 2 rootroot  4096 Mar  7 18:55 libs

-rw-r--r-- 1 rootroot 28824 Feb 15 01:26 LICENSE

drwxr-xr-x 2 rootroot  4096 Mar  7 21:04 logs

-rw-r--r-- 1 rootroot   336 Feb 15 01:26 NOTICE

drwxr-xr-x 2 rootroot  4096 Feb 15 01:28 site-docs


第一步:首先启动zookeeper服务:(kafka是由zookeeper来管理其一些属性的)

bin/zookeeper-server-start.sh config/zookeeper.properties

 

第二步:启动kafka服务,也就是broker服务


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


 

第三步:创建topic


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


注意:上面是一行命令不是两行命令

 

这时候可以看到输出提示:Created topic "test".

如果你topic已经存在也会提示,信息如下:

Error while executing topic command : Topic'test' already exists.

[2017-03-07 21:36:35,062] ERRORorg.apache.kafka.common.errors.TopicExistsException: Topic 'test' alreadyexists.

 (kafka.admin.TopicCommand$)

 

另外你也可以执行下面的命令查看你创建的topic有哪些:


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


test

 

第四步:发送消息(producer)


bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test


aaaaaaaaaaaa

bbbbbbbbbbb

 

第五步收消息:(consumer)


bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning


aaaaaaaaaaaa

bbbbbbbbbbb

 

二、配置参数讲解

         在kafka解压的目录下面可以看到config文件,其中zookeeper、server、producer、consumer以及其他的属性配置都在这个文件下

配置broker的属性文件是:server.properties

这里先重点解释一下里面的参数意义:

1、其中broker.id=0是broker的id,一个集群所有id不能有相同的id。

 

2、listeners=PLAINTEXT://192.168.1.108:9092

   这个是SocketServer Settings的配置:监听的ip:port,就是producer发消息的socket地址

listeners=PLAINTEXT://192.168.1.108:9092

这里PLAINTEXT是协议,有时候你的ip写成hostname或者是localhost会早造成发消息不成功或者收不到消息,改成具体ip地址应该是最安全的方式。

 

3、log.dirs=/tmp/kafka-logs 是日志文件路径

 

4、zookeeper.connect=localhost:2181  是你的broker连接zookeeper的地址ip:port

这个四个配置项目相当重要,有时候你连接不上或者收发消息不成功的时候往往是ip地址造成的。

 

三、现在配置多个broker:

cp  server.properties server1.properties

cp  server.properties server2.properties

修改server1.properties 

   broker.id=1

    listeners=PLAINTEXT://192.168.1.108:9093

   log.dir=/tmp/kafka-logs-1

 

server2.properties

   broker.id=2

    listeners=PLAINTEXT://192.168.1.108:9094

   log.dir=/tmp/kafka-logs-2

 

下面来演示一下:

先创建一个topic  现在我们创建一个具有三份副本、两个划分partitions的主题

bin/kafka-topics.sh --create --zookeeper  localhost:2181  --replication-factor  3  --partitions 2  --topic    chenxun

 

同时启动三个broker

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

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

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

 

这里用下面的命令查看一下topic的信息

bin/kafka-topics.sh  --describe  --zookeeper  localhost:2181  --topic  chenxun

kafka安装配置(集群)以及收发消息讲解_kafka配置

看到没有:patitions是2   replication因子是3(topic里面的消息有3份) leader是1这里1就是broker.id

 

现在我们发消息到topic:

bin/kafka-console-producer.sh  --broker-list  192.168.1.108:9092  --topic  chenxun

kafka安装配置(集群)以及收发消息讲解_kafka收发消息_02

bin/kafka-console-consumer.sh  --zookeeper localhost:2181   --topic chenxun

kafka安装配置(集群)以及收发消息讲解_kafka_03

接下来;我们kill掉leader 1

kafka安装配置(集群)以及收发消息讲解_kafka_04

ps -elf|grep  server1.properties查看进程id

kill  -9  32474

 

执行下面的命令再次查看topic的信息的变化:其中leader是不是变了

bin/kafka-topics.sh --describe --zookeeperlocalhost:2181 --topic chenxun

kafka安装配置(集群)以及收发消息讲解_集群_05