kafka外部訪問設置

1、broker參數

broker.id:kafka集羣的惟一標識。node

log.dirs:kafka存儲消息日誌的目錄,多個用逗號隔開,須要保證指定的目錄有充足的磁盤空間。apache

zookeeper.connect:必須配置,指定kafka集羣註冊的zookeeper集羣的地址。格式是:[主機名]:端口,多個使用逗號隔開。當多個kafka集羣註冊到同一個zookeeper集羣時,必須在末尾指定chroot(即當前kafka集羣註冊到zookeeper的根目錄),用於安全

將每一個kafka集羣隔離開,如:localhost:2181,localhost:2182/kafka_cluster1,此處的/kafka_cluster1就表示chroot。網絡

listeners:該參數用於客戶端鏈接broker端。格式:[協議]://[主機名]:[端口],多個使用逗號隔開。若是不指定主機名,則綁定默認網卡,若主機名是:0.0.0.0,則綁定多有網卡。kafka當前支持的協議包括:PLAINTEXT、SSL和SASL_SSL。對於未啓用安全的異步

kafka集羣,使用PLAINTEXT就能夠了。否者使用SSL或者SASL_SSL。spa

advertised.listeners:和listeners相似,也是用於發佈給clients的,不過該參數主要用於IaaS環境。對於有多塊網卡的環境(公網網卡和私網網卡),能夠指定該參數綁定公網IP,供外部clients使用,使用listeners綁定私網IP,公內部clients使用。.net

unclean.leader.election.enable:是否開啓unclean leader選舉,默認是false。表示若是ISR變空,而此時leader有宕機了,kafka不容許從剩下存活的非ISR副本中選擇一個當leader,由於若是容許,雖然kafka能夠繼續爲clients提供服務,但會形成數據丟失。線程

delete.topic.enable:是否容許刪除topic及管理的全部數據,新版本默認容許。這是一個異步刪除。3d

log.retention.{hours|minutes|ms}:該參數主要用於設置kafka消息持久化的時間,若同時設置,優先級是ms>minutes>hours,默認是保存7天。日誌

log.retention.bytes:該參數主要控制kafka集羣須要爲每一個消息日誌保存多大的數據。對於大小超過了這個設置,kafka會自動清理過時的日誌段文件。默認是1G。

min.insync.replicas:該參數主要配合producer的acks使用。當acks=-1,表示producer端尋求最高等級的持久化保證,而min.insync.replicas也只有在acks=-1時纔有意義,它指定了broker端必須成功響應clients端消息發送的最少分片數纔算成功。舉個栗子:

加上某個topic的每一個分片數爲3,當min.insync.replicas=2,則表示咱們容一臺kafka機器宕機。

num.network.threads:控制一個broker在後臺用於處理網絡請求的線程數,默認3。這裏的「處理」只是負責轉發請求,他會將接收到的請求轉發到後面的處理線程中。在正式環境中,用戶須要不停的監控NetworkProcessorAvgIdlePercent JMX指標,若該指標

持續低於0.3,則須要調大該參數。

num.io.threads:這個參數是控制broker端實際處理網絡請求的線程數,默認8,。kafka默認建立8個線程以輪詢的方式不停的監聽轉發過來的網絡請求並進行處理。kafka一樣也爲請求處理提供了一個JMX監控指標RequestHandlerAvgIdlePercent ,當指標低於0.3時,

則須要調大該參數。

message.max.bytes:kafka可以接受的最大消息大小,默認是977KB,用戶能夠根據須要進行設置。

2、topic參數

delete.retention.ms:每一個topic能夠設置本身的留存時間,以覆蓋broker設置的全局留存時間。

max.message.bytes:覆蓋全局的message.max.bytes。

retention.bytes:覆蓋全局的log.retention.bytes。

 

FAQ 

2018-05-02 14:49:18.916 WARN 11916 --- [ntainer#0-3-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer-4, groupId=cwenao-group] Connection to node 0 could not be established. Broker may not be available.

 

 

 

 0.10.x broker配置棄用了advertised.host.name和 advertised.port這兩個個配置項,就配置advertised.listeners就能夠了。

相關文章
相關標籤/搜索