雖然公司有運維,但也不能啥都靠他們,萬一哪天環境出問題了,你不能一上來就找運維吧,丟臉臉~
今天分享一套從零開始搭建一套kafka集群的筆記,我幾乎幫你踩了所有的坑,你只需按步驟來,有手就行

kafka依賴jdk和zookeeper環境
開始之前再啰嗦一句,同樣的教程,有人失敗有人成功,失敗的小伙伴大部門都是路徑問題,所以,仔細點,不要慌
安裝jdk
檢查下你服務器有沒有jdk,如下圖就是裝了的

如果沒裝,出門右轉,先把jdk搞完再回來接著看,linux安裝jdk環境
搭建zookeeper集群
雖然kafka 0.5.x 以上版本已經集成了zk,但我們最好還是單獨部署一套,兩個原因
1、kafka自帶的zk是單機的,修改配置也能改成集群,但是有風險,搞不好把kafka改壞了
2、講道理,雖然kafka依賴zk,但是這畢竟是兩個組件,獨立出來當然更好,我們應該降低耦合度
安裝zookeeper其實也不復雜,只是會有很多坑,我下面的每一步都不要漏掉,最容易出問題的地方就是路徑,建議路徑保持和我一致,這樣你基本直接復制我的命令就能用
1、來到你的服務器,到opt目錄,創建一個zookeeper檔案夾,然后進去
cd /opt
mkdir zookeeper
cd zookeeper
2、下載zk安裝包
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
如果提示wget命令不存在 wget: command not found
yum -y install wget
3、創建三個檔案夾server1、server2、server3
因為我只有一臺服務器,所以只能搭偽集群,所謂偽集群意思就是在一臺機器上開三個埠來模擬三臺服務器(真集群步驟也一樣,一般來說區別在于偽集群ip相同埠不同,真集群ip不通埠相同)
mkdir server1
mkdir server2
mkdir server3
至此,你的zookeeper目錄應該長這樣

分別在三個server目錄中創建data、datalog兩個檔案夾
并且將zk安裝包分別解壓到三個server目錄中
mkdir server1/data
mkdir server1/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server1
mkdir server2/data
mkdir server2/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server1
mkdir server3/data
mkdir server3/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server1
至此,每個server目錄里都應該是這樣

現在開始配置zk集群,關鍵步驟來了
分別 在三個server目錄的data檔案夾下建一個 myid 檔案,檔案內容就一個數字,server1對應1,server2對應2,server3對應3
新建檔案
vi /opt/zookeeper/server1/data/myid
按i進入編輯模式,輸入數字1,esc,冒號,wq保存退出
vi /opt/zookeeper/server2/data/myid
按i進入編輯模式,輸入數字2,esc,冒號,wq保存退出
vi /opt/zookeeper/server3/data/myid
按i進入編輯模式,輸入數字3,esc,冒號,wq保存退出
然后 分別 進到zookeeper的conf目錄
里面有個檔案叫 zoo_sample.cfg ,不要動它,它沒啥用
我們復制一份到當前目錄取名叫 zoo.cfg,名字其實不重要,但大家都這么取的
cp -i zoo_sample.cfg zoo.cfg
當前目錄串列

接著修改zoo.cfg檔案
主要修改下民紅框中幾個地方,其它默認或者根據你自己的情況來修改

如果你全程都是跟著我的目錄來的,直接像下面這樣配置即可
#/opt/zookeeper/server1/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server1/data
dataLogDir=/opt/zookeeper/server1/datalog
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
#/opt/zookeeper/server2/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server2/data
dataLogDir=/opt/zookeeper/server2/datalog
clientPort=2182
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
#/opt/zookeeper/server3/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server3/data
dataLogDir=/opt/zookeeper/server3/datalog
clientPort=2183
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
配置完成,進入zookeeper的bin目錄啟動zk服務
cd /opt/zookeeper/server1/zookeeper-3.4.10/bin
./zkServer.sh start
cd /opt/zookeeper/server2/zookeeper-3.4.10/bin
./zkServer.sh start
cd /opt/zookeeper/server3/zookeeper-3.4.10/bin
./zkServer.sh start
啟動資訊

三個zk都啟動完了后,jps確認下啟動成功沒,如果都成功,會有這三個服務

至此,zookeeper集群搭建完成
開始搭建kafka集群
1、進入/opt目錄,創建kafka檔案夾
mkdir /opt/kafka
cd /opt/kafka
2、進去下載kafka安裝包
wget https://archive.apache.org/dist/kafka/1.0.0/kafka_2.11-1.0.0.tgz
3、創建kafkalogs1、kafkalogs2、kafkalogs3三個檔案夾
mkdir kafkalogs1
mkdir kafkalogs2
mkdir kafkalogs3
4、解壓kafka安裝包
tar -zxvf zookeeper-3.4.10.tar.gz
至此,你的kafka目錄應該長這樣

開始配置kafka
進入kafka的config目錄
cd /opt/kafka/kafka_2.11-1.0.0/config/
里面有個 server.properties 檔案
把這個檔案重命名并且復制兩份,得到這三個檔案(不重命名也行,反正要有三份server組態檔,重命名了看著舒服)
mv server.properties server1.properties
cp -i server1.properties server2.properties
cp -i server1.properties server3.properties
最終得到三個server組態檔

我們需要 分別 修改三個server組態檔的四個屬性:
- broker.id:節點id,對應上面zookeeper三個myid檔案的值,server1.properties寫1,2寫2,3寫3
- listeners:監聽埠,把下面的 ip 換成你服務器的私有地址(如果填127.0.0.1或localhost可能無法從外面訪問kafka服務)
- log.dirs:日志檔案存放目錄
- zookeeper.connect:zk集群ip:埠
修改的時候注意,這個檔案很大,你忍一下
//server1
broker.id=1
listeners=PLAINTEXT://ip:9092
log.dirs=/opt/kafka/kafkalogs1
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
//server2
broker.id=2
listeners=PLAINTEXT://ip:9093
log.dirs=/opt/kafka/kafkalogs2
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
//server3
broker.id=3
listeners=PLAINTEXT://ip:9094
log.dirs=/opt/kafka/kafkalogs3
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
配置完成,啟動
來到解壓好的kafka目錄,啟動三個kafka服務
cd /opt/kafka/kafka_2.11-1.0.0
./bin/kafka-server-start.sh -daemon config/server1.properties
./bin/kafka-server-start.sh -daemon config/server2.properties
./bin/kafka-server-start.sh -daemon config/server3.properties
jps看下啟動成功沒

如果沒有kafka行程,說明啟動失敗了,具體原因可以在logs目錄下的kafkaServer.out檔案看日志
測驗
來到kafka安裝目錄
cd /opt/kafka/kafka_2.11-1.0.0
創建個topic先
./bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --create --topic test-topic --partitions 3 --replication-factor 3
命令解釋:在127.0.0.1:2181這臺zk上,創建一個名為test-topic的topic,將訊息切分成3分,每份3個副本
–zookeeper:指定zk服務
–topic:指定topic名稱
–partitions:磁區數量
–replication-factor:資料副本數量

啟動生產者
./bin/kafka-console-producer.sh --broker-list 私有地址:9092 --topic test-topic
隨便發幾條訊息

啟動消費者
./bin/kafka-console-consumer.sh --bootstrap-server 私有地址:9092 --topic test-topic

常見錯誤
失敗的很大可能性都是組態檔里面的路徑沒配好,好好檢查下
確定上面步驟和組態檔都沒錯的話,可能是機器記憶體不足,kafka默認最小啟動記憶體1g
看下啟動日志
tail -111f /opt/kafka/kafka_2.11-1.0.0/logs/kafkaServer.out
如果顯示如下資訊,則就是你機器記憶體不足

簡單,執行下面命令設定kafka啟動引數
export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
再次啟動,如果還提示記憶體不足
清下機器快取
sync
echo 3 > /proc/sys/vm/drop_caches
如果不是以上原因,就只能根據啟動日志來靈活解決了
其它kafka常用命令
查看topic串列
./bin/kafka-topics.sh --zookeeper localhost:2181 --list

查看某個topic詳情
./bin/kafka-topics.sh --zookeeper localhost:2181 -describe --topic test-topic

ok我話說完
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/397357.html
標籤:其他
上一篇:[ C語言 ] 還不懂指標的一定要進來,帶你初始指標,簡單使用指標,它沒有你想的那么難。
下一篇:電商專題研究報告(合集)
