[英]kafka consumer client in java can't reconnect to kubernetes kafka brokers after all of kafka-pods are upgraded
我使用 spring-kafka(2.2.4.RELEASE) 來消費來自 kafka-server 的消息。 kafka 客戶端和服務器都部署在 k8s 集群中。 通常,在 kafka broker 上生成和消費消息是可以的。 但是 kafka-brokers 升級后,kafka 客戶端無法重新連接到 broker。
據我所知,當bootstrap-servers
是虛擬 ip 時,kafka 客戶端重新連接有一個錯誤(詳細信息在這里)。 我的問題類似於 vip 錯誤。
在我的情況下, bootstrap-servers
地址是k8s kafka service name :port,當kafka-brokers升級后, kafka servcie name對應的真實ip會發生變化。 所以 kafka 客戶端永遠不會成功重新連接。 我怎樣才能解決這個問題?
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.10", GitCommit:"098570796b32895c38a9a1c9286425fb1ececa18", GitTreeState:"clean", BuildDate:"2018-08-02T17:19:54Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.10", GitCommit:"098570796b32895c38a9a1c9286425fb1ececa18", GitTreeState:"clean", BuildDate:"2018-08-02T17:11:51Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
> kubectl get svc -o wide -nbingotestdev|grep kafkadev
kafkadev ClusterIP None <none> 9091/TCP 1y app=kafkadev
kafkadev-out NodePort 10.68.206.93 <none> 9091:37142/TCP 257d app=kafkadev
> kubectl get pod -o wide -nbingotestdev|grep kafkadev
kafkadev-0 1/1 Running 0 15h 172.20.10.59 10.171.113.45
kafkadev-1 1/1 Running 0 15h 172.20.13.95 10.171.113.33
kafkadev-2 1/1 Running 0 15h 172.20.2.173 10.171.113.62
bootstrap-servers = kafkadev:9091
bootstrap-servers = 10.68.206.93:9091
您必須確保始終擁有一個靜態分配的 IP 集,當消費者獲取引導服務器時,該 IP 集作為廣告偵聽器返回,無論是通過外部 DNS 服務還是直接使用 k8s api 客戶端來檢查正在運行的 Kafka 服務,然后獲取所有地址以構建您的引導服務器字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.