柚子快報邀請碼778899分享:Kafka (快速)安裝部署
柚子快報邀請碼778899分享:Kafka (快速)安裝部署
文章目錄
1、軟件下載&配置環(huán)境1_JDK安裝2_Zookeeper安裝3_Kafka安裝
2、單機安裝1_配置主機名和IP映射2_單機Kafka配置
3、集群安裝1_配置主機名和IP的映射關(guān)系2_時鐘同步3_Zookeeper配置信息4_集群Kafka配置
4、kafka的其他腳本命令5、監(jiān)控工具Kafka-eagle安裝
1、軟件下載&配置環(huán)境
下面的操作無論是單機部署還是分布式集群環(huán)境下都是通用的。
準備好安裝的目錄,我們將所有軟件安裝包統(tǒng)一上傳至/export/software目錄下,下載完畢后軟件解壓至/export/server:
mkdir -p /export/server /export/software
1_JDK安裝
下載地址:https://www.oracle.com/java/technologies/downloads/
下載并上傳至服務(wù)器對應(yīng)的目錄中。
解壓縮JDK安裝文件:
tar -zxvf jdk-8u421-linux-x64.tar.gz -C /export/server
配置JDK的軟鏈接:
ln -s /export/server/jdk1.8.0_421 jdk
配置JAVA_HOME環(huán)境變量,以及將$JAVA_HOME/bin文件夾加入PATH環(huán)境變量中
vim /etc/profile
尾部添加如下:
export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin
生效環(huán)境變量:
source /etc/profile
有些安裝的系統(tǒng)可能自帶jdk,這種jdk可以使用java -version檢查,但如果使用javac就不行了,最好進行卸載。
如果是 yum 安裝,可以按照下述流程卸載:
#1.查看CentOS自帶JDK是否已安裝
yum list installed | grep java
#2.假使存在自帶的jdk,刪除centos自帶的JDK
yum -y remove java-1.8.0-openjdk*
yum -y remove tzdata-java.noarch
#刪除系統(tǒng)自帶的Java程序
rm -f /usr/bin/java
#軟連接我們自己安裝的Java程序
ln -s /export/server/jdk/bin/java /usr/bin/java
rpm安裝的,可以按照下述流程卸載:
rpm -qa | grep jdk #查看是否存在安裝的jdk
rpm -e `rpm -qa | grep jdk` # 卸載,如果存在依賴的情況可以使用下方的強制卸載
rpm -e --nodeps `rpm -qa | grep jdk` # 強制刪除jdk
2_Zookeeper安裝
下載地址:https://zookeeper.apache.org/releases.html#download
選擇歷史版本——本次選擇3.5.7進行安裝下載
下載完成后,上傳到服務(wù)器后進行解壓:
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /export/server
配置 Zookeeper 的軟鏈接:
ln -s apache-zookeeper-3.5.7-bin zookeeper
配置 ZK_HOME 環(huán)境變量,以及將$ZK_HOME/bin文件夾加入PATH環(huán)境變量中
vim /etc/profile
尾部添加如下:
export ZK_HOME=/export/server/zookeeper
export PATH=$PATH:$ZK_HOME/bin
生效環(huán)境變量:
source /etc/profile
Zookeeper的下載和安裝已經(jīng)完成,我們接下來直接對其配置進行修改:
cd /export/server/zookeeper/conf #進入zookeeper配置文件目錄下
cp zoo_sample.cfg zoo.cfg #將Zookeeper提供的配置文件復(fù)制一份,復(fù)制成Zookeeper默認尋找的文件
進入 zookeeper 目錄下,創(chuàng)建數(shù)據(jù)存放的目錄:
cd /export/server/zookeeper
mkdir data
修改 zookeeper 配置文件,將數(shù)據(jù)存放目錄指定為我們創(chuàng)建的目錄:
vim /export/server/zookeeper/conf/zoo.cfg
##修改以下配置
dataDir=/export/server/zookeeper/data
啟動 Zookeeper,Zookeeper的bin目錄下為我們提供了服務(wù)腳本:
#./zkServer.sh [--config
./bin/zkServer.sh start zoo.cfg #啟動
查看是否啟動成功
jps # 看到控制臺成功輸出 QuorumPeerMain,表示啟動成功
使用jps發(fā)現(xiàn)Zookeeper成功啟動了,也并不代表我們可以正常使用了,使用如下命了查看其狀態(tài):
./bin/zkServer.sh status zoo.cfg ## Mode: standalone表示ok
控制臺打印 Mode: standalone 表示可以正常使用了。
3_Kafka安裝
下載地址:https://kafka.apache.org/downloads。
選擇 kafka_2.12-3.8.0.tgz 進行下載,Scala 2.12 和 Scala 2.13 主要是使用Scala編譯的版本不同,兩者皆可。
下載完成后,上傳到服務(wù)器后進行解壓:
tar -zxvf kafka_2.12-3.8.0.tgz -C /export/server
配置 Kafka 的軟鏈接:
ln -s kafka_2.12-3.8.0.tgz kafka
配置 KAFKA_HOME 環(huán)境變量,以及將$KAFKA_HOME/bin文件夾加入PATH環(huán)境變量中
vim /etc/profile
尾部添加如下:
export KAFKA_HOME=/export/server/kafka
export PATH=:$PATH:${KAFKA_HOME}
生效環(huán)境變量:
source /etc/profile
2、單機安裝
Kafka一般情況下都是分布式架構(gòu)的,單機節(jié)點的使用情況基本不存在——了解即可。
按照以下步驟執(zhí)行:
安裝JDK1.8+,配置JAVA_HOME (CentOS 64bit)配置主機名和IP映射關(guān)閉防火墻 | 防火墻開機自啟動安裝&啟動Zookeeper安裝&啟動|關(guān)閉Kafka
上述有些步驟部分已經(jīng)完成,不再重復(fù)敘述。
1_配置主機名和IP映射
配置主機名——我是用的是SHENYANG,替換成自己的即可:
echo HOSTNAME=SHENYANG >> /etc/sysconfig/network
cat /etc/sysconfig/network
reboot #重啟生效
如果上述方式不成功可以試試下面這種:
hostnamectl set-hostname SHENYANG
配置主機名和IP的映射關(guān)系——使用自己當前服務(wù)器的主機名和IP:
vi /etc/hosts
192.168.193.141 SHENYANG
ping SHENYANG #測試是否ok
如果在內(nèi)網(wǎng)測試環(huán)境下最好關(guān)閉防火墻。
2_單機Kafka配置
在Kafka的config目錄下存在相關(guān)的配置信息——本次我們只想讓Kafka快速啟動起來只關(guān)注server.properties文件即可:
cd ${KAFKA_HOME}/config
ls
#connect-console-sink.properties connect-file-source.properties consumer.properties server.properties
#connect-console-source.properties connect-log4j.properties kraft tools-log4j.properties
#connect-distributed.properties connect-mirror-maker.properties log4j.properties trogdor.conf
#connect-file-sink.properties connect-standalone.properties producer.properties zookeeper.properties
打開配置文件,并主要注意以下幾個配置:
vim server.properties
broker.id=0 #kafka服務(wù)節(jié)點的唯一標識,這里是單機不用修改
# listeners = PLAINTEXT://your.host.name:9092 別忘了設(shè)置成自己的主機名
listeners=PLAINTEXT://SHENYANG:9092 #kafka底層監(jiān)聽的服務(wù)地址,注意是使用主機名,不是ip。
# log.dirs 指定的目錄 kafka啟動時可以自動創(chuàng)建,因此不要忘了讓kafka可以有讀寫這個目錄的權(quán)限。
log.dirs=/export/server/kafka/data ##kafka的分區(qū)以日志的形式存儲在集群中(其實就是broker數(shù)據(jù)存儲的目錄)
# The minimum age of a log file to be eligible for deletion due to age
log.retention.hours=168 #日志的留存策略,默認168小時也就是一周
# zookeeper 的連接地址 ,別忘了設(shè)置成自己的主機名,單機情況下可以使用 localhost
zookeeper.connect=SHENYANG:2181
上述配置完成后就可以在單機環(huán)境下成功啟動 Kafka了。
./bin/kafka-server-start.sh -daemon config/server.properties #后臺啟動kafka
使用 jps 查看是否成功啟動kafka:
jps
34843 QuorumPeerMain
21756 Jps
116076 Kafka
單機啟動完成。
3、集群安裝
Kafka 集群模式是kafka最常見的使用架構(gòu),按照以下步驟執(zhí)行:
安裝JDK1.8+,配置JAVA_HOME (CentOS 64bit) 配置主機名和IP映射 關(guān)閉防火墻 | 防火墻開機自啟動 同步時鐘 ntpdate cn.pool.ntp.org | ntp[1-7].aliyun.com 安裝&啟動Zookeeper 安裝&啟動|關(guān)閉Kafka
本次使用三個節(jié)點模擬集群環(huán)境:CentOSA、CentOSB、CentOSC。
針對每個節(jié)點修改主機名稱,查看當前主機的ip地址并固定,添加子網(wǎng)掩碼,網(wǎng)關(guān),DNS1。
#修改主機名
hostnamectl set-hostname node1
#修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#不要直接copy,針對自己的進行修改
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0d7ad579-b7c8-4b92-a94c-00633288d421"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.193.151"
NETMASK="255.255.255.0"
GETEWAY="192.168.193.2"
DNS1="192.168.193.2"
按照第一節(jié),每個節(jié)點都將軟件下載并配置好環(huán)境變量和配置信息。
1_配置主機名和IP的映射關(guān)系
針對每一個節(jié)點的hosts文件添加節(jié)點的ip映射信息:
vim /etc/hosts
192.168.193.141 CentOSA
192.168.193.142 CentOSB
192.168.193.143 CentOSC
ping #測試
也可以采取修改一個主機的hosts文件,通過 scp的方式進行拷貝——比如在CentOSA節(jié)點修改完成后執(zhí)行:
scp /etc/hosts CentOSB:/etc/
scp /etc/hosts CentOSC:/etc/
別忘了在自行測試時關(guān)閉防火墻。
2_時鐘同步
因為是在集群環(huán)境下,所以不要忘記同步三個主機節(jié)點的時鐘:
yum install ntp -y
ntpdate cn.pool.ntp.org | ntp[1-7].aliyun.com #兩個時鐘同步地址選擇一個就行
3_Zookeeper配置信息
在第一節(jié)中我們編輯了 zoo.cfg 文件配置,但是如果是集群環(huán)境下,還需要添加服務(wù)節(jié)點的信息:
vim /export/server/zookeeper/conf/zoo.cfg
##額外添加以下配置
server.1=CentOSA:2888:3888 #數(shù)據(jù)同步端口:領(lǐng)導(dǎo)選舉時服務(wù)器監(jiān)聽的端口
server.2=CentOSB:2888:3888
server.3=CentOSC:2888:3888
配置完成后通過scp命令將配置文件拷貝到其他節(jié)點——假設(shè)當前配置的是A節(jié)點:
scp -r /export/server/zookeeper/conf/zoo.cfg CentOSB:/export/server/zookeeper/conf/
scp -r /export/server/zookeeper/conf/zoo.cfg CentOSC:/export/server/zookeeper/conf/
當然,也可以只安裝并配置一臺zookeeper,然后將整個軟件拷貝過去。
接下來我們還需要在每個 zookeeper 節(jié)點的數(shù)據(jù)目錄下創(chuàng)建對應(yīng)的服務(wù)id文件與上面配置的server.id進行綁定:
# A
echo 1 > /export/server/zookeeper/data/myid #在這個文件中寫入自己服務(wù)的id號
# B
echo 2 > /export/server/zookeeper/data/myid
# C
echo 3 > /export/server/zookeeper/data/myid
接下來啟動所有的zookeeper節(jié)點。別忘了關(guān)防火墻!
4_集群Kafka配置
集群的 server.properties配置文件與單機的有所不同:
cd ${KAFKA_HOME}/config
vim server.properties
broker.id=0 #kafka服務(wù)節(jié)點的唯一標識 A 0,B 1,C 2
# listeners = PLAINTEXT://your.host.name:9092 別忘了設(shè)置成自己的主機名
listeners=PLAINTEXT://CentOSA:9092 #集群中需要設(shè)置成每個節(jié)點自己的
# log.dirs 指定的目錄 kafka啟動時可以自動創(chuàng)建,因此不要忘了讓kafka可以有讀寫這個目錄的權(quán)限。
log.dirs=/export/server/kafka/data ##kafka的分區(qū)以日志的形式存儲在集群中(其實就是broker數(shù)據(jù)存儲的目錄)
# The minimum age of a log file to be eligible for deletion due to age
log.retention.hours=168 #日志的留存策略,默認168小時也就是一周
# zookeeper 集群的連接地址
zookeeper.connect=CentOSA:2181,CentOSB:2181,CentOSC:2181
在配置完成 A節(jié)點后,還是使用 scp命令進行傳輸配置文件,然后再修改broker.id和listeners:
scp -r /export/server/kafka/config/server.properties CentOSB:/export/server/kafka/config/
scp -r /export/server/kafka/config/server.properties CentOSC:/export/server/kafka/config/
##修改差異配置
cd ${KAFKA_HOME}/config
vim server.properties
# B節(jié)點
broker.id=1
listeners=PLAINTEXT://CentOSB:9092
# C節(jié)點
broker.id=2
listeners=PLAINTEXT://CentOSC:9092
配置完成后,kafka集群即可正常啟動。集群的配置和單機的配置基本相似。
4、kafka的其他腳本命令
kafka服務(wù)還提供了除了啟動外的其他命令:
./bin/kafka-server-stop.sh #關(guān)閉kafka
kafka-console-consumer.sh #消費命令
kafka-console-producer.sh #生產(chǎn)命令
kafka-consumer-groups.sh #查看消費者組,重置消費位點等
kafka-topics.sh #查詢topic狀態(tài),新建,刪除,擴容
kafka-acls.sh #配置,查看kafka集群鑒權(quán)信息
kafka-configs.sh #查看,修改kafka配置
kafka-mirror-maker.sh #kafka集群間同步命令
kafka-preferred-replica-election.sh #重新選舉topic分區(qū)leader
kafka-producer-perf-test.sh #kafka自帶生產(chǎn)性能測試命令
kafka-reassign-partitions.sh #kafka數(shù)據(jù)重平衡命令
kafka-run-class.sh #kafka執(zhí)行腳本
重點關(guān)注前面幾個,消費者,生產(chǎn)、消費者組和Topic管理:
創(chuàng)建Topic;
#副本因子數(shù)不能大于broker數(shù),如果同一臺機器上存儲了多個備份就多余了
./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --create --topic topic02 --partitions 3 --replication-factor 3
查看:
./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list
詳情:
./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --describe --topic topic01
Topic:topic01 PartitionCount:3 ReplicationFactor:3 Configs:segment.bytes=1073741824
Topic: topic01 Partition: 0 Leader: 0 Replicas: 0,2,3 Isr: 0,2,3
Topic: topic01 Partition: 1 Leader: 2 Replicas: 2,3,0 Isr: 2,3,0
Topic: topic01 Partition: 2 Leader: 0 Replicas: 3,0,2 Isr: 0,2,3
修改:
./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --alter --topic topic01 --partitions 2
刪除:
./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --delete --topic topic03
消費者訂閱:
# 別忘了指定消費者組
./bin/kafka-console-consumer.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --topic topic01 --group g1 --property print.key=true --property print.value=true --property key.separator=,
生產(chǎn):
./bin/kafka-console-producer.sh --broker-list CentOSA:9092,CentOSB:9092,CentOSC:9092 --topic topic01
消費組:
./bin/kafka-consumer-groups.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list g1
./bin/kafka-consumer-groups.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --describe --group g1
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
topic01 1 0 0 0 consumer-1-** /192.168.52.130 consumer-1
topic01 0 0 0 0 consumer-1-** /192.168.52.130 consumer-1
topic01 2 1 1 0 consumer-1-** /192.168.52.130 consumer-1
5、監(jiān)控工具Kafka-eagle安裝
這是一個監(jiān)視系統(tǒng),國內(nèi)開發(fā)的產(chǎn)品,監(jiān)視您的kafka群集以及可視的使用者線程,偏移量,所有者等。當您安裝Kafka Eagle時,用戶可以看到當前的使用者組,對于每個組,他們正在消耗的Topic以及該組在每個主題中的偏移量,滯后,日志大小和位置。這對于了解用戶從消息隊列消耗的速度以及消息隊列增加的速度很有用。
下載地址:https://www.kafka-eagle.org/。
安裝包下載完成后還是上傳到服務(wù)器的/export/software文件目錄下,,下載完畢后軟件解壓至/export/server。
本文安裝的是3.0.1版本,支持Kafka版本0.8,0.9.x,0.10.x,0.11.x,1.x,2.x
tar -zxvf kafka-eagle-bin-3.0.1.tar.gz -C ../server/
這個軟件比較特殊,解壓后會發(fā)現(xiàn)里面還有一個壓縮包,需要再次解壓。
cd /export/server/kafka-eagle-bin-3.0.1/
tar -zxvf efak-web-3.0.1-bin.tar.gz -C /export/server/
cd ../
ln -s efak-web-3.0.1 efak
設(shè)置環(huán)境變量——必須設(shè)置,ke.sh啟動的腳本中需要這個環(huán)境變量
vim /etc/profile
#添加以下內(nèi)容
export KE_HOME=/export/server/efak
export PATH=$PATH:$KE_HOME/bin
source /etc/profile
修改配置文件system-config.properties:
cd ${KE_HOME}/conf
vim system-config.properties
注意以下配置:
#zookeeper集群信息id
kafka.eagle.zk.cluster.alias=cluster1
#集群配置的zookeeper節(jié)點信息 可以監(jiān)測這三臺機器上的kafka
cluster1.zk.list=CentOSA:2181,CentOSB:2181,CentOSC:2181
#有的老版本是把偏移量存儲在zookeeper中,這里是存儲在kafka中的,默認可以不改
cluster1.kafka.eagle.offset.storage=kafka
# 報表信息 開啟后kafka必須開啟JMX的服務(wù)管理端口,用于統(tǒng)計信息
kafka.eagle.metrics.charts=true
# mysql的連接信息 eagle 需要將信息存儲在數(shù)據(jù)庫中,數(shù)據(jù)庫eagle啟動時會自行創(chuàng)建,配置好mysql的地址就行。
kafka.eagle.driver=com.mysql.cj.jdbc.Driver
kafka.eagle.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
kafka.eagle.username=root
kafka.eagle.password=123456
開啟JMX監(jiān)控,修改kafka啟動文件或在啟動時添加JMX_PORT=9999參數(shù):
vim ${KAFKA_HOME}/bin/kafka-server-start.sh
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-server -Xms2G -Xmx2G -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
export JMX_PORT="9999" #添加此行即可
#export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi
重啟kafka后,啟動 eagle 就可以監(jiān)控kafka集群信息了。
chmod u+x bin/ke.sh#如果沒有文件的執(zhí)行權(quán)限
$KE_HOME/bin/ke.sh start#啟動程序
登錄賬號和密碼默認為 admin/123456——內(nèi)網(wǎng)測試不要忘記開放對應(yīng)的訪問端口或關(guān)閉防火墻。
登錄成功后即可看到以上信息。
柚子快報邀請碼778899分享:Kafka (快速)安裝部署
文章來源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。