kafka升級
Upgrading from 0.8.x, 0.9.x, 0.10.0.x, 0.10.1.x or 0.10.2.x to 0.11.0.x
升級之前的引言
kafka-0.11.0.x引入了一個新的消息格式版本和線協議,通過遵循以下的滾動升級計劃,可以實現不停服務完成升級。
從0.10.2版本開始,Java客戶端(生產者和消費者)是可以和舊版本通信的,而0.11.0客戶端只可以與0.10.0之后的版本通信。如果現有集群的broker老于0.10.0版本,那么必須在升級客戶端之前,先升級kafka集群中所有的broker。0.11.0版本的kafka broker支持0.8.x以上版本的客戶端
滾動升級
1. 更新所有broker的server.properties文件,并添加以下屬性:
inter.broker.protocol.version=CURRENT_KAFKA_VERSION (如:0.8.2.0, 0.9.0.0或0.10.0.0).
log.message.format.version=CURRENT_KAFKA_VERSION (有關此配置的詳細信息,請查看升級后潛在的性能影響。)
2. 每次升級一個broker:關閉broker,替換新版本,然后重新啟動它。
3. 一旦整個群集升級,通過編輯server.properties中的inter.broker.protocol.version并將其設置為0.11.0.x來轉換所有協議,但現在不要修改log.message.format.version
4. 逐個重新啟動broker,使新協議版本生效。
5. 當所有的消費者升級到0.11.0以上版本時,再修改kafka broker的server.properties的log.message.format.version為0.11.0.然后再逐個重啟broker。注意舊版本的消費者是不支持新版本消息格式的,所以為了避免下變頻的性能開銷,盡量使用新的Java消費者。
說明
1.如果可接受停機,你可以簡單地將所有broker關閉,更新版本并重啟啟動,它們將默認從新版本開始。
2.變換協議版本和重啟啟動可以在broker升級完成后的任何時間去做,不必馬上做。
3.在變更log.message.format.version全局設置之前依舊可以使用topic管理工具(bin/kafka-topics.sh)
4.如果是從0.10.0之前的版本升級,那么massage format不必要在0.11.0之前先更新設置0.10.0