Kafka 教程(二) 集群搭建和容错性测试
2019獨角獸企業重金招聘Python工程師標準>>>
在之前我們已經安裝過kafka,我們直接進行單機多broker搭建。kafka安裝請參考:kafka 教程(一) 第一個實例
為后續方便我們統一使用hadoop001作為本臺機器的主機名,并修改hosts將主機名指向127.0.0.1
hostname hadoop001 echo hadoop001 > /proc/sys/kernel/hostnameecho 127.0.0.1 hadoop001 >> /etc/hosts一:安裝zookeeper
1.下載解壓zookeeper,使用cdh5.7.0版本對應的zookeeper-3.4.5
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz tar -zxvf zookeeper-3.4.5.tar.gz2.進入zookeeper conf目錄復制一份配置文件模板zoo_sample.cfg并命名為zoo.cfg
cd zookeeper-3.4.5/conf cp zoo_sample.cfg zoo.cfg3.編輯配置文件
修改zookeeper數據目錄為:/usr/server/tmp/zookeeper,由于我們只啟動單節點的zookeeper 所以端口不需要修改。
# 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=/usr/server/tmp/zookeeper # the port at which the clients will connect clientPort=2181 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge.4.啟動zookeeper
cd ../bin ./zkServer.sh start打印如下信息可以看到啟動成功
JMX enabled by default Using config: /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg Starting zookeeper ... STARTED使用jps或者jps -m查看
jps -m ------------------------- 12867 Jps -m 12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg至此zookeeper安裝啟動成功。
二:kafka集群搭建
1.進入kafka目錄的config文件夾,復制并修改配置文件,這里需要修改的位置有三個:
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-1
broker.id為broker的唯一標識,使用唯一的id,修改端口號和指定不同的日志輸出地址
我們創建三個broker,server.porperties文件復制三份,分別命名為:server-1.porperties,server-2.porperties,server-3.porperties
cp server.properties server-1.properties cp server.properties server-2.properties cp server.properties server-3.properties結果如下圖所示:
2.依次編輯并修改server-1.porperties,server-2.porperties,server-3.porperties三個文件,id分別設為:1,2,3,端口分別為:9093,9094,9095,日志路徑為:/usr/server/tmp/kafka/kafka-logs-1,/usr/server/tmp/kafka/kafka-logs-2,/usr/server/tmp/kafka/kafka-logs-3
# The id of the broker. This must be set to a unique integer for each broker. broker.id=1############################# Socket Server Settings #############################listeners=PLAINTEXT://:9093# The port the socket server listens on #port=9092# Hostname the broker will bind to. If not set, the server will bind to all interfaces #host.name=localhost############################# Log Basics ############################## A comma seperated list of directories under which to store log files log.dirs=/usr/server/tmp/kafka/kafka-logs-1后兩個文件類似,此處不在復述。
3.分別以三份配置文件啟動三個broker,實現單機多broker集群
回到kafka根目錄執行如下命令
./bin/kafka-server-start.sh config/server-1.properties & ./bin/kafka-server-start.sh config/server-2.properties & ./bin/kafka-server-start.sh config/server-3.properties &命令后加 & 表示輸出啟動日志到控制臺以后臺方式啟動,也可以使用 nohup [cmd] & 完全后臺運行,后臺運行的方式可以參考:Linux 后臺運行程序 nohup和& 的使用
執行后使用 jps -m命令查看:
[root@hadoop001 kafka_2.11-0.9.0.0]# jps -m13219 Kafka config/server-1.properties 12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg 13334 Kafka config/server-3.properties 13401 Jps -m 13277 Kafka config/server-2.properties可以看到已經啟動的三個broker
至此單機多broker集群配置完成,多機多集群可以參考單機多broker類似
三:容錯測試
1.先創建一個topic
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic hello-mrpei提示:
Created topic "hello-mrpei".成功的創建了一個 名稱為“hello-mrpei”的topic
下面我們查看一下這個topic的相關信息
./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-mrpei可以看到如下信息:
Topic:hello-mrpei PartitionCount:1 ReplicationFactor:3 Configs:Topic: hello-mrpei Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3topic名稱? 分區數為:1?副本數為:3? leader節點為:2? 副本為 :2,,1,3? 存活的副本:2,1,3
2.創建控制臺生成者和消費者 生成和消費消息
啟動一個新的終端,創建生產者producer,向hello-mrpei topic寫數據
./bin/kafka-console-producer.sh --broker-list hadoop001:9093 --topic hello-mrpei創建消費者,消費hello-mrpei topic的消息
啟動一個新的終端,進入kafka目錄,啟動控制臺消費者
./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic hello-mrpei--from-beginning表示消費歷史消息
發送可接收消息正常
發送:
接收:
3.容錯測試
通過強制終止部分broker進程,查看kafka的穩定性。
首先查看當前topic的信息:
[root@hadoop001 kafka_2.11-0.9.0.0]# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-mrpei Topic:hello-mrpei PartitionCount:1 ReplicationFactor:3 Configs:Topic: hello-mrpei Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3通過jps -m查看當前運行的kafka進程
[root@hadoop001 kafka_2.11-0.9.0.0]# jps -m 13649 Kafka config/server-2.properties 13939 ConsoleConsumer --zookeeper localhost:2181 --from-beginning --topic hello-mrpei 14004 ConsoleProducer --broker-list localhost:9093 --topic hello-mrpei 12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg 13706 Kafka config/server-3.properties 14026 Jps -m 13484 Kafka config/server-1.properties使用kill命令結束進程號為13484的broker節點1
kill -9 13484jps -m查看到broker 1 已經結束
[root@hadoop001 kafka_2.11-0.9.0.0]# jps -m 13649 Kafka config/server-2.properties 13939 ConsoleConsumer --zookeeper localhost:2181 --from-beginning --topic hello-mrpei 14004 ConsoleProducer --broker-list localhost:9093 --topic hello-mrpei 12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg 14089 Jps -m 13706 Kafka config/server-3.properties [root@hadoop001 kafka_2.11-0.9.0.0]#查看topic信息:
[root@hadoop001 kafka_2.11-0.9.0.0]# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-mrpei Topic:hello-mrpei PartitionCount:1 ReplicationFactor:3 Configs:Topic: hello-mrpei Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,3可以看到 Isr 存活的節點為:2,3
發送消息測試
生產者:
消費者:
可以發現可以正常消費
現在我們再次結束一個broker進程,這次選擇結束leader節點,即節點 2
jps -m查看進程
[root@hadoop001 kafka_2.11-0.9.0.0]# jps -m 13649 Kafka config/server-2.properties 13939 ConsoleConsumer --zookeeper localhost:2181 --from-beginning --topic hello-mrpei 14004 ConsoleProducer --broker-list localhost:9093 --topic hello-mrpei 12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg 13706 Kafka config/server-3.properties 14124 Jps -m結束節點 2
kill -9 13649 jps -m------------ 13939 ConsoleConsumer --zookeeper localhost:2181 --from-beginning --topic hello-mrpei 14004 ConsoleProducer --broker-list localhost:9093 --topic hello-mrpei 14148 Jps -m 12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg 13706 Kafka config/server-3.properties查看topic信息:
[root@hadoop001 kafka_2.11-0.9.0.0]# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-mrpei Topic:hello-mrpei PartitionCount:1 ReplicationFactor:3 Configs:Topic: hello-mrpei Partition: 0 Leader: 3 Replicas: 2,1,3 Isr: 3可以看到 Isr 存活的節點只剩下節點3,此時leader已經變為節點3,此次省去選舉過程介紹。
消費測試:
生產者:
消費者:
消費仍然正常。
自此,kafka容錯高可用測試結束,經過生產環境的驗證kafka確實是高可用的消息中間件,今后的生產環境可以根據需要選用kafka。
轉載于:https://my.oschina.net/mrpei123/blog/1929200
總結
以上是生活随笔為你收集整理的Kafka 教程(二) 集群搭建和容错性测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NFS的搭建及配置
- 下一篇: UI开发模式-容器模式