說明
因爲kafka是把狀態保存到zookeeper上管理的,所以要創建kafka集羣需要先創建zookeeper集羣,
Zookeeper集羣的工作是超過半數才能對外提供服務,比如3臺中超過兩臺則爲超過半數,
允許1臺掛掉。集羣可使用2*n+1臺搭建,所以我們準備三臺虛擬機。
1.環境準備
1.vmware上開啓三臺虛擬機,先在一臺上準備好,然後克隆兩臺。
192.168.211.137
192.168.211.139
192.168.211.140
2.jdk,安裝openjdk1.8
yum install -y java-1.8.0-openjdk
2.zookeeper集羣
1.下載zookeeper
創建文件夾
mkdir /opt/zookeeper
mkdir /opt/zookeeper/zkdata
mkdir /opt/zookeeper/zkdatalog
2.在opt/zookeeper目錄下下載zookeeper,如果不存在自行下載,地址:http://mirrors.hust.edu.cn/apache/zookeeper/
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
#解壓文件
tar -zxvf zookeeper-3.4.14.tar.gz
#進入zookeeper的conf目錄下,複製一份配置文件
cd /zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg
3.編輯zoo.cfg
vim zoo.cfg
添加以下內容:
#心跳間隔
tickTime=2000
#其他服務器連接到Leader時,最長能忍受的心跳間隔數:10*2000 = 20秒
initLimit=10
#發送消息時,多長忍受心跳間隔數:5*2000 = 10秒
syncLimit=5
#快照日誌
dataDir=/opt/zookeeper/zkdata
#事務日誌
dataLogDir=/opt/zookeeper/zkdatalog
#zookeeper服務器的端口
clientPort=2181
#對應的server.x=0.0.0.0:2888:3888,其他兩個ip爲另外兩臺機器,克隆虛擬機時需要記得修改成0.0.0.0
server.1=0.0.0.0:2888:3888
server.2=192.168.211.139:2888:3888
server.3=192.168.211.140:2888:3888
4.克隆虛擬機,如果你已經有多臺機器,可跳過此步
5.創建myid文件,對應配置文件裏的server.1、server.2、server.3
進入zookeeper目錄下執行
#server1
echo "1" > /zkdata/myid
#server2
echo "2" > /zkdata/myid
#server3
echo "3" > /zkdata/myid
6.進入zookeeper的bin目錄,啓動zookeeper
三臺機器,都要啓動
./zkServer.sh start
查看狀態:
./zkServer.sh status
停止執行:
./zkServer.sh stop
如果報錯,查看日誌,在bin目錄的zookeeper.out文件
vim zookeeper.out
3.kafka集羣
1.創建文件夾
mkdir /opt/kafka
2.在/opt/kafka下載,鏈接無效請自行下載https://mirrors.aliyun.com/apache/kafka
wget https://mirrors.aliyun.com/apache/kafka/2.3.0/kafka_2.11-2.3.0.tgz
3.解壓
tar -zxvf kafka_2.11-2.3.0
4.修改配置文件
vim /kafka_2.11-2.3.0/config/server.properties
添加如下配置
#分別對應每臺虛擬機1,2,3
broker.id=1
#所在虛擬機ip
listeners=PLAINTEXT://192.168.211.137:9092
#所在虛擬機ip
advertised.listeners=PLAINTEXT://192.168.211.137:9092
#zookeeper集羣地址
zookeeper.connect=192.168.211.137:2181,192.168.211.139:2181,192.168.211.140:2181
5.啓動kafka
./bin/kafka-server-start.sh -daemon ./config/server.properties
查看kafka服務是否啓動
jps -l
如果沒有啓動或者報錯,可以查看日誌文件
tail -fn 100 logs/server.log
6.停止kafka服務
./bin/kafka-server-stop.sh
7.創建topic名爲kafka1,如果創建成功,則kafka搭建成功
./bin/kafka-topics.sh --create --zookeeper 192.168.211.137:2181,192.168.211.139:2181,
192.168.211.140:2181 --replication-factor 3 --partitions 3 --topic kafka1
參數解析:
replication-factor 3 複製3份
partitions 3 創建3個分區
topic 主題名爲kafka1
8.查看所有的topic
bin/kafka-topics.sh --zookeeper 192.168.211.137:2181 --list
9.查看topic的信息
bin/kafka-topics.sh --zookeeper 192.168.211.137:2181 --describe --topic kafka1
10.刪除kafka的topic
bin/kafka-topics.sh --delete --zookeeper 192.168.211.137:2181 --topic kafka1
4.產生消息與消費消息
1.產生消息
單機
bin/kafka-console-producer.sh --broker-list 192.168.211.137:9092 --topic kafka1
集羣
bin/kafka-console-producer.sh --broker-list 192.168.211.137:9092,192.168.211.139:9092,\
192.168.211.140:9092 --topic kafka1
2.消費消息
單機
bin/kafka-console-consumer.sh --bootstrap-server 192.168.211.137:9092 --from-beginning --topic kafka1
集羣,其中 --from-beginning 從第一個消息開始消費
bin/kafka-console-consumer.sh --bootstrap-server 192.168.211.137:9092,192.168.211.139:9092,\
192.168.211.140:9092 --topic kafka1 --from-beginning