linux 源碼搭建Kafka集群,100%有效


kafka源碼編譯安裝

准備三台服務器

	192.168.xxx.xxx
	192.168.xxx.xxx
	192.168.xxx.xxx

安裝kafka前需先安裝JDK和zookeeper如下步驟:

JDK配置安裝

官網地址(https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html)

下載文件到本地,通過遠程工具上載文件到服務器自定義目錄

解壓文件到指定目錄(所有節點機器都做,也可忽略后面做節點復制)

tar -zxvf jdk-8u291-linux-x64.tar.gz -C /usr/local/    #解壓文件到指定目錄
mv jdk1.8.0_291/ java    #修改文件名
cd java

在這里插入圖片描述

配置環境變量

vi etc/profile

末尾添加如下內容:

export JAVA_HOME=/usr/local/java        
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin

使配置文件生效

source /etc/profile

檢查驗證

java -version

在這里插入圖片描述

zookeeper 配置安裝

官網下載地址(https://zookeeper.apache.org/releases.html)

下載源碼包文件到本地通過遠程連接工具上載文件到服務器

解壓文件

推薦下載編譯后的bin源碼包

tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/

mv apache-zookeeper-3.7.0-bin/ zookeeper

在這里插入圖片描述

創建文件目錄用於存放數據

cd /usr/local/zookeeper
mkdir data    #存放數據
mkdir logs    #存放日志文件

進入conf文件夾,將zoo_sample.cfg改為zoo.cfg

cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg

修改配置文件參數

vi zoo.cfg

#The number of milliseconds of each tick

tickTime=2000  #服務器之間或客戶端與服務器之間維持心跳的時間間隔,每隔tickTime時間就會發送一個心跳。

#The number of ticks that the initial

#synchronization phase can take

initLimit=10    #配置 Zookeeper 接受客戶端(此客戶端不是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集群中連接到 Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已超過initLimit個tickTime長度后 Zookeeper 服務器還沒有收到客戶端的返回信息,則表明客戶端連接失敗。總的時間長度就是 initLimit * tickTime 秒。

#The number of ticks that can pass between

#sending a request and getting an acknowledgement

syncLimit=5  #配置 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 syncLimit * tickTime 秒。

#the directory where the snapshot is stored.

#do not use /tmp for storage, /tmp here is just

#example sakes.

dataDir=/usr/local/zookeeper/data #Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日志文件也保存在這個目錄里。
dataLogDir=/usr/local/zookeeper/logs #dataLogDir:若沒提供的話則用dataDir。zookeeper的持久化都存儲在這兩個目錄里。dataLogDir里是放到的順序日志(WAL)。而dataDir里放的是內存數據結構的snapshot,便於快速恢復。為了達到性能最大化,一般建議把dataDir和dataLogDir分到不同的磁盤上,以充分利用磁盤順序寫的特性。
#the port at which the clients will connect
clientPort=2181   #Zookeeper服務器監聽的端口,以接受客戶端的訪問請求。
#the maximum number of client connections.

#increase this if you need to handle more clients

#maxClientCnxns=60
#Be sure to read the maintenance section of the

administrator guide before turning on autopurge.

#http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

Purge task interval in hours

Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

Metrics Providers

#https://prometheus.io Metrics Exporter

#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
#zookeeper集群配置信息        
server.1=192.168.xxx.xxx:2888:3888     ###注:192.168.xxx.xxx:2888:3888后面一定不要有空格,否則會報錯
server.2=192.168.xxx.xxx:2888:3888
server.3=192.168.xxx.xxx:2888:3888
#server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集群中的 Leader 服務器交換信息的端口;D 表示的是萬一集群中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,此端口就是用來執行選舉時服務器相互通信的端口。如果是偽集群的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。2888端口是zookeeper服務相互通信使用的,3888端口是zookeeper服務選舉使用的

默認端口說明:

在這里插入圖片描述

添加myid文件

說明:除了修改 zoo.cfg 配置文件,集群模式下還要新增一個名叫myid的文件,這個文件放在上述dataDir指定的目錄下,這個文件里面就只有一個數據,就是上圖配置中server.x的這個x(1,2,3)值,zookeeper啟動時會讀取這個文件,拿到里面的數據與 zoo.cfg 里面的配置信息比較從而判斷到底是那個server(節點)。

cd /usr/local/zookeeper/data
vi myid

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7JJoAxgE-1629162748604)(kafka%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85.assets/image-20210806213748986.png)]
將配置好的zookeeper 復制到其他集群節點上

scp -r /usr/local/zookeeper/ root@192.168.xxx.xxx:/usr/local/zookeeper

scp -r /usr/local/zookeeper/ root@192.168.xxx.xxx:/usr/local/zookeeper

scp -r /usr/local/zookeeper/ root@192.168.xxx.xxx:/usr/local/zookeeper
##復制安裝完成的java 到其它集群節點(如已完成JDK安裝請忽略)
scp -r /usr/local/java/ root@192.168.xxx.xxx:/usr/local/java
scp -r /usr/local/java/ root@192.168.xxx.xxx:/usr/local/java
scp -r /usr/local/java/ root@192.168.xxx.xxx:/usr/local/java
## 配置其它集群節點java環境變量
vi /etc/profile
export JAVA_HOME=/usr/local/java        
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin

注:分別修改服務節點的myid 值(與上述server所對應服務器一致如:server.1=192.168.238.128則對應服務器的myid為1以次類推)

vi  /usr/local/zookeeper/data/myid   ## 所有機器

啟動節點(所有機器執行下述操作)

cd  /usr/local/zookeeper/bin

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WuEQ7ICB-1629162748605)(kafka%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85.assets/image-20210806215234596.png)]

./zkServer.sh start #啟動命令
./zkServer.sh status # 查看運行狀態

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3adbsrY3-1629162748607)(kafka%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85.assets/image-20210811193047096.png)]
啟動完成顯示如上

查看各節點狀態

192.168.xxx.xxx

在這里插入圖片描述

192.168.xxx.xxx

在這里插入圖片描述

192.168.xxx.xxx

在這里插入圖片描述

kafka配置安裝

官網地址下載(http://kafka.apache.org/downloads)

在這里插入圖片描述

上載文件到服務器指定目錄

cd /usr/local/src/tool/

解壓文件

tar -zxvf kafka_2.13-2.8.0.tgz -C /usr/local/

mv kafka_2.13-2.8.0/ kafka
cd kafka/
mkdir kafka-logs //保存日志文件目錄 非必須創建

解壓后文件目錄

cd /usr/local/kafka
在這里插入圖片描述

修改配置文件

cd /usr/local/kafka/config

在這里插入圖片描述

修改server.properties配置文件

在server.properties中主要修改如下配置:

在這里插入圖片描述

broker.id=1  //每個kafka服務器的唯一識別id 默認為0
listeners=PLAINTEXT://192.168.xxx.xxx:9092  //去掉注釋配置為本機ip
listeners=PLAINTEXT://:9092    //kafka對外提供服務的默認端口
log.dirs=/usr/local/kafka/kafka-logs   //非必須可選擇修改 如需要改需手動創建對應文件目錄
zookeeper.connect=192.168.xxx.xxx:2181,192.168.xx.xxx:2181,192.168.xx.xx:2181   //zookeeper集群用逗號隔開

將kafka目錄分發到各節點

scp -r kafka/ root@192.168.xxx.xxx:/usr/local/kafka/

scp -r kafka/ root@192.168.xxx.xxx:/usr/local/kafka/

按上述修改如上配置

啟動kafka(所有節點)

進入bin目錄
cd /usr/local/kafka/bin
./kafka-server-start.sh -daemon ../config/server.properties  
jps //驗證

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CJUxtFZ9-1629162748621)(kafka%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85.assets/image-20210811204516651.png)]

檢查端口

netstat -tlnp

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GdFKsNCg-1629162748622)(kafka%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85.assets/image-20210811204620970.png)]

測試

1.查看topic 列表

bin/kafka-topics.sh --list --zookeeper 192.168.xx.xx:2181 
//這里的ip對應server.properties 配置所在服務器端口  /新安裝配置的kafka下無數據

2.創建topic

bin/kafka-topics.sh --describe --zookeeper 192.168.xxx.xxx:2181 --topic test  //創建topic 取名test

3.在其中一台服務器上創建生產者

bin/kafka-console-producer.sh --broker-list 192.168.xx.xx:9092,192.168.xxx.xxx:9092,192.168.xxx.xxx:9092 --topic test

在這里插入圖片描述

4.在另外兩台服務器創建消費者

./kafka-console-consumer.sh --bootstrap-server 192.168.xxx.xxx:9092,192.168.xxx.xxx:9092,192.168.xxx.xxx:9092 --topic test --from-beginning

在這里插入圖片描述
測試通過!


免責聲明!

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



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