Kafka 集群的擴容

2021-08-10 01:56:49 字數 3381 閱讀 9339

將現有的集群上任乙個伺服器上的kafka目錄拷貝到新的伺服器上

修改config/server.properties中的broker.id、log.dirs、listeners

建立logs.dirs指定的目錄,並設定讀寫許可權(chomd -r 777 ***)

broker.id=

3log

.dirs=kafka-logs

listeners=plaintext:

bin/kafka-server-start.sh config/server.properties  &
雖然經過上面兩個步驟後已經完成了集群的擴容;但是集群上原有的topic的資料不會自動遷移到新的broker上。可以在新的broker所在的伺服器上通過ls /home/lxh/kafka_2.11-0.10.0.0/kafka-logs檢視到並沒有一原有的topic名稱的檔案目錄(因為建立topic後會在config/server.properties中的配置的log.dirs 目錄中生產以topic名稱+分割槽編號的檔案目錄);那麼就需要手動的區遷移資料

建立編輯要遷移的topic的 json檔案

vi topic-to

-move

.json

比如要將topic名稱為test和paritioer_test的資料重新平衡到集群中,就可以新增以下內容

,

],"version":1

}

生成遷移分配規則json檔案

bin/kafka-reassign

-partitions

.sh --zookeeper localhost:2181

--topics-to

-move

-json

-file topic-to

-move

.json --broker-list

"0,1,2"

--generate

得到的結果為

current partition replica assignment 

,,,,,]}

proposed partition reassignment configuration

,,,,,]}

其中的current partition replica assignment指的是遷移前的partition replica;proposed partition reassignment configuration 指的就是遷移分配規則json。需要將該json檔案儲存到json檔案中(如expand-cluster-reassignment.json)

注意:在遷移過程中不能人為的結束或停止kafka服務,不然會有資料不一致的問題

在執行的過程中,可以新開乙個終端執行以下命令來檢視執行是否正確完成

bin/kafka-reassign

-partitions

.sh --zookeeper localhost:2181

--reassignment-json

-file expand-cluster

-reassignment

.json --verify

輸出

status

of partition reassignment:

reassignment

of partition [test,4] completed successfully

reassignment

of partition [test,0] completed successfully

reassignment

of partition [paritioer_test,0] completed successfully

reassignment

of partition [test,3] completed successfully

reassignment

of partition [test,2] completed successfully

reassignment

of partition [test,1] completed successfully

在遷移完成過程後,可以使用以下命令看下topic的每個partitions的分布情況

bin/kafka

-topics.sh

--zookeeper

172.16.

49.173:2181--

describe--

topic

test

topic:test  partitioncount:5    replicationfactor:2 configs:

topic: test partition: 0 leader: 0 replicas: 0,1 isr: 0,1

topic: test partition: 1 leader: 1 replicas: 1,2 isr: 1,2

topic: test partition: 2 leader: 2 replicas: 2,0 isr: 0,2

topic: test partition: 3 leader: 0 replicas: 0,2 isr: 0,2

topic: test partition: 4 leader: 0 replicas: 1,0 isr: 0,1

可以看到名為test的topic的有的資料以及存在於編號為2的新broker上了

kafka集群擴容以及資料遷移

一 kafka集群擴容比較簡單,機器配置一樣的前提下只需要把配置檔案裡的brokerid改乙個新的啟動起來就可以。比較需要注意的是如果公司內網dns更改的不是很及時的話,需要給原有的舊機器加上新伺服器的host,不然可能會產生controller伺服器從zk上拿到網域名稱但是解析不到新機器位址的情況...

kafka集群擴容後的topic分割槽遷移

kafka集群擴容後,新的broker上面不會資料進入這些節點,也就是說,這些節點是空閒的 它只有在建立新的topic時才會參與工作。除非將已有的partition遷移到新的伺服器上面 所以需要將一些topic的分割槽遷移到新的broker上。kafka reassign partitions.sh...

Kafka學習整理九 集群的擴容

將現有的集群上任乙個伺服器上的kafka目錄拷貝到新的伺服器上 修改config server.properties中的broker.id log.dirs listeners 建立logs.dirs指定的目錄,並設定讀寫許可權 chomd r 777 broker.id 3log dirs kaf...