425
汽車大全
Kafka詳解二、如何配置Kafka集群
Kafka集群配置比較簡單,為了更好的讓大家理解,在這裏要分別介紹下麵三種配置- 單節點:一個broker的集群
- 單節點:多個broker的集群
- 多節點:多broker集群
一、單節點單broker實例的配置

1. 首先啟動zookeeper服務
Kafka本身提供了啟動zookeeper的腳本(在kafka/bin/目錄下)和zookeeper配置文件(在kafka/config/目錄下),首先進入Kafka的主目錄(可通過 whereis kafka命令查找到):
[root@localhost kafka-0.8]# bin/zookeeper-server-start.sh config/zookeeper.properties
zookeeper配置文件的一些重要屬性:
# Data directory where the zookeeper snapshot is stored.
dataDir=/tmp/zookeeper# The port listening for client request
clientPort=2181
默認情況下,zookeeper服務器會監聽 2181端口,更詳細的信息可去zookeeper官網查閱。
2. 啟動Kafka broker
運行kafka提供的啟動kafka服務腳本即可:
[root@localhost kafka-0.8]# bin/kafka-server-start.sh config/server.properties
broker配置文件中的重要屬性:
# broker的id. 每個broker的id必須是唯一的.
Broker.id=0# 存放log的目錄
log.dir=/tmp/kafka8-logs
# Zookeeper 連接串
zookeeper.connect=localhost:2181
3. 創建一個僅有一個Partition的topic
[root@localhost kafka-0.8]# bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic kafkatopic
4. 用Kafka提供的生產者客戶端啟動一個生產者進程來發送消息
[root@localhost kafka-0.8]# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic kafkatopic
其中有兩個參數需要注意:
- broker-list:定義了生產者要推送消息的broker地址,以<IP地址:端口>形式
- topic:生產者發送給哪個topic
然後你就可以輸入一些消息了,如下圖:

5. 啟動一個Consumer實例來消費消息
[root@localhost kafka-0.8]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic kafkatopic --from-beginning
當你執行這個命令之後,你便可以看到控製台上打印出的生產者生產的消息:

和消費者相關的屬性配置存放在Consumer.properties文件中,重要的屬性有:
# consumer的group id (A string that uniquely identifies a set of consumers
# within the same consumer group)
groupid=test-consumer-group
# zookeeper 連接串
zookeeper.connect=localhost:2181
# zookeeper 連接串
zookeeper.connect=localhost:2181
二、單節點運行多broker實例

1.啟動zookeeper
和上麵的一樣
2.啟動Kafka的broker
要想在一台機器上啟動多個broker實例,隻需要準備多個server.properties文件即可,比如我們要在一台機器上啟動兩個broker:
首先我們要準備兩個server.properties配置文件
-
server-1
- brokerid=1
- port=9092
- log.dir=/temp/kafka8-logs/broker1
-
server-2
- brokerid=2
- port=9093
- log.dir=/temp/kafka8-logs/broker2
然後我們再用這兩個配置文件分別啟動一個broker
[root@localhost kafka-0.8]# env JMX_PORT=9999 bin/kafka-server-start.sh config/server-1.properties
[root@localhost kafka-0.8]# env JMX_PORT=10000 bin/kafka-server-start.sh config/server-2.properties
[root@localhost kafka-0.8]# env JMX_PORT=10000 bin/kafka-server-start.sh config/server-2.properties
可以看到我們啟動是為每個broker都指定了不同的JMX Port,JMX Port主要用來利用jconsole等工具進行監控和排錯
3.創建一個topic
現在我們要創建一個含有兩個Partition分區和2個備份的broker:
[root@localhost kafka-0.8]# bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 2 --partition 2 --topic othertopic
4.啟動Producer發送消息
如果我們要用一個Producer發送給多個broker,唯一需要改變的就是在broker-list屬性中指定要連接的broker:
[root@localhost kafka-0.8]# bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093 --topic othertopic
如果我們要讓不同的Producer發送給不同的broker,我們也僅僅需要為每個Producer配置響應的broker-list屬性即可。
5.啟動一個消費者來消費消息
和之前的命令一樣
[root@localhost kafka-0.8]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic othertopic --from-beginning
三、集群模式(多節點多實例)
介紹了上麵兩種配置方法,再理解集群配置就簡單了,比如我們要配置如下圖所示集群:
zookeeper配置文件(zookeeper.properties):不變
broker的配置配置文件(server.properties):按照單節點多實例配置方法在一個節點上啟動兩個實例,不同的地方是zookeeper的連接串需要把所有節點的zookeeper都連接起來
# Zookeeper 連接串
zookeeper.connect=node1:2181,node2:2181
zookeeper.connect=node1:2181,node2:2181

最後更新:2017-04-03 05:39:37