zk集群環境搭建:https://www.cnblogs.com/toov5/p/9897868.html
三台主機每台的Java版本1.8
下面kafka集群的搭建:
3台虛擬機均進行以下操作:
// 解壓下載好的kafka壓縮包並重命名
cd /home
wget http://mirror.bit.edu.cn/apache/kafka/1.1.1/kafka_2.11-1.1.1.tgz
tar -xzvf kafka_2.11-1.1.1.tgz
mv kafka_2.11-1.1.1 kafka
// 修改配置文件
vi ./kafka/config/server.properties
修改如下:
主機1的:(其他主機類似)
broker.id=0 #做標記的哦 其他的主機 1 2 與Zookeeper的data目錄下的myId一致!
listeners=PLAINTEXT://192.168.91.1:9092 #監聽的IP地址和端口號 這其實是個協議 要寫全! 監聽的本機的ip端口號哈 其他的主機ip地址更改
zookeeper.connect=192.168.91.1:2181,192.168.91.3:2181,192.168.91.4:2181 #zk的集群地址
然后修改系統環境中配置kafka的路徑
vi /etc/profile
// 在文件最下方添加kafka路徑
export KAFKA_HOME=/home/kafaka/kafka
// PATH的修改 多路徑PATH寫法為PATH=${ZOOKEEPER_HOME}/bin:${KAFKA_HOME}/bin:$PATH
$PATH:${KAFKA_HOME}/bin
我的配置后:
export PATH=$PATH:${KAFKA_HOME}/bin:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
// 使修改完的環境變量生效
source /etc/profile
此時 其他的兩台
scp -r ./kafaka/ root@192.168.91.3:/home
scp -r ./kafaka/ root@192.168.91.4:/home
然后分別修改server.properties
broker.id=X #做標記的哦 其他的主機 X =1 和 2
listeners=PLAINTEXT://192.168.91.X:9092 #監聽的IP地址和端口號 這其實是個協議 要寫全! 監聽的本機的ip端口號哈 其他的主機ip地址更改
,修改 /etc/profile 與第一台一致
此時的環境便搭建完畢!
先啟動Zookeeper集群,
逐個主機啟動: /home/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start
查看啟動狀態: /home/zookeeper/zookeeper-3.4.6/bin/zkServer.sh status
再啟動kafka集群
2、在后台開啟3台虛擬機的kafka程序
/home/kafaka/kafka
./bin/kafka-server-start.sh -daemon config/server.properties
啟動成功!
注意每個服務器要關閉防火牆!!
Kafka 沒有后台圖形化 不跟rabbitmq似的哈哈
查看Zookeeper:
每個broker啟動后 會去zk注冊信息,創建節點信息
下面創建個topic試試:
參考官網:http://kafka.apachecn.org/quickstart.html
創建topic時候 需要指定分區partition 1 表示只在一個broker里面存放。(單節點存放)
3 表示三個broker里面存放 。生產者投遞消息時候 均攤存放!
只會在1個broker進行創建
在某一台服務器上創建 topic:
/home/kafaka/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.91.1:2181 --replication-factor 1 --partitions 1 --topic test # 創建topic時候 會向zk進行連接 1表示在單機上存儲創建
zk查看:
broker就是我們指定的這台服務器上 partition是1 的話每次都投遞到 0這個broker上哦
下面介紹下日志查看:
kafka的日志存放是在配置中的 server.properties:
創新topic后發送消息
往指定的broker發送消息
bin/kafka-console-producer.sh --broker-list 192.168.91.1:9092 --topic test
啟動consumer進行消費:連接的不是同一台主機,也可以進行消費
bin/kafka-console-consumer.sh --bootstrap-server 192.168.91.3:9092 --topic test --from-beginning
同是一個集群。互通的 ,只是消息存放的地方有別而已。
繼續創建topic,存放到三個broker:
/home/kafaka/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.91.1:2181 --replication-factor 1 --partitions 3 --topic my_test_topic
創建成功后查看日志目錄:
broker0
broker1
broker2
通過test-0 my_test_topic_x 可以看出編號是有自己的算法的
得出的結論是 topic 在三台不同的節點進行存放的,生產者投遞消費進行均攤。