安裝設(shè)置


ZooKeeper基本配置

  • 以單機方式(STANDALONE SERVER)啟動zookeeper:

最簡單的ZooKeeper配置

# cat > /usr/local/zookeeper/conf/zoo.cfg << EOF
> tickTime=2000                             //刷新時鐘 
> dataDir=/var/lib/zookeeper                //數(shù)據(jù)存放位置
> clientPort=2181                           //客戶端連接端口
> EOF

?啟動命令

# /usr/local/zookeeper/bin/zkServer.sh start

JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
  • 以集群方式啟動zookeeper:

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=20
syncLimit=5
server.1=zoo1.example.com:2888:3888
server.2=zoo2.example.com:2888:3888
server.3=zoo3.example.com:2888:3888

服務(wù)器的配置說明:
server.X=hostname:peerPort:leaderPort
X:必須為從1開始的整數(shù)
peerPort: 服務(wù)器之間相互通訊的端口
leaderPort: 主節(jié)點使用的通訊端口
initLimit:允許子節(jié)點與主節(jié)相連的次數(shù)
syncLimit:允許異步子節(jié)點成為主節(jié)點的次數(shù)
tickTime:每次連接的時間

ZooKeeper集群(劇團)建議使用單數(shù)的服務(wù)器,例如,3,5. 如果使用3個服務(wù)器,可以在丟失一個服務(wù)器的情況下繼續(xù)正常工作。如果使用5個服務(wù)器,那么可以在丟失兩個服務(wù)器時正常工作。

如何選擇服務(wù)器的數(shù)量
考慮運行服務(wù)器數(shù)量在5個服務(wù)器為佳。如果需要修改ZooKeeper的配置,那么需要替換停止節(jié)點,修改以后,需要重新加載節(jié)點。如果如果服務(wù)器不能容錯一個以上的節(jié)點down掉,那么維護工作將會有額外的風(fēng)險。同時,也建議不要使用7個以上的節(jié)點,大多數(shù)使用反饋看,7個以上節(jié)點,會面臨這效率降低的問題。


安裝配置Kafka

  • 基本配置

#zookeeper 地址,如果多個地址,以逗號隔開
zookeeper.connect=9.51.103.134:2181,9.51.103.135:2181

# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000

啟動kafka server
./bin/kafka-server-start.sh -daemon ../config/server.properties

為驗證kafka是否啟動成功,創(chuàng)建一個topic,并且生產(chǎn)消費一些消息

  • 創(chuàng)建并顯示topic

//創(chuàng)建topic
# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Created topic "test".

//顯示topic
# ./bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
Topic:test    PartitionCount:1    ReplicationFactor:1    Configs:
    Topic: test    Partition: 0    Leader: 0    Replicas: 0    Isr: 0

  • 產(chǎn)生并消費消息

//產(chǎn)生消息
# ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
Test Message 1
Test Message 2
^C
#
//消費消息
# /bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
Test Message 1
Test Message 2
^C
Consumed 2 messages
#

Broker 配置

  • broker.id
    默認(rèn)值為0,每個broker的唯一整型識別碼,僅僅用作于broker之間的區(qū)別,建議值包含本身意義,以便與識別,例如ip地址最后一組。
  • port
    默認(rèn)9092, 監(jiān)聽端口,如果端口值小于1024,必須以root啟動broker。不建議以root啟動。
  • listeners
    PLAINTEXT://your.host.name:9092*
  • zookeeper.connect
    格式:hostname:port/path,如果需要連接多個,每組以分號隔開。 例如:localhost:2181, 其中path是可選項。 path是制定的kafka根目錄,如果指定了,但是不存在,將在broker啟東時自動創(chuàng)建。

為什么要使用改變根目錄
一般情況下,考慮使用改變根目錄,它可允許Zookeeper 劇團共享應(yīng)用,包括kafka集群。在多個Zookeeper是,這也是最好的方式來指定server。指定后,如果ensemble出現(xiàn)問題,允許broker 連接到其他zookeeper下面的劇團。

  • log.dirs
    消息存放地址,多個以逗號分開
  • num.partitions
    沒每個topic創(chuàng)建的分區(qū)數(shù)量

如何確定分區(qū)的數(shù)量
考慮分區(qū)數(shù)量,應(yīng)該考慮一下一些因素:

  • 期望的吞吐量,比如 每分鐘100KB 或者 1GB 每秒
  • 期望單個分區(qū)達到的吞吐量,大多數(shù),單個消費者是從一個分區(qū)讀取數(shù)據(jù),如果知道消費者寫入數(shù)據(jù)庫的數(shù)據(jù)最大為50MB每秒,類似于這種,但給分區(qū)的最大吞吐量為60MB
  • 考慮每個生產(chǎn)者的最大吞吐量,一般情況下,生產(chǎn)者的速度總是大于消費者的
  • 如果發(fā)送消息是基于Keys的,那么在后期增加分區(qū)是比較麻煩的,所以設(shè)計分區(qū)要考慮以后的使用場景。
  • 考慮磁盤和網(wǎng)絡(luò)情況
  • 要避免高估,每個分區(qū)使用資源會降低主分區(qū)的性能
  • log.retention.ms
    默認(rèn)為log.retention.hours=168, 消息保存的時間,如果多個多個broker配置,那么最小值啟用。
  • log.retention.bytes
    消息保存的容量,每個分區(qū)單獨使用容量,單位為字節(jié)。如1GB,一共8個分區(qū),那么總?cè)萘繛?GB
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容