kafka學習2:kafka集群安裝與配置


      在前一篇:kafka學習1:kafka安裝 中,我們安裝了單機版的Kafka,而在實際應用中,不可能是單機版的應用,必定是以集群的方式出現。本篇介紹Kafka集群的安裝過程: 

一、准備工作   

      1、開通Zookeeper和Kafka需要的端口

      在 zookeeper-端口說明 中,我們可以看到Zookeeper需要用到3個端口,我們都需要開放這個端口。Linux開放端口,可以參考:Linux 開啟端口命令 這篇文章。

      否則在啟動的時候,會出現如下錯誤(連接超時錯誤):

      2、修改主機名稱

      在搭建Kafka集群時,默認的主機名localhost.localmain不起作用,需要我們設置一個主機名,Linux下設置主機名可以參考:Linux修改主機名稱 這篇文章。

 

二、配置Zookeeper集群   

     這里用的是Kafka自帶的Zookeeper,修改zookeeper.properties。

      Zookeeper本身有很多配置,我在這里用到的配置有如下幾項:

      # the directory where the snapshot is stored.

      #存儲快照文件snapshot的目錄。默認情況下,事務日志也會存儲在這里。建議同時配置參數dataLogDir, 事務日志的寫性能直接影響zk性能
      dataDir=/usr/data/zookeeper_kafka

      =================================================
      # the port at which the clients will connect

      #客戶端連接server的端口,即對外服務端口,一般設置為2181吧。
      clientPort=2181

      ================================================
      # disable the per-ip limit on the number of connections since this is a non-production config

      #單個客戶端與單台服務器之間的連接數的限制,是ip級別的,默認是60,如果設置為0,那么表明不作任何限制。請注意這個限制的使用范圍,僅僅是單台客戶端機器與單#台ZK服務器之間的連接數限制,不是針對指定客戶端IP,也不是ZK集群的連接數限制,也不是單台ZK對所有客戶端的連接數限制。指定客戶端IP的限制策略,這里有一個#patch,可以嘗試一下:  http://rdc.taobao.com/team/jm/archives/1334(No Java system property)

      maxClientCnxns=0

=================================================

      #Customer->Server通信心跳數

      #ZK中的一個時間單元。ZK中所有時間都是以這個時間單元為基礎,進行整數倍配置的。例如,session的最小超時時間是2*tickTime。

      tickTime=2000

==================================================
      #Leader->Fllower初始通信時限

      #Follower在啟動過程中,會從Leader同步所有最新數據,然后確定自己能夠對外服務的起始狀態。Leader允許F在initLimit時間內完成這個工作。通常情況下,我們不用太在意這個參數的設置。如果ZK集群的數據量確實很大了,F在啟動的時候,從Leader上同步數據的時間也會相應變長,因此在這種情況下,有必要適當調大這個參數了。(No Java system property)

      initLimit=5

==================================================
      #Leader->Fllower同步通信時限

      #在運行過程中,Leader負責與ZK集群中所有機器進行通信,例如通過一些心跳檢測機制,來檢測機器的存活狀態。如果L發出心跳包在syncLimit之后,還沒有從F那里收到響應,那么就認為這個F已經不在線了。注意:不要把這個參數設置得過大,否則可能會掩蓋一些問題。(No Java system property)

      syncLimit=2

================================================

      #zookeeper的集群所有IP,注意數字1、2、3。

      server.1=192.168.116.129:2888:3888
      server.2=192.168.116.132:2888:3888
      server.3=192.168.116.133:2888:3888

      我們需要對應的Zookeeper服務器上在dataDir的目錄下面新建myid文件,同時把對應的1、2、3寫進去。

      執行啟動zookeeper命令:/bin/zookeeper-server-start.sh config/zookeeper.properties

      可以用zookeeper-shell.sh status來查看zookeeper的啟動狀態。

 

三、配置Kafka集群   

      這里修改的是server.properties文件。

      #The id of the broker. This must be set to a unique integer for each broker.

      #broker.id必須全集群惟一
      broker.id=2

      #配置kafka的監聽地址

      listeners=PLAINTEXT://192.168.116.129:9092

      port=9092

      #配置kafka的集群信息

      zookeeper.connect=192.168.116.129:2181,192.168.116.132:2181,192.168.116.133:2181

      然后啟動Kafka:bin/kafka-server-start.sh config/server.properties

      發送kafka消息如下:

  bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test20171116

      再在其他的Kakfa服務器上檢查:

    

    可以看到,我們kafka創建的topic消息已經同步到其他的broker上了。

 

四、參考文檔   

    http://kafka.apache.org/quickstart

    http://blog.csdn.net/gongxinju/article/details/53415051


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM