需要三台linux服務器,此安裝手冊以centos7為例,假設這三台服務器主機ip為10.20.31.116,10.20.31.117,10.20.31.137:
1. 系統需求
JDK版本:jdk1.8
Zookeeper版本:zookeeper-3.5.8
Kafka版本:kafka_2.13-2.4.1
注意:防火牆端口開放
2. 集群搭建
2.1 集群jdk1.8.x環境搭建(集群所有節點都需要配置)
2.1.1 官方下載jdk,並上傳到服務器/opt目錄下,此文檔下載文件為jdk1.8.0_101.tar
2.1.2 解壓jdk壓縮文件
cd /opt/ && tar -zxvf jdk1.8.0_101.tar.gz
2.1.3 配置系統環境變量
vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_101 export PATH=$JAVA_HOME/bin:$PATH
編輯后保存並退出 :wq
2.1.4 使配置文件生效
source /etc/profile
2.1.5 查看java版本
java -version
2.2 zookeeper集群環境搭建(集群所有節點都需要配置)
2.2.1 下載並解壓
官方地址:https://www.apache.org/dyn/closer.cgi/zookeeper/
下載版本3.5.8 :
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz
解壓 cd /opt/ && tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz
2.2.2 創建data、log存儲目錄
mkdir -p /data/zookeeper/data mkdir -p /data/zookeeper/log
2.2.3 新增zoo.cfg配置文件
cd apache-zookeeper-3.5.8-bin./conf/ && vi zoo.cfg
# 基本事件單元,單位毫秒。 tickTime=2000 initLimit=10 syncLimit=5 # 存儲內存中數據庫快照的位置,默認是/tmp/zookeeper dataDir=/data/zookeeper/data # 日志路徑,也就是事務日志。 dataLogDir=/data/zookeeper/log # 監聽客戶端連接的端口 clientPort=2181 server.1=10.20.31.116:2888:3888 server.2=10.20.31.117:2888:3888 server.3=10.20.31.137:2888:3888
2.2.4 新增myid文件
myid文件內容是當前服務器的編號。
10.20.31.116: echo '1' > /data/zookeeper/data/myid 10.20.31.117: echo '2' > /data/zookeeper/data/myid 10.20.31.137: echo '3' > /data/zookeeper/data/myid
2.2.5 啟動Zookeeper集群
10.20.31.116:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh start
10.20.31.117:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh start
10.20.31.137:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh start
2.2.6 查看Zookeeper集群狀態
10.20.31.116:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh status
10.20.31.117:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh status
10.20.31.137:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh status
2.3 kafka集群環境搭建(集群所有節點都需要配置)
2.3.1 下載並解壓
下載版本2.4.1:
http://mirror.bit.edu.cn/apache/kafka/2.4.1/kafka_2.13-2.4.1.tgz
解壓:cd /opt/ && tar -zxvf kafka_2.13-2.4.1.tgz
2.3.2 編輯配置文件:
10.20.31.116:
vi kafka_2.13-2.4.1/config/server.properties
#修改以下配置 #為方便,直接將broker.id設置為了ip的最后一段,當集群中有多個Kafka時,他們的這個值必須不一樣 broker.id=116 #可選配置項,將日志輸出到指定的位置 log.dirs=/tmp/kafka-logs #必須配置自己的zookeepe zookeeper.connect=10.20.31.116:2181,10.20.31.117:2181,10.20.31.137:2181 #在配置集群的時候,必須設置 listeners = PLAINTEXT://10.20.31.116:9092
10.20.31.117:
vi kafka_2.13-2.4.1/config/server.properties
#修改以下配置 #為方便,直接將broker.id設置為了ip的最后一段,當集群中有多個Kafka時,他們的這個值必須不一樣 broker.id=117 #可選配置項,將日志輸出到指定的位置 log.dirs=/tmp/kafka-logs #必須配置自己的zookeepe zookeeper.connect=10.20.31.116:2181,10.20.31.117:2181,10.20.31.137:2181 #在配置集群的時候,必須設置 listeners = PLAINTEXT://10.20.31.117:9092
10.20.31.137:
vi kafka_2.13-2.4.1/config/server.properties
#修改以下配置 #為方便,直接將broker.id設置為了ip的最后一段,當集群中有多個Kafka時,他們的這個值必須不一樣 broker.id=137 #可選配置項,將日志輸出到指定的位置 log.dirs=/tmp/kafka-logs #必須配置自己的zookeepe zookeeper.connect=10.20.31.116:2181,10.20.31.117:2181,10.20.31.137:2181 #在配置集群的時候,必須設置 listeners = PLAINTEXT://10.20.31.137:9092
注意:如果是配置集群,下面信息必須修改:
(1)、broker.id:同一個集群中,每台機器均不能一樣
(2)、zookeeper.connect:因為我有3台zookeeper服務器,所以在這里zookeeper.connect設置為3台,必須全部加進去
(3)、listeners:在配置集群的時候,必須設置,不然以后的操作會報找不到leader的錯誤
2.3.3 集群各節點啟動kafka服務
/opt/kafka_2.13-2.4.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.13-2.4.1/config/server.properties
2.3.4 查看集群中各個節點的服務的啟動狀態
2.3.5 操作kafka
/opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --create --zookeeper 10.20.31.116:2181 --replication-factor 1 --partitions 1 --topic test
說明:
--zookeeper:為zk服務器地址,已逗號分割配置多個
--replication-factor:分區leader副本數,1代表沒有副本即分區本身,建議為2
--partitions:分區數
--topic:topic名稱
2.3.6 查看topic
/opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --list --zookeeper 10.20.31.137:2181
2.3.7 查看test topic消息
/opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --describe --zookeeper 10.20.31.117:2181 --topic test
說明:
leader:負責處理消息的讀和寫,leader是從所有節點中隨機選擇的.
Replicas:列出了所有的副本節點,不管節點是否在服務中.
Lsr:是正在服務中的節點.
2.3.8 發布消息
/opt/kafka_2.13-2.4.1/bin/kafka-console-producer.sh --broker-list 10.20.31.117:9092 --topic test
2.3.9 消費消息
/opt/kafka_2.13-2.4.1/bin/kafka-console-consumer.sh --bootstrap-server 10.20.31.137:9092 --topic test --from-beginning
說明:
from-beginning:每次從頭開始消費
2.3.10 刪除topic
/opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --delete --zookeeper 10.20.31.137:2181 --topic test
2.4 集群可視化管理
2.4.1 https://blog.csdn.net/llwy1428/article/details/94389615