Kafka 集群搭建步骤

Kafka 集群搭建步骤

1. 机器准备

本文中,我们将准备三台机器搭建 Kafka 集群,IP 地址分别是 192.168.1.1,192.168.1.2,192.168.1.3,并且三台机器网络互通。

2. 下载并安装 kafka_2.10-0.8.2.1

下载地址: https://kafka.apache.org/downloads.html

下载完成后,上传到目标机器中的一个,如 192.168.1.1 , 使用以下命令解压:
清单 1. Kafka 安装包解压命令

 tar –xvf kafka_2.10-0.8.2.1

安装完成。

3. 创建 zookeeper 数据目录并设定服务器编号

在所有三台服务器上执行下面操作。

切换到当前用户工作目录,如/home/fams , 创建 zookeeper 保存数据的目录, 然后在这个目录下新建服务器编号文件。
清单 2. 创建数据目录和服务器编号文件命令

mkdir zk_data
cat N > myid

注意需要保证 N 在三台服务器上取不同值,如分别取 1,2,3。

4. 编辑 zookeeper 配置文件

Kafka 安装包中内置 zookeeper 服务。进入 Kafka 安装目录, 如/home/fams/kafka_2.10-0.8.2.1, 编辑 config/zookeeper.properties 文件,增加以下配置:
清单 3. zookeeper 配置项

tickTime=2000
dataDir=/home/fams/zk_data/
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888

这些配置项的解释如下:

    tickTime:zookeeper 服务器之间的心跳时间间隔,以毫秒为单位。
    dataDir:zookeeper 的数据保存目录,我们也把 zookeeper 服务器的 ID 文件保存到这个目录下,下文会介绍。
    clientPort:zookeeper 服务器会监听这个端口,然后等待客户端连接。
    initLimit:zookeeper 集群中 follower 服务器和 leader 服务器之间建立初始连接时所能容忍的心跳次数的极限值。
    syncLimit:zookeeper 集群中 follower 服务器和 leader 服务器之间请求和应答过程中所能容忍的心跳次数的极限值。
    server.N:N 代表的是 zookeeper 集群服务器的编号。对于配置值,以 192.168.1.1:2888:3888 为例,192.168.1.1 表示该服务器的 IP 地址,2888 端口表示该服务器与 leader 服务器的数据交换端口,3888 表示选举新的 leader 服务器时候用到的通信端口。

5.编辑 Kafka 配置文件

a. 编辑 config/server.properties 文件

添加或修改以下配置。
清单 4. Kafka Broker 配置项

broker.id=0
port=9092
host.name=192.168.1.1
zookeeper.contact=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181
 log.dirs=/home/fams/kafka-logs

这些配置项解释如下:

    broker.id:Kafka broker 的唯一标识,集群中不能重复。
    port: Broker 的监听端口,用于监听 Producer 或者 Consumer 的连接。
    host.name:当前 Broker 服务器的 IP 地址或者机器名。
    zookeeper.contact:Broker 作为 zookeeper 的 client,可以连接的 zookeeper 的地址信息。
    log.dirs:日志保存目录。

b. 编辑 config/producer.properties 文件

添加或者修改以下配置:
清单 5. Kafka Producer 配置项

broker.list=192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092
producer.type=async

这些配置项解释如下:

    broker.list:集群中 Broker 地址列表。
    producer.type: Producer 类型,async 异步生产者,sync 同步生产者。

c. 编辑 config/consumer.properties 文件
清单 6. Kafka Consumer 配置项

zookeeper.contact=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

配置项解释如下:

    zookeeper.contact: Consumer 可以连接的 zookeeper 服务器地址列表。

6.上传修改好的安装包到其他机器

至此,我们已经在 192.168.1.1 机器上修改好了所有需要的配置文件,那么接下来请用以下命令打包该 Kafka 安装包,并上传至 192.168.1.2 和 192.168.1.3 两台机器上。
清单 7. 打包并上传 Kafka 安装包的命令

tar –cvf kafka_2.10-0.8.2.1.tar ./kafka_2.10-0.8.2.1
scp ./kafka_2.10-0.8.2.1.tar fams@192.168.1.2:/home/fams
scp ./kafka_2.10-0.8.2.1.tar fams@192.168.1.3:/home/fams

上传完成后,我们需要到 192.168.1.2 和 192.168.1.3 两台机器上解压刚才上传的 tar 包,命令如清单一。之后需要分别在两台机器上修改 config/server.properties 文件中的 broker.id 和 host.name. broker.id,可以分别复制 1 和 2,host.name 需要改成当前机器的 IP。

7. 启动 zookeeper 和 Kafka 服务

分别在三台机器上运行下面命令启动 zookeeper 和 Kafka 服务。
清单 8. 启动 zookeeper 服务

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

清单 9. 启动 kafka 服务

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

8. 验证安装

我们的验证步骤有两个。

第一步,分别在三台机器上使用下面命令查看是否有 Kafka 和 zookeeper 相关服务进程。
清单 10. 查看 Kafka 和 zookeeper 服务进程

ps –ef | grep kafka

第二步,创建消息主题,并通过 console producer 和 console consumer 验证消息可以被正常的生产和消费。
清单 11. 创建消息主题

bin/kafka-topics.sh --create \
--replication-factor 3 \
--partition 3 \
--topic user-behavior-topic \
--zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

运行下面命令打开打开 console producer。
清单 12. 启动 Console Producer

bin/kafka-console-producer.sh --broker-list 192.168.1.1:9092 --topic user-behavior-topic

在另一台机器打开 console consumer。
清单 13. 启动 Console Consumer

./kafka-console-consumer.sh --zookeeper 192.168.1.2:2181 --topic user-behavior-topic --from-beginning

然后如果在 producer console 输入一条消息,能从 consumer console 看到这条消息就代表安装是成功的。

posted @ 2016-10-10 12:58  yuerspring  阅读(168)  评论(0编辑  收藏  举报