1. 程式人生 > >Kafka 單機和偽分散式叢集搭建

Kafka 單機和偽分散式叢集搭建

 

感覺自己越來越像個運維了,真的是所有的分散式的中介軟體基本都搭建了一遍   不得了了。

好 廢話少說 , 還是來走Kafka 吧 , 經歷了Rocket MQ , Kafka 的搭建真的是簡單的不知道多少倍 , RocketMQ  實在 是太麻煩了。

還是老方案 , 先登入官網。

https://archive.apache.org/dist/kafka

可以根據官網的指示文件  進行下載。

單機搭建

Step 1: 下載程式碼

> wget https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz

> tar -xzf kafka_2.11-2.1.0.tgz
> cd kafka_2.11-2.1.0

Step 2: 啟動服務

1) 啟動Zookeeper

因為kafa 是強依賴於ZooKeeper 的, 所以首先得啟動Zookeeper

2)啟動kafka

> bin/kafka-server-start.sh config/server.properties

同時進入 Zookeeper  可以看到建立的節點

可以看到在啟動kafka  之後 , 就被建立了如下很多的節點。

Step 3: 建立Topic

建立一個主題是Test 的Topic , zookeeper 是本地的 備份因子是1 ,partation  設定為1 的Topic   (因為現在是單機版本的,不是叢集)

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

主題Test  建立成功。

同時可以看Zookeeper 的下面, 也有topic的成功的建立。

Step 4: 傳送訊息

> bin

/kafka-console-producer.sh --broker-list localhost:9092 --topic test

傳送了兩條訊息到topic 是Test 的訊息中。

 

Step 5: 開啟客戶端,接收訊息。

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

 

得到兩條訊息

Step 6: 檢視節點資訊

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test

同樣的  也可以通過Zookeeper  來進行檢視

 

 叢集搭建

Step 1 : 修改配置檔案

首先 我們先拷貝一份配置檔案 

> cp config /server .properties config /server-1 .properties > cp config /server .properties config /server-2 .properties 更改如下內容  因為我的是偽叢集  所以 都用 本地的地址來做host 那麼 config/server-1.properties:      broker.id=1      listeners=PLAINTEXT://127.0.0.1:9093      log.dirs=/tmp/kafka-logs-1   config/server-2.properties:      broker.id=2      listeners=PLAINTEXT://127.0.0.1:9094      log.dirs=/tmp/kafka-logs-2

 broker.id 是唯一識別符號,而且是每一個叢集的唯一值。然後我們重寫Port 對每一個節點 , 以及給每一個節點建立log 目錄

Step 2 : 啟動 另外兩個服務

> bin /kafka-server-start .sh config /server-1 .properties & ... > bin /kafka-server-start .sh config /server-2 .properties & ...

可以看到現在有3個Kafka。

Step 3 :Create Topic

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

現在在Zookeeper 中可以看到 Topic my-replicated-topic

觀察狀態:

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic

可以看到此時有三個節點  1 , 2  , 0

Leader  是1 ,因為分割槽只有一個 所以在0上面, Replicas:主從備份是 1,2,0,ISR(in-sync):現在存活的資訊也是 1,2,0

 Step 4: 啟動消費端

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic

 

 Step 5: 啟動客戶端

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic

 

可以看見訊息已經被消費了。

Step 7 : 現在我們試試下kafka 的容災 。

現在我們知道leader 是  1   那麼我們現在kill 掉broker 1 節點  就知道下一個master 是哪個 了

> ps aux | grep server-1.properties root      18735  1.5 14.5 1452824 292820 pts/0  Sl   Dec25   0:21... > kill  18735

再來觀察現在的狀態。ISR  只剩下 2,0 了。  現在的Leader 是  2 。

 在消費端 可以看到如下資訊