Kafka分布式消息系统安装使用(0.8.2.1) 2015-03-20 15:30

说明

Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据。作用类似于RabbitMQ。Kafka经常用于日志收集。
Kafka是分布式的,它通过多个broker组成一个集群提升可靠性。
Kafka依赖于Zookeeper。安装Kafka前需要先安装好Zookeeper(Kafkz自身也带了一个Zookeeper,如果不额外安装Zookeeper,也可以使用Kafka自带的)。
Kafka使用Scala语言开发。
在本例中,在data01、data02、data03三个节点上部署独立的Zookeeper服务

环境规划

在data01、data02、data03上部署Kafka broker集群。各个节点上各启一个broker。

Kafka安装

data01节点

  • 安装

安装很简单,解压即可:

wget http://mirrors.cnnic.cn/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
tar -zxvf kafka_2.11-0.8.2.1.tgz
mv kafka_2.11-0.8.2.1 kafka
cd kafka
  • 配置

config/server.properties:

broker.id=1
port=9092
log.dir=/opt/kafka/kafka-logs
zookeeper.connect=data01:2181,data02:2181,data03:2181/kafka
zookeeper.connection.timeout.ms=6000

> 注意:

>

  1. 各节点上的broker.id要配置为不同的值。
  2. log.dir的值建议配置为绝对路径,避免在不同的工作目录下启动Kafka时,此目录不同.
  3. Zookeeper连接信息建议增加目录信息"/kafka",以便让Zookeeper的目录比较清晰,不混乱.

  4. 启动

启动Kafka Server

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

data02节点

第二个Kafka broker节点的安装方法同节点data01。只是配置文件中的broker.id需要修改.
config/server.properties:

broker.id=2
port=9092
log.dir=/opt/kafka/kafka-logs
zookeeper.connect=data01:2181,data02:2181,data03:2181/kafka
zookeeper.connection.timeout.ms=6000

纯客户端节点安装

直接解压,无需配置

  • 安装

解压即可:

wget http://mirrors.cnnic.cn/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
tar -zxvf kafka_2.11-0.8.2.1.tgz
mv kafka_2.11-0.8.2.1 kafka
cd kafka

使用

  • 基本使用

列出所有的Topic

/opt/kafka/bin/kafka-topics.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka --list

创建一个Topic:

/opt/kafka/bin/kafka-topics.sh --create --zookeeper data01:2181,data02:2181,data03:2181/kafka --replication-factor 2 --partitions 1 --topic cheyo-topic

查询该Topic的现状信息

/opt/kafka/bin/kafka-topics.sh --describe --zookeeper data01:2181,data02:2181,data03:2181/kafka --topic cheyo-topic

删除Topic

/opt/kafka/bin/kafka-topics.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka --delete --topic webtopic3

生产一些该Topic的消息:

/opt/kafka/bin/kafka-console-producer.sh --broker-list data01:9092 --topic cheyo-topic

在另一个客户端上消费该Topic的消息:

/opt/kafka/bin/kafka-console-consumer.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka --from-beginning --topic cheyo-topic
  • 测试集群高可用

创建一个Topic:

/opt/kafka/bin/kafka-topics.sh --create --zookeeper data01:2181,data02:2181,data03:2181/kafka --replication-factor 2 --partitions 1 --topic cheyo-topic2

生产一些该Topic的消息:

/opt/kafka/bin/kafka-console-producer.sh --broker-list data01:9092 --topic cheyo-topic2

查询该Topic的现状信息:

/opt/kafka/bin/kafka-topics.sh --describe --zookeeper data01:2181,data02:2181,data03:2181/kafka --topic cheyo-topic2

可以看到,现在的Leader是:

杀死data01节点的上kafka进程。再次查看该Topic的现状信息:

/opt/kafka/bin/kafka-topics.sh --describe --zookeeper data01:2181,data02:2181,data03:2181/kafka --topic cheyo-topic2

可以看到,现在的Leader已经变成:

在另一个客户端上仍然可以消费该Topic的消息:

/opt/kafka/bin/kafka-console-consumer.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka --from-beginning --topic cheyo-topic2

参考文档

kafka入门:简介、使用场景、设计原理、主要配置及集群搭建.

Tags: #Kafka    Post on Streaming