準備工作:配置Java環(huán)境、 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
- 修改生產(chǎn)者配置文件
[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
- 然后重復以上步驟,在其它虛擬機上安裝,區(qū)別在于broker.id=0要變?yōu)?1,2......,listeners 所配置的 IP 也要進行相應的更改。
- 可以考慮將kafka相關命令配置到環(huán)境變量中。
- 進入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) 創(chuàng)建一個topic
b) 查看創(chuàng)建的topic
[root@Server1 ~]# kafka-topics.sh -describe --zookeeper localhost:2181 --topic test-topic
c) Server1 創(chuàng)建一個生產(chǎn)者發(fā)送消息
[root@Server1 ~]# kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
[2016-10-11 20:54:07,025] aaaaaaaaaaaaaaaaa
d) Server2 創(chuàng)建一個消費者接收消息
[root@Server2 ~]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic
aaaaaaaaaaaaaaaaa
至此,Kafka 集群搭建成功。
- 關閉 Kafka
每一臺機器上執(zhí)行如下命令
[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亦可