如何配置Kafka集羣

如何配置Kafka集羣 node


Kafka集羣配置比較簡單,爲了更好的讓你們理解,在這裏要分別介紹下面三種配置 服務器

  • 單節點:一個broker的集羣
  • 單節點:多個broker的集羣
  • 多節點:多broker集羣

1、單節點單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

2、單節點運行多broker實例


1.啓動zookeeper 

   和上面的同樣

2.啓動Kafka的broker

   要想在一臺機器上啓動多個broker實例,只須要準備多個server.properties文件便可,好比咱們要在一臺機器上啓動兩個broker:
   首先咱們要準備兩個server.properties配置文件
  1. server-1
    1. brokerid=1
    2. port=9092
    3. log.dir=/temp/kafka8-logs/broker1    
  2. server-2
    1. brokerid=2
    2. port=9093
    3. 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
     能夠看到咱們啓動是爲每一個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

3、集羣模式(多節點多實例)

     介紹了上面兩種配置方法,再理解集羣配置就簡單了,好比咱們要配置以下圖所示集羣:
      zookeeper配置文件(zookeeper.properties):不變
      broker的配置配置文件(server.properties):按照單節點多實例配置方法在一個節點上啓動兩個實例,不一樣的地方是zookeeper的鏈接串須要把全部節點的zookeeper都鏈接起來
         # Zookeeper 鏈接串
         zookeeper.connect=node1:2181,node2:2181
相關文章
相關標籤/搜索