感覺自己越來越像個運維了,真的是所有的分布式的中間件基本都搭建了一遍 不得了了。
好 廢話少說 , 還是來走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
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 。
在消費端 可以看到如下信息