Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群
文章目錄
- 概述
- 部署信息
- 配置信息
- 驗證
概述
對于kafka來說,一個單獨的broker意味著kafka集群中只有一個節點。要想增加kafka集群中的節點數量,只需要多啟動幾個broker實例即可。
單個節點的安裝: Kafka-初體驗Kafka(02)-Centos7下搭建單節點kafka_2.11‐1.1.0
這里我們來搭建個3個節點的kafka集群來體驗下吧
部署信息
192.168.18.130 —> kafka 、 zookeeper(單節點的zk)
192.168.18.131 —> kafka
192.168.18.132 —> kafka
單節點的 zk , 部署上 130上,事實上生產環境的話,zk也是要搭建集群的,這里演示用的話,用單個節點的zk先。
3個節點的kafka注冊到 單節點的zk上。
配置信息
kafka的配置文件主要是配置文件 server.properties
130
[root@artisan config]# grep -Ev '^$|^[#;]' server.properties broker.id=0 listeners=PLAINTEXT://192.168.18.130:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs num.partitions=1 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=192.168.18.130:2181 zookeeper.connection.timeout.ms=6000 group.initial.rebalance.delay.ms=0 [root@artisan config]#131
[root@artisan config]# grep -Ev '^$|^[#;]' server.properties broker.id=1 listeners=PLAINTEXT://192.168.18.131:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs num.partitions=1 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=192.168.18.130:2181 zookeeper.connection.timeout.ms=6000 group.initial.rebalance.de132
[root@artisan config]# grep -Ev '^$|^[#;]' server.properties broker.id=2 listeners=PLAINTEXT://192.168.18.132:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs num.partitions=1 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=192.168.18.130:2181 zookeeper.connection.timeout.ms=6000 group.initial.rebalance.delay.ms=0 [root@artisan config]#還有一篇博主寫的 zk也是高可用的,可以參考下,寫的很不錯 ZooKeeper+Kafka 高可用集群搭建
驗證
啟動zookeeper 和 3個 kafka 后,我們創建一個新的topic,副本數設置為3,分區數設置為2
[root@artisan bin]# ./kafka-topics.sh --create --zookeeper 192.168.18.130:2181 --replication-factor 3 --partitions 2 --topic artisan-replicated-topic Created topic "artisan-replicated-topic". [root@artisan bin]#查看topic的情況
[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic Topic:artisan-replicated-topic PartitionCount:2 ReplicationFactor:3 Configs:Topic: artisan-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0Topic: artisan-replicated-topic Partition: 1 Leader: 2 Replicas: 2,0,1 Isr: 2,0,1 [root@artisan bin]#我們來解釋下上面的輸出內容
第一行是所有分區的概要信息,之后的每一行表示每一個partition的信息。
所有分區的概要信息:
Topic:artisan-replicated-topic PartitionCount:2 ReplicationFactor:3 Configs每一個partition的信息:
Topic: artisan-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0 Topic: artisan-replicated-topic Partition: 1 Leader: 2 Replicas: 2,0,1 Isr: 2,0,1- leader節點負責給定partition的所有讀寫請求。
- replicas 表示某個partition在哪幾個broker上存在備份。不管這個幾點是不是”leader“,甚至這個節點掛了,也會列出
- isr 是replicas的一個子集,它只列出當前還存活著的,并且已同步備份了該partition的節點。
我們可以運行相同的命令查看之前創建的名稱為”artisan“的topic
[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan Topic:artisan PartitionCount:1 ReplicationFactor:1 Configs:Topic: artisan Partition: 0 Leader: 0 Replicas: 0 Isr: 0 [root@artisan bin]#之前設置了topic的partition數量為1,備份因子為1,因此顯示就如上所示了。當然我們也可以通過如下命令增加topic的分區數量(目前kafka不支持減少分區):
[root@artisan bin]# ./kafka-topics.sh --alter --partitions 3 --zookeeper 192.168.18.130:2181 --topic artisan WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected Adding partitions succeeded!重新查看
[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan Topic:artisan PartitionCount:3 ReplicationFactor:1 Configs:Topic: artisan Partition: 0 Leader: 0 Replicas: 0 Isr: 0Topic: artisan Partition: 1 Leader: 1 Replicas: 1 Isr: 1Topic: artisan Partition: 2 Leader: 2 Replicas: 2 Isr: 2 [root@artisan bin]#現在我們向新建的 artisan-replicated-topic 中發送一些message,kafka集群可以加上所有kafka節點:
[root@artisan bin]# ./kafka-console-producer.sh --broker-list 192.168.18.130:9092,192.168.18.131:9092,192.168.18.132:9092 --topic artisan-replicated-topic >artisan message test 1 >artisan message test 2 >artisan message test 3 >現在131broker 開始消費:
[root@artisan bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.18.131:9092 --from-beginning --topic artisan-replicated-topic artisan message test 1 artisan message test 3 artisan message test 2現在我們來測試我們 容錯性 ,因為broker1目前是artisan-replicated-topic的分區0的 leader,所以我們要將其kill , kill 掉 131 節點的 kafka
再執行
[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic Topic:artisan-replicated-topic PartitionCount:2 ReplicationFactor:3 Configs:Topic: artisan-replicated-topic Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 0,2Topic: artisan-replicated-topic Partition: 1 Leader: 2 Replicas: 2,0,1 Isr: 2,0 [root@artisan bin]#我們可以看到,分區0的leader節點已經變成了broker 2。要注意的是,在Isr中,已經沒有了1號節點。leader的選舉也是從ISR(in-sync replica)中進行的。
131 重新起來以后,還是可以消費消息
[root@artisan bin]# ./kafka-server-start.sh -daemon ../config/server.properties [root@artisan bin]# jps 24436 Kafka 24455 Jps [root@artisan bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.18.131:9092 --from-beginning --topic artisan-replicated-topic artisan message test 1 artisan message test 3 artisan message test 2再看下
[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic Topic:artisan-replicated-topic PartitionCount:2 ReplicationFactor:3 Configs:Topic: artisan-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 0,2,1Topic: artisan-replicated-topic Partition: 1 Leader: 2 Replicas: 2,0,1 Isr: 2,0,1 [root@artisan bin]# [root@artisan bin]#總結
以上是生活随笔為你收集整理的Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache Kafka-初体验Kafk
- 下一篇: Apache Kafka-初体验Kafk