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 。
在消費端 可以看到如下資訊