柚子快報(bào)邀請(qǐng)碼778899分享:Kafka (快速)安裝部署
柚子快報(bào)邀請(qǐng)碼778899分享:Kafka (快速)安裝部署
文章目錄
1、軟件下載&配置環(huán)境1_JDK安裝2_Zookeeper安裝3_Kafka安裝
2、單機(jī)安裝1_配置主機(jī)名和IP映射2_單機(jī)Kafka配置
3、集群安裝1_配置主機(jī)名和IP的映射關(guān)系2_時(shí)鐘同步3_Zookeeper配置信息4_集群Kafka配置
4、kafka的其他腳本命令5、監(jiān)控工具Kafka-eagle安裝
1、軟件下載&配置環(huán)境
下面的操作無(wú)論是單機(jī)部署還是分布式集群環(huán)境下都是通用的。
準(zhǔn)備好安裝的目錄,我們將所有軟件安裝包統(tǒng)一上傳至/export/software目錄下,下載完畢后軟件解壓至/export/server:
mkdir -p /export/server /export/software
1_JDK安裝
下載地址:https://www.oracle.com/java/technologies/downloads/
下載并上傳至服務(wù)器對(duì)應(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就不行了,最好進(jìn)行卸載。
如果是 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` # 卸載,如果存在依賴(lài)的情況可以使用下方的強(qiáng)制卸載
rpm -e --nodeps `rpm -qa | grep jdk` # 強(qiáng)制刪除jdk
2_Zookeeper安裝
下載地址:https://zookeeper.apache.org/releases.html#download
選擇歷史版本——本次選擇3.5.7進(jìn)行安裝下載
下載完成后,上傳到服務(wù)器后進(jìn)行解壓:
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)完成,我們接下來(lái)直接對(duì)其配置進(jìn)行修改:
cd /export/server/zookeeper/conf #進(jìn)入zookeeper配置文件目錄下
cp zoo_sample.cfg zoo.cfg #將Zookeeper提供的配置文件復(fù)制一份,復(fù)制成Zookeeper默認(rèn)尋找的文件
進(jìn)入 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
啟動(dòng) Zookeeper,Zookeeper的bin目錄下為我們提供了服務(wù)腳本:
#./zkServer.sh [--config
./bin/zkServer.sh start zoo.cfg #啟動(dòng)
查看是否啟動(dòng)成功
jps # 看到控制臺(tái)成功輸出 QuorumPeerMain,表示啟動(dòng)成功
使用jps發(fā)現(xiàn)Zookeeper成功啟動(dòng)了,也并不代表我們可以正常使用了,使用如下命了查看其狀態(tài):
./bin/zkServer.sh status zoo.cfg ## Mode: standalone表示ok
控制臺(tái)打印 Mode: standalone 表示可以正常使用了。
3_Kafka安裝
下載地址:https://kafka.apache.org/downloads。
選擇 kafka_2.12-3.8.0.tgz 進(jìn)行下載,Scala 2.12 和 Scala 2.13 主要是使用Scala編譯的版本不同,兩者皆可。
下載完成后,上傳到服務(wù)器后進(jìn)行解壓:
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、單機(jī)安裝
Kafka一般情況下都是分布式架構(gòu)的,單機(jī)節(jié)點(diǎn)的使用情況基本不存在——了解即可。
按照以下步驟執(zhí)行:
安裝JDK1.8+,配置JAVA_HOME (CentOS 64bit)配置主機(jī)名和IP映射關(guān)閉防火墻 | 防火墻開(kāi)機(jī)自啟動(dòng)安裝&啟動(dòng)Zookeeper安裝&啟動(dòng)|關(guān)閉Kafka
上述有些步驟部分已經(jīng)完成,不再重復(fù)敘述。
1_配置主機(jī)名和IP映射
配置主機(jī)名——我是用的是SHENYANG,替換成自己的即可:
echo HOSTNAME=SHENYANG >> /etc/sysconfig/network
cat /etc/sysconfig/network
reboot #重啟生效
如果上述方式不成功可以試試下面這種:
hostnamectl set-hostname SHENYANG
配置主機(jī)名和IP的映射關(guān)系——使用自己當(dāng)前服務(wù)器的主機(jī)名和IP:
vi /etc/hosts
192.168.193.141 SHENYANG
ping SHENYANG #測(cè)試是否ok
如果在內(nèi)網(wǎng)測(cè)試環(huán)境下最好關(guān)閉防火墻。
2_單機(jī)Kafka配置
在Kafka的config目錄下存在相關(guān)的配置信息——本次我們只想讓Kafka快速啟動(dòng)起來(lái)只關(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
打開(kāi)配置文件,并主要注意以下幾個(gè)配置:
vim server.properties
broker.id=0 #kafka服務(wù)節(jié)點(diǎn)的唯一標(biāo)識(shí),這里是單機(jī)不用修改
# listeners = PLAINTEXT://your.host.name:9092 別忘了設(shè)置成自己的主機(jī)名
listeners=PLAINTEXT://SHENYANG:9092 #kafka底層監(jiān)聽(tīng)的服務(wù)地址,注意是使用主機(jī)名,不是ip。
# log.dirs 指定的目錄 kafka啟動(dòng)時(shí)可以自動(dòng)創(chuàng)建,因此不要忘了讓kafka可以有讀寫(xiě)這個(gè)目錄的權(quán)限。
log.dirs=/export/server/kafka/data ##kafka的分區(qū)以日志的形式存儲(chǔ)在集群中(其實(shí)就是broker數(shù)據(jù)存儲(chǔ)的目錄)
# The minimum age of a log file to be eligible for deletion due to age
log.retention.hours=168 #日志的留存策略,默認(rèn)168小時(shí)也就是一周
# zookeeper 的連接地址 ,別忘了設(shè)置成自己的主機(jī)名,單機(jī)情況下可以使用 localhost
zookeeper.connect=SHENYANG:2181
上述配置完成后就可以在單機(jī)環(huán)境下成功啟動(dòng) Kafka了。
./bin/kafka-server-start.sh -daemon config/server.properties #后臺(tái)啟動(dòng)kafka
使用 jps 查看是否成功啟動(dòng)kafka:
jps
34843 QuorumPeerMain
21756 Jps
116076 Kafka
單機(jī)啟動(dòng)完成。
3、集群安裝
Kafka 集群模式是kafka最常見(jiàn)的使用架構(gòu),按照以下步驟執(zhí)行:
安裝JDK1.8+,配置JAVA_HOME (CentOS 64bit) 配置主機(jī)名和IP映射 關(guān)閉防火墻 | 防火墻開(kāi)機(jī)自啟動(dòng) 同步時(shí)鐘 ntpdate cn.pool.ntp.org | ntp[1-7].aliyun.com 安裝&啟動(dòng)Zookeeper 安裝&啟動(dòng)|關(guān)閉Kafka
本次使用三個(gè)節(jié)點(diǎn)模擬集群環(huán)境:CentOSA、CentOSB、CentOSC。
針對(duì)每個(gè)節(jié)點(diǎn)修改主機(jī)名稱(chēng),查看當(dāng)前主機(jī)的ip地址并固定,添加子網(wǎng)掩碼,網(wǎng)關(guān),DNS1。
#修改主機(jī)名
hostnamectl set-hostname node1
#修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#不要直接copy,針對(duì)自己的進(jìn)行修改
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é),每個(gè)節(jié)點(diǎn)都將軟件下載并配置好環(huán)境變量和配置信息。
1_配置主機(jī)名和IP的映射關(guān)系
針對(duì)每一個(gè)節(jié)點(diǎn)的hosts文件添加節(jié)點(diǎn)的ip映射信息:
vim /etc/hosts
192.168.193.141 CentOSA
192.168.193.142 CentOSB
192.168.193.143 CentOSC
ping #測(cè)試
也可以采取修改一個(gè)主機(jī)的hosts文件,通過(guò) scp的方式進(jìn)行拷貝——比如在CentOSA節(jié)點(diǎn)修改完成后執(zhí)行:
scp /etc/hosts CentOSB:/etc/
scp /etc/hosts CentOSC:/etc/
別忘了在自行測(cè)試時(shí)關(guān)閉防火墻。
2_時(shí)鐘同步
因?yàn)槭窃诩涵h(huán)境下,所以不要忘記同步三個(gè)主機(jī)節(jié)點(diǎn)的時(shí)鐘:
yum install ntp -y
ntpdate cn.pool.ntp.org | ntp[1-7].aliyun.com #兩個(gè)時(shí)鐘同步地址選擇一個(gè)就行
3_Zookeeper配置信息
在第一節(jié)中我們編輯了 zoo.cfg 文件配置,但是如果是集群環(huán)境下,還需要添加服務(wù)節(jié)點(diǎn)的信息:
vim /export/server/zookeeper/conf/zoo.cfg
##額外添加以下配置
server.1=CentOSA:2888:3888 #數(shù)據(jù)同步端口:領(lǐng)導(dǎo)選舉時(shí)服務(wù)器監(jiān)聽(tīng)的端口
server.2=CentOSB:2888:3888
server.3=CentOSC:2888:3888
配置完成后通過(guò)scp命令將配置文件拷貝到其他節(jié)點(diǎn)——假設(shè)當(dāng)前配置的是A節(jié)點(diǎn):
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/
當(dāng)然,也可以只安裝并配置一臺(tái)zookeeper,然后將整個(gè)軟件拷貝過(guò)去。
接下來(lái)我們還需要在每個(gè) zookeeper 節(jié)點(diǎn)的數(shù)據(jù)目錄下創(chuàng)建對(duì)應(yīng)的服務(wù)id文件與上面配置的server.id進(jìn)行綁定:
# A
echo 1 > /export/server/zookeeper/data/myid #在這個(gè)文件中寫(xiě)入自己服務(wù)的id號(hào)
# B
echo 2 > /export/server/zookeeper/data/myid
# C
echo 3 > /export/server/zookeeper/data/myid
接下來(lái)啟動(dòng)所有的zookeeper節(jié)點(diǎn)。別忘了關(guān)防火墻!
4_集群Kafka配置
集群的 server.properties配置文件與單機(jī)的有所不同:
cd ${KAFKA_HOME}/config
vim server.properties
broker.id=0 #kafka服務(wù)節(jié)點(diǎn)的唯一標(biāo)識(shí) A 0,B 1,C 2
# listeners = PLAINTEXT://your.host.name:9092 別忘了設(shè)置成自己的主機(jī)名
listeners=PLAINTEXT://CentOSA:9092 #集群中需要設(shè)置成每個(gè)節(jié)點(diǎn)自己的
# log.dirs 指定的目錄 kafka啟動(dòng)時(shí)可以自動(dòng)創(chuàng)建,因此不要忘了讓kafka可以有讀寫(xiě)這個(gè)目錄的權(quán)限。
log.dirs=/export/server/kafka/data ##kafka的分區(qū)以日志的形式存儲(chǔ)在集群中(其實(shí)就是broker數(shù)據(jù)存儲(chǔ)的目錄)
# The minimum age of a log file to be eligible for deletion due to age
log.retention.hours=168 #日志的留存策略,默認(rèn)168小時(shí)也就是一周
# zookeeper 集群的連接地址
zookeeper.connect=CentOSA:2181,CentOSB:2181,CentOSC:2181
在配置完成 A節(jié)點(diǎn)后,還是使用 scp命令進(jìn)行傳輸配置文件,然后再修改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é)點(diǎn)
broker.id=1
listeners=PLAINTEXT://CentOSB:9092
# C節(jié)點(diǎn)
broker.id=2
listeners=PLAINTEXT://CentOSC:9092
配置完成后,kafka集群即可正常啟動(dòng)。集群的配置和單機(jī)的配置基本相似。
4、kafka的其他腳本命令
kafka服務(wù)還提供了除了啟動(dòng)外的其他命令:
./bin/kafka-server-stop.sh #關(guān)閉kafka
kafka-console-consumer.sh #消費(fèi)命令
kafka-console-producer.sh #生產(chǎn)命令
kafka-consumer-groups.sh #查看消費(fèi)者組,重置消費(fèi)位點(diǎn)等
kafka-topics.sh #查詢(xún)topic狀態(tài),新建,刪除,擴(kuò)容
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)性能測(cè)試命令
kafka-reassign-partitions.sh #kafka數(shù)據(jù)重平衡命令
kafka-run-class.sh #kafka執(zhí)行腳本
重點(diǎn)關(guān)注前面幾個(gè),消費(fèi)者,生產(chǎn)、消費(fèi)者組和Topic管理:
創(chuàng)建Topic;
#副本因子數(shù)不能大于broker數(shù),如果同一臺(tái)機(jī)器上存儲(chǔ)了多個(gè)備份就多余了
./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
消費(fèi)者訂閱:
# 別忘了指定消費(fèi)者組
./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
消費(fèi)組:
./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安裝
這是一個(gè)監(jiān)視系統(tǒng),國(guó)內(nèi)開(kāi)發(fā)的產(chǎn)品,監(jiān)視您的kafka群集以及可視的使用者線程,偏移量,所有者等。當(dāng)您安裝Kafka Eagle時(shí),用戶(hù)可以看到當(dāng)前的使用者組,對(duì)于每個(gè)組,他們正在消耗的Topic以及該組在每個(gè)主題中的偏移量,滯后,日志大小和位置。這對(duì)于了解用戶(hù)從消息隊(duì)列消耗的速度以及消息隊(duì)列增加的速度很有用。
下載地址: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/
這個(gè)軟件比較特殊,解壓后會(huì)發(fā)現(xiàn)里面還有一個(gè)壓縮包,需要再次解壓。
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啟動(dòng)的腳本中需要這個(gè)環(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é)點(diǎn)信息 可以監(jiān)測(cè)這三臺(tái)機(jī)器上的kafka
cluster1.zk.list=CentOSA:2181,CentOSB:2181,CentOSC:2181
#有的老版本是把偏移量存儲(chǔ)在zookeeper中,這里是存儲(chǔ)在kafka中的,默認(rèn)可以不改
cluster1.kafka.eagle.offset.storage=kafka
# 報(bào)表信息 開(kāi)啟后kafka必須開(kāi)啟JMX的服務(wù)管理端口,用于統(tǒng)計(jì)信息
kafka.eagle.metrics.charts=true
# mysql的連接信息 eagle 需要將信息存儲(chǔ)在數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)eagle啟動(dòng)時(shí)會(huì)自行創(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
開(kāi)啟JMX監(jiān)控,修改kafka啟動(dòng)文件或在啟動(dòng)時(shí)添加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后,啟動(dòng) eagle 就可以監(jiān)控kafka集群信息了。
chmod u+x bin/ke.sh#如果沒(méi)有文件的執(zhí)行權(quán)限
$KE_HOME/bin/ke.sh start#啟動(dòng)程序
登錄賬號(hào)和密碼默認(rèn)為 admin/123456——內(nèi)網(wǎng)測(cè)試不要忘記開(kāi)放對(duì)應(yīng)的訪問(wèn)端口或關(guān)閉防火墻。
登錄成功后即可看到以上信息。
柚子快報(bào)邀請(qǐng)碼778899分享:Kafka (快速)安裝部署
文章來(lái)源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。