准备工作:配置Java环境、 Zookeeper 集群部署
- 下载Kafka安装包
到 http://kafka.apache.org/downloads.html 下 载 kafka 的 安 装 包 kafka_2.11-0.10.1.0.tgz - 解压并重命名
[root@Server1 local]# tar -zxvf kafka_2.11-0.10.1.0.tgz
[root@Server1 local]# mv kafka_2.11-0.10.1 kafka //该重命名步骤纯属为了以后方便,可以省略
- 修改服务端配置文件
[root@Server1 local]# cd kafka
[root@Server1 kafka]# cd config
[root@Server1 config]# vim server.properties
broker.id=0(当前 broker 的编号)
listeners=PLAINTEXT://192.168.85.5:9092(当前 broker 的 IP)
zookeeper.connect=192.168.85.5:2181,192.168.85.6:2181,
delete.topic.enable=true
- 修改生产者配置文件
[root@Server1 config]# vim producer.properties
bootstrap.servers=192.168.85.5:9092,192.168.85.6:9092
- 修改消费者配置文件
[root@Server1 config]# vim consumer.properties
# Zookeeper connection string
# comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
zookeeper.connect=192.168.85.5:2181,192.168.85.6:2181
- 然后重复以上步骤,在其它虚拟机上安装,区别在于broker.id=0要变为 1,2……,listeners 所配置的 IP 也要进行相应的更改。
- 可以考虑将kafka相关命令配置到环境变量中。
- 进入Kafka安装目录的bin目录下,启动Kafka
[root@Server1 kafka]#kafka-server-start.sh -daemon config/server.properties
由于 kafka 的启动依赖于 zookeeper,所以启动前要保证 zookeeper 启动成功
- Kafka 集群测试(一下皆为 bin 目录下的操作)
[root@Server1 ~]# kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic test-topic
Created topic "test-topic".
a) 创建一个topic
b) 查看创建的topic
[root@Server1 ~]# kafka-topics.sh -describe --zookeeper localhost:2181 --topic test-topic
c) Server1 创建一个生产者发送消息
[root@Server1 ~]# kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
[2016-10-11 20:54:07,025] aaaaaaaaaaaaaaaaa
d) Server2 创建一个消费者接收消息
[root@Server2 ~]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic
aaaaaaaaaaaaaaaaa
至此,Kafka 集群搭建成功。
- 关闭 Kafka
每一台机器上执行如下命令
[root@Server2 ~]# kafka-server-stop.sh
关闭后使用 jps 命令查看有无 Kafka 进程存在
若自带脚本无法关闭 kafka,
修改 kafka-server-stop.sh 中的指令如下
PIDS=$(ps ax | grep -i 'kafka' | grep java | grep -v grep | awk '{print $1}')
或
PIDS=$(jps -l | grep 'kafka\.Kafka' | awk '{print $1}')
if [ -z "$PIDS" ]; then
echo "No kafka server to stop"
exit 1
else
kill -s TERM $PIDS
fi
- 遇到的错误:
WARN Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
—–解决方案:
$ vi /etc/hosts
将`192.168.31.108 hostname`改成`192.168.31.108 localhost hostname`
- 注: 不修改producer.properties和consumer.properties亦可