標籤:隨機 安裝 通過 查詢 接收 tin root idt etc
一、環境作業系統和軟體版本介紹
1.環境作業系統為CentOS Linux release 7.2.1511 (Core)
可用cat /etc/redhat-release查詢
2.軟體版本
Kafka版本為:0.10.0.0
二、軟體的基礎準備
由於Kafka叢集需要依賴ZooKeeper叢集來協同管理,所以需要事先搭建好ZK叢集。此文主要介紹搭建Kafka叢集環境。
三、詳細安裝搭建步驟
1.下載壓縮包kafka_2.10-0.10.0.0.tgz到/data/soft目錄
2.將kafka_2.10-0.10.0.0.tgz解壓到/data/app/Kafka目錄
tar –xzf kafka_2.10-0.10.0.0.tgz –C /data/app/kafkacluster
把檔案夾重新命名為19092,進入config目錄,修改server.properties檔案
3.用vi命令開啟server.properties
1 [[email protected] config]# vi server.properties
4.修改如下:
1 broker.id=02 port=190923 log.dirs=/data/app/kafkacluster/19093/bin/kafka-logs190924 zookeeper.connect=192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003
其他兩台伺服器上的kafka同上,先修改檔案夾名稱(在此文另外兩個檔案夾名稱為19093和19094)
再進入config目錄,分別改server.properties名稱為server1.properties和server2.properties
server1.properties中的配置需要改:
1 broker.id=12 port=190933 log.dirs=/data/app/kafkacluster/19093/bin/kafka-logs190934 zookeeper.connect=192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003
server2.properties中的配置需要改:
1 broker.id=22 port=190943 log.dirs=/data/app/kafkacluster/19094/bin/kafka-logs190944 zookeeper.connect=192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003
四、啟動kafka&測實驗證
1.首先啟動獨立的ZK叢集,三台都要啟動(./zkServer.sh start)
2.進入到kafka的bin目錄,然後啟動服務./kafka-server-start.sh ../config/server.properties (三台伺服器都要啟動)
1 ./kafka-server-start.sh ../config/server1.properties2 ./kafka-server-start.sh ../config/server2.properties
另外,啟動其他節點的時候,在最先開始啟動的節點會顯示其它節點加入的資訊記錄,如下所示:
1 [2017-01-18 14:44:24,352] INFO Partition [aaa,0] on broker 0: Expanding ISR for partition [aaa,0] from 0 to 0,1 (kafka.cluster.Partition)2 [2017-01-18 14:44:37,065] INFO Partition [aaa,0] on broker 0: Expanding ISR for partition [aaa,0] from 0,1 to 0,1,2 (kafka.cluster.Partition)
3.驗證啟動進程
1 [[email protected] bin]# jps2 25778 Kafka3 26132 Jps4 25285 Kafka5 25014 QuorumPeerMain6 25064 QuorumPeerMain7 25531 Kafka8 25116 QuorumPeerMain
4.使用用戶端進入zk
1 [[email protected] bin]# ./zkCli.sh -server 192.168.1.18:30012 Connecting to 192.168.1.18:3001
5.查看目錄情況
1 [zk: 192.168.1.18:3001(CONNECTED) 0] ls /2 [controller_epoch, controller, brokers, zookeeper, test, admin, isr_change_notification, consumers, config]3 [zk: 192.168.1.18:3001(CONNECTED) 1]
上面的顯示結果中:只有zookeeper是zookeeper原生的,其他都是Kafka建立的
6. 建立一個topic:
1 [[email protected] bin]# ./kafka-topics.sh --create --zookeeper 192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003 --replication-factor 3 --partitions 1 --topic test6662 Created topic "test666".
7. 查看topic狀態:
1 [[email protected] bin]# ./kafka-topics.sh --describe --zookeeper 192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003 --topic test6662 Topic:test666 PartitionCount:1 ReplicationFactor:3 Configs:3 Topic: test666 Partition: 0 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1
輸出參數解釋:
第一行是對所有分區的一個描述,然後每個分區都會對應一行,因為我們只有一個分區所以下面就只加了一行。
Leader:負責處理訊息的讀和寫,Leader是從所有節點中隨機播放的。
Replicas:列出了所有的副本節點,不管節點是否在服務中
Isr:是正在服務中的節點
由上可見,此時的leader是0
下文會kill 0,看leader是否更改
8.往test666中發送訊息:
1 [[email protected] bin]# ./kafka-console-producer.sh --broker-list localhost:19092,localhost:19093,localhost:19094 --topic test6662 hello kafka!3 hello littleMonster!4 hello world!
9.接收訊息:
1 [[email protected] bin]# ./kafka-console-consumer.sh --zookeeper 192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003 --topic test666 --from-beginning2 hello kafka!3 hello littleMonster!4 hello world!
訊息接收成功。
10.找到為0的leader的進程,並殺死
1 [[email protected] /]# ps -ef | grep ka
1 [[email protected] /]# kill -9 25285
11.再次查看topic狀態:
1 [[email protected] bin]# ./kafka-topics.sh --describe --zookeeper 192.168.1.18:3001,192.168.1.18:3002,192.168.1.18:3003 --topic test6662 Topic:test666 PartitionCount:1 ReplicationFactor:3 Configs:3 Topic: test666 Partition: 0 Leader: 2 Replicas: 0,2,1 Isr: 2,1
由此可見,在Isr(正在服務中的節點)項,0已消失,新選舉出的leader是2。
12.再次發送訊息
接收訊息
訊息正常接收,該測試通過。
Kafka叢集安裝(CentOS 7環境下)