從零開始搭建 Kafka 集群
一、搭建設計
圖片
1.1. 機器分配
- kafka1(192.168.150.111)
- kafka2(192.168.150.112)
- kafka3(192.168.150.113)
1.2.linux安裝以及Jdk安裝
二、修改Linux主機名稱
hostnamectl set-hostname kafka1
hostnamectl set-hostname kafka2
hostnamectl set-hostname kafka3
三、配置主機名映射
在Windows系統中修改hosts文件,填入如下內容:
192.168.150.111 kafka1
192.168.150.112 kafka2
192.168.150.113 kafka3
圖片
圖片
在3臺Linux的/etc/hosts文件中,填入如下內容(3臺都要添加)。
192.168.150.111 kafka1
192.168.150.112 kafka2
192.168.150.113 kafka3
四、配置SSH免密登錄
后續(xù)安裝的集群化軟件,多數需要遠程登錄以及遠程執(zhí)行命令,我們可以簡單起見,配置三臺Linux服務器之間的免密碼互相SSH登陸。
在每一臺機器都執(zhí)行:
ssh-keygen -t rsa -b 4096
一路回車到底即可 2. 在每一臺機器都執(zhí)行:
ssh-copy-id kafka1
ssh-copy-id kafka2
ssh-copy-id kafka3
執(zhí)行完畢后,kafka1、kafka2、kafka3之間將完成root用戶之間的免密互通。
- 測試免密登錄 完成以上步驟后,你應該能夠使用SSH免密登錄到目標服務器了。只需執(zhí)行以下命令:ssh 用戶名@remote_host。
ssh rootmkafka1
ssh root@kafka2
ssh root@kafka3
五、修改時區(qū)并配置自動時間同步
#1. 安裝ntp軟件
yum install -y ntp
#2. 更新時區(qū)
rm -f /etc/localtime;sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#3. 同步時間
ntpdate -u ntp.aliyun.com
#4. 開啟ntp服務并設置開機自啟
systemctl start ntpd
systemctl enable ntpd
六、VMware虛擬機集群上部署Zookeeper集群
當前使用發(fā)行版:3.8.4版。
可以在https://downloads.apache.org/zookeeper/選擇對應版本下載:
圖片
注意:以下操作,kafka1節(jié)點執(zhí)行,以root身份登陸。
1.上傳zookeeper安裝包到kafka1節(jié)點中。
2.創(chuàng)建/export/server/。
mkdir -p /export/server/
解壓縮安裝包到/export/server/中。
tar -zxvf apache-zookeeper-3.8.4.tar.gz -C /export/server/
3.在 cd /export/server/apache-zookeeper-3.8.4-bin/conf/創(chuàng)建zoo.cfg。
# 復制zoo_sample.cfg命名為zoo.cfg
cp zoo_sample.cfg zoo.cfg
4.修改Zookeeper保存數據的目錄。
mkdir -p /export/server/apache-zookeeper-3.8.4-bin/data
5.編輯zoo.cfg文件。
vim zoo.cfg
內容如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/export/server/apache-zookeeper-3.8.4-bin/data
# the port at which the clients will connect
clientPort=2181
server.1=192.168.150.111:2888:3888
server.2=192.168.150.112:2888:3888
server.3=192.168.150.113:2888:3888
圖片
創(chuàng)建myid文件,配置服務器編號 服務器zookeeper的dataDir對應目錄下創(chuàng)建 myid 文件,內容為對應ip的zookeeper服務器編號。
mkdir -p /export/server/apache-zookeeper-3.8.4-bin/data
echo 1 > /export/server/apache-zookeeper-3.8.4-bin/data/myid
7.分發(fā)zookeeper文件夾
# 在kafka1執(zhí)行如下命令
cd /export/server
scp -r /export/server/apache-zookeeper-3.8.4-bin kafka2:`pwd`/
scp -r /export/server/apache-zookeeper-3.8.4-bin kafka3:`pwd`/
8.在kafka2上修改myid
echo 2 > /export/server/apache-zookeeper-3.8.4-bin/data/myid
9.在kafka3上修改myid
echo 3 > /export/server/apache-zookeeper-3.8.4-bin/data/myid
七、VMware虛擬機集群上部署Kafka集群
本次使用的Kafka版本為2.4.1,是2020年3月12日發(fā)布的版本。 可以注意到Kafka的版本號為:kafka_2.12-2.4.1,因為kafka主要是使用scala語言開發(fā)的,2.12為scala的版本號。http://kafka.apache.org/downloads可以查看到每個版本的發(fā)布時間。
圖片
1.將Kafka的安裝包上傳到虛擬機。
tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/
cd /export/server/kafka_2.12-2.4.1/
2.修改 server.properties。
cd /export/server/kafka_2.12-2.4.1/config
vim server.properties
內容如下:
# 指定broker的id
broker.id=0
# 指定Kafka數據的位置
log.dirs=/export/server/kafka_2.12-2.4.1/data
# 配置zk的三個節(jié)點
zookeeper.cnotallow=kafka1:2181,kafka2:2181,kafka3:2181
3.將安裝好的kafka復制到另外兩臺服務器。
cd /export/server
scp -r apache-zookeeper-3.8.4 kafka2:`pwd`/
scp -r apache-zookeeper-3.8.4 kafka3:`pwd`/
4.修改另外兩個節(jié)點的broker.id分別為1和2。
---------kafka1--------------
cd /export/server/kafka_2.12-2.4.1/config
vim erver.properties
broker.id=1
---------kafka2--------------
cd /export/server/kafka_2.12-2.4.1/config
vim erver.properties
broker.id=2
八、配置Zookeeper和KAFKA_HOME環(huán)境變量
vim /etc/profile
JAVA_HOME=/export/server/jdk1.8.0_361
KAFKA_HOME=/export/server/kafka_2.12-2.4.1
ZOKEEPER_HOME=/export/server/apache-zookeeper-3.8.4-bin/
PATH=$PATH:$JAVA_HOME/bin:$KAFKA_HOME/bin:$ZOKEEPER_HOME/bin
export PATH
分發(fā)到各個節(jié)點
scp /etc/profile kafka2:$PWD
scp /etc/profile kafka2:$PWD
每個節(jié)點加載環(huán)境變量
source /etc/profile
九、啟動Zookeeper
1.在三臺機器上啟動Zookeeper。
zkServer.sh start
圖片
2.在三臺機器上查看Zookeeper狀態(tài)。
zkServer.sh status
圖片
圖片
十、啟動Kafka
[root@kafka1 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties
[root@kafka2 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties
[root@kafka3 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties
kafka1節(jié)點的Cluster Id:
圖片
kafka2節(jié)點的Cluster Id:
圖片
kafka3節(jié)點的Cluster Id:
圖片
十一、查看Kakka隊列
1.創(chuàng)建主題(名字叫test):
kafka-topics.sh --create --bootstrap-server kafka1:9092 --topic test
2.查詢當前kafka的所有主題:
kafka-topics.sh --bootstrap-server kafka3:9092 --list