Kafka集群部署指南

一、前言

1结窘、Kafka簡介

Kafka是一個開源的分布式消息引擎/消息中間件如孝,同時Kafka也是一個流處理平臺。Kakfa支持以發(fā)布/訂閱的方式在應(yīng)用間傳遞消息常熙,同時并基于消息功能添加了Kafka Connect纬乍、Kafka Streams以支持連接其他系統(tǒng)的數(shù)據(jù)(ElasticsearchHadoop等)

Kafka最核心的最成熟的還是他的消息引擎症概,所以Kafka大部分應(yīng)用場景還是用來作為消息隊列削峰平谷蕾额。另外,Kafka也是目前性能最好的消息中間件彼城。

2诅蝶、Kafka架構(gòu)

Kafka架構(gòu)圖

在Kafka集群(Cluster)中,一個Kafka節(jié)點就是一個Broker,消息由Topic來承載,可以存儲在1個或多個Partition中派草。發(fā)布消息的應(yīng)用為Producer、消費消息的應(yīng)用為Consumer缰泡,多個Consumer可以促成Consumer Group共同消費一個Topic中的消息。

概念/對象 簡單說明
Broker Kafka節(jié)點
Topic 主題,用來承載消息
Partition 分區(qū)棘钞,用于主題分片存儲
Producer 生產(chǎn)者缠借,向主題發(fā)布消息的應(yīng)用
Consumer 消費者,從主題訂閱消息的應(yīng)用
Consumer Group 消費者組宜猜,由多個消費者組成

3泼返、準(zhǔn)備工作

1、Kafka服務(wù)器

準(zhǔn)備3臺CentOS服務(wù)器姨拥,并配置好靜態(tài)IP绅喉、主機(jī)名

服務(wù)器名 IP 說明
kafka01 192.168.88.51 Kafka節(jié)點1
kafka02 192.168.88.52 Kafka節(jié)點2
kafka03 192.168.88.53 Kafka節(jié)點3

軟件版本說明

說明
Linux Server CentOS 7
Kafka 2.3.0

2、ZooKeeper集群

Kakfa集群需要依賴ZooKeeper存儲Broker叫乌、Topic等信息柴罐,這里我們部署三臺ZK

服務(wù)器名 IP 說明
zk01 192.168.88.21 ZooKeeper節(jié)點
zk02 192.168.88.22 ZooKeeper節(jié)點
zk03 192.168.88.23 ZooKeeper節(jié)點

部署過程參考:https://ken.io/note/zookeeper-cluster-deploy-guide

二、部署過程

1憨奸、應(yīng)用&數(shù)據(jù)目錄

#創(chuàng)建應(yīng)用目錄
mkdir /usr/kafka

#創(chuàng)建Kafka數(shù)據(jù)目錄
mkdir /kafka
mkdir /kafka/logs
chmod 777 -R /kafka

2革屠、下載&解壓

Kafka官方下載地址:https://kafka.apache.org/downloads
這次我下載的是2.3.0版本

#創(chuàng)建并進(jìn)入下載目錄
mkdir /home/downloads
cd /home/downloads

#下載安裝包
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz 

#解壓到應(yīng)用目錄
tar -zvxf kafka_2.12-2.3.0.tgz -C /usr/kafka

kafka_2.12-2.3.0.tgz 其中2.12是Scala編譯器的版本,2.3.0才是Kafka的版本

3膀藐、Kafka節(jié)點配置

#進(jìn)入應(yīng)用目錄
cd /usr/kafka/kafka_2.12-2.3.0/

#修改配置文件
vi config/server.properties

通用配置

配置日志目錄屠阻、指定ZooKeeper服務(wù)器

# A comma separated list of directories under which to store log files
log.dirs=/kafka/logs

# root directory for all kafka znodes.
zookeeper.connect=192.168.88.21:2181,192.168.88.22:2181,192.168.88.23:2181

分節(jié)點配置

  • Kafka01
broker.id=0

#listeners=PLAINTEXT://:9092
listeners=PLAINTEXT://192.168.88.51:9092

  • Kafka02
broker.id=1

#listeners=PLAINTEXT://:9092
listeners=PLAINTEXT://192.168.88.52:9092

  • Kafka03
broker.id=2

#listeners=PLAINTEXT://:9092
listeners=PLAINTEXT://192.168.88.53:9092

4、防火墻配置

#開放端口
firewall-cmd --add-port=9092/tcp --permanent

#重新加載防火墻配置
firewall-cmd --reload

5额各、啟動Kafka

#進(jìn)入kafka根目錄
cd /usr/kafka/kafka_2.12-2.3.0/
#啟動
/bin/kafka-server-start.sh config/server.properties &

#啟動成功輸出示例(最后幾行)
[2019-06-26 21:48:57,183] INFO Kafka commitId: fc1aaa116b661c8a (org.apache.kafka.common.utils.AppInfoParser)
[2019-06-26 21:48:57,183] INFO Kafka startTimeMs: 1561531737175 (org.apache.kafka.common.utils.AppInfoParser)
[2019-06-26 21:48:57,185] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)

三、Kafka測試

1吧恃、創(chuàng)建Topic

在kafka01(Broker)上創(chuàng)建測試Tpoic:test-ken-io虾啦,這里我們指定了3個副本、1個分區(qū)

bin/kafka-topics.sh --create --bootstrap-server 192.168.88.51:9092 --replication-factor 3 --partitions 1 --topic test-ken-io

Topic在kafka01上創(chuàng)建后也會同步到集群中另外兩個Broker:kafka02痕寓、kafka03

2傲醉、查看Topic

我們可以通過命令列出指定Broker的

bin/kafka-topics.sh --list --bootstrap-server 192.168.88.52:9092

3、發(fā)送消息

這里我們向Broker(id=0)的Topic=test-ken-io發(fā)送消息

bin/kafka-console-producer.sh --broker-list  192.168.88.51:9092  --topic test-ken-io

#消息內(nèi)容
> test by ken.io

4呻率、消費消息

在Kafka02上消費Broker03的消息

bin/kafka-console-consumer.sh --bootstrap-server 192.168.88.53:9092 --topic test-ken-io --from-beginning

在Kafka03上消費Broker02的消息

bin/kafka-console-consumer.sh --bootstrap-server 192.168.88.52:9092 --topic test-ken-io --from-beginning

然后均能收到消息

test by ken.io

這是因為這兩個消費消息的命令是建立了兩個不同的Consumer
如果我們啟動Consumer指定Consumer Group Id就可以作為一個消費組協(xié)同工硬毕,1個消息同時只會被一個Consumer消費到

bin/kafka-console-consumer.sh --bootstrap-server 192.168.88.53:9092 --topic test-ken-io --from-beginning --group testgroup_ken

bin/kafka-console-consumer.sh --bootstrap-server 192.168.88.52:9092 --topic test-ken-io --from-beginning --group testgroup_ken

四、備注

1礼仗、Kafka常用配置項說明

Kafka常用Broker配置說明:

配置項 默認(rèn)值/示例值 說明
broker.id 0 Broker唯一標(biāo)識
listeners PLAINTEXT://192.168.88.53:9092 監(jiān)聽信息吐咳,PLAINTEXT表示明文傳輸
log.dirs kafka/logs kafka數(shù)據(jù)存放地址,可以填寫多個元践。用","間隔
message.max.bytes message.max.bytes 單個消息長度限制韭脊,單位是字節(jié)
num.partitions 1 默認(rèn)分區(qū)數(shù)
log.flush.interval.messages Long.MaxValue 在數(shù)據(jù)被寫入到硬盤和消費者可用前最大累積的消息的數(shù)量
log.flush.interval.ms Long.MaxValue 在數(shù)據(jù)被寫入到硬盤前的最大時間
log.flush.scheduler.interval.ms Long.MaxValue 檢查數(shù)據(jù)是否要寫入到硬盤的時間間隔。
log.retention.hours 24 控制一個log保留時間单旁,單位:小時
zookeeper.connect 192.168.88.21:2181 ZooKeeper服務(wù)器地址沪羔,多臺用","間隔

2、附錄

—-
本文首發(fā)于我的獨立博客:https://ken.io/note/kafka-cluster-deploy-guide

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末象浑,一起剝皮案震驚了整個濱河市蔫饰,隨后出現(xiàn)的幾起案子琅豆,更是在濱河造成了極大的恐慌,老刑警劉巖篓吁,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趋距,死亡現(xiàn)場離奇詭異,居然都是意外死亡越除,警方通過查閱死者的電腦和手機(jī)节腐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摘盆,“玉大人翼雀,你說我怎么就攤上這事『⒗蓿” “怎么了狼渊?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長类垦。 經(jīng)常有香客問我狈邑,道長,這世上最難降的妖魔是什么蚤认? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任米苹,我火速辦了婚禮,結(jié)果婚禮上砰琢,老公的妹妹穿的比我還像新娘蘸嘶。我一直安慰自己,他們只是感情好陪汽,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布训唱。 她就那樣靜靜地躺著,像睡著了一般挚冤。 火紅的嫁衣襯著肌膚如雪况增。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天训挡,我揣著相機(jī)與錄音澳骤,去河邊找鬼。 笑死舍哄,一個胖子當(dāng)著我的面吹牛宴凉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播表悬,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼弥锄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起籽暇,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤温治,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后戒悠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熬荆,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年绸狐,在試婚紗的時候發(fā)現(xiàn)自己被綠了卤恳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡寒矿,死狀恐怖突琳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情符相,我是刑警寧澤拆融,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站啊终,受9級特大地震影響镜豹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蓝牲,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一趟脂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搞旭,春花似錦散怖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咬最。三九已至翎嫡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間永乌,已是汗流浹背惑申。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留翅雏,地道東北人圈驼。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像望几,于是被迫代替她去往敵國和親绩脆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容