分享

kafka权威指南 第二章第1节:安装Kafka 【中文版】


问题导读


1.安装Kafka的步骤有哪些,需要哪些准备?
2.kafka配置完成后 如何验证Kafka是否正常运行?




第二章 Installing Kafka

本章介绍怎样运行Apache Kafka,包括存储kafka源数据的zookeeper的安装。
同样的,也会覆盖kakfa部署所需的基本配置项以及选择运行broker的硬件的标准。最后,介绍怎样部署kafka集群以及在生成环境上的一些注意点。

First Things First

Choosing an Operating System

Apache Kafka是一个Java程序,可以运行在多种操作系统上,包括:Windows, OS X, Linux等。本章安装使用kafka的步骤都是在使用最广泛的Linux系统上执行的。LInux也是Kafka部署建议的操作系统。Kafka在Windows和OS X上的安装请点击附录A。

Installing Java

无论是安装zookeeper还是kafka,都需要一个Java运行环境。Java版本可能是Java8,也可以是系统提供的版本,或者是直接从java.com下载。虽然zookeeper和kafka在有java runtime的版本上就可以运行,但是有完整的jdk在开发工具和应用时会更便利。因此,以下的安装步骤假设你已经在/usr/java/jdk1.8.0_51下安装了jdk8。

Installing Zookeeper

Apache Kafka利用zookeeper存储关于kafka集群的元数据信息以及消费者信息。因为分布式版kakfka自带启动zookeeper 服务器的脚本,因此并不需要安装分布式版zookeeper。
图片1.png
图2-1 Kafka和Zookeeper
Kafka和3.4.6版zookeeper稳定结合已广泛测试,从http://mirror.cc.columbia.edu/pu ... keeper-3.4.6.tar.gz下载3.4.6版zookeeper。

Standalone Server

下例是zookeeper安装的基本配置,路径为/usr/local/
Zookeeper,数据存储在/var/lib/zookeeper
[mw_shl_code=bash,false]# tar -zxf zookeeper-3.4.6.tar.gz
# mv zookeeper-3.4.6 /usr/local/zookeeper
# mkdir -p /var/lib/zookeeper
# cat > /usr/local/zookeeper/conf/zoo.cfg << EOF
> tickTime=2000
> dataDir=/var/lib/zookeeper
> clientPort=2181
> EOF
# export JAVA_HOME=/usr/java/jdk1.8.0_51
# /usr/local/zookeeper/bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#[/mw_shl_code]

现在你可以验证zookeeper是否在单机模式下能够连接到客户端端口,发送四个字符‘srvr’

[mw_shl_code=bash,false]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
srvr
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 4
Connection closed by foreign host.
#[/mw_shl_code]
Zookeeper Ensemble  

一个zookeeper集群被叫做"ensemble”,因为一致性协议的使用,建议一个zookeeper集群使用奇数个服务器(例如:3,5,等),每个都作为集群的一个quorum用来返回发往zookeeper的请求。这意味着3节点的集群,当一个节点失效后仍可以运行。5个节点的集群,允许2个节点失效。

Sizing Your Zookeeper Ensemble
假设zookeeper运行在5个节点上,为了使配置变成包括节点转换的套件。如果你的套件不能够容许多用于1个节点的宕机,这会给做维护工作引入额外的风险。同样不建议一个zookeeper套件运行在多余7个的节点上,因为集群性能会因一致性的特征而降低。


一个zookeeper 套件中服务器的配置必须含有一项共通的配置:服务器列表,并且每个服务器都需要在数据目录下有一个myid文件用来标识那个服务器的的id。如果服务器的主机名如下例:zoo1.example.com, zoo2.example.com, and zoo3.example.com,则配置文件可配置为:
[mw_shl_code=bash,false]tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=20
syncLimit=5
server.1=zoo1.example.com:2888:3888
server.2=zoo2.example.com:2888:3888
server.3=zoo3.example.com:2888:3888[/mw_shl_code]
在这个配置中,initLimit表示follower经过多长时间可以连接上leader。syncLimit表示follower与leader不同步的时间有多长。所有的配置都是以tickTime为单位的整数倍,例如这里initLimit为20 * 2000 ms或40 s。上边的配置也列出了在套件中的每个服务器。服务器是以server.X=hostname:peer Port:leader Port这样格式话的方式定义的,个各参数释义如下:
[mw_shl_code=bash,false]X:服务器Id。这个值必须是整数,但不必从0开始或顺序的。
Hostname:服务器的主机名或服务器IP地址。
peerPort:服务器间进行交互的TCP端口。
leaderPort:leader选举时的TCP端口。[/mw_shl_code]
客户端只要能够通过clientPort连接到套件即可,但是套件中的成员必须两两之间能够通过以上3个端口互通。

除了分享的配置文件外,每个服务器在data Dir目录下必须有一个myid文件。这个文件必须包含有与配置文件一致的服务器id号。以上步骤完成后,套件中的服务器就可以启动并两两互通。

Installing a Kafka Broker

Java和Zookeeper配置好后,你就可以准备安装Apache Kafka。当前版本kafka可在http://kafka.apache.org/downloads.html下载。到发稿为止,Kafka版本是运行在Scala2.11.0上的0.9.0.1。

下例是kafka安装在/usr/local/kafka,利用之前配置好的zookeeper,消息的日志切片会存储在/tmp/kafka-logs:
[mw_shl_code=bash,false]# tar -zxf kafka_2.11-0.9.0.1.tgz
# mv kafka_2.11-0.9.0.1 /usr/local/kafka
# mkdir /tmp/kafka-logs
# export JAVA_HOME=/usr/java/jdk1.8.0_51
# /usr/local/kafka/bin/kafka-server-start.sh -daemon
/usr/local/kafka/config/server.properties
#[/mw_shl_code]
Kafka启动后,我们可以通过一下简单的操作:创建test topic,生产一些消息,消费一些消息来检测Kafka是否正常运行。

创建和验证一个topic:
[mw_shl_code=bash,false]# /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181
--replication-factor 1 --partitions 1 --topic test
Created topic "test".
# /usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181
--describe --topic test
Topic:test PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
#[/mw_shl_code]
生产消息到测试topic:
[mw_shl_code=bash,false]# /usr/local/kafka/bin/kafka-console-producer.sh --broker-list
localhost:9092 --topic test
Test Message 1
Test Message 2
^D
#[/mw_shl_code]
从测试topic消费消息:
[mw_shl_code=bash,false]# /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper
localhost:2181 --topic test --from-beginning
Test Message 1
Test Message 2
^C
Consumed 2 messages
#[/mw_shl_code]

本帖被以下淘专辑推荐:

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条