Я использую spring-kafka (2.2.4.RELEASE) для получения сообщения от kafka-сервера. Клиенты и серверы kafka развернуты в кластерах k8s. Обычно нормально создавать и потреблять сообщения на брокерах кафки. Но клиенты kafka не могут переподключиться к брокерам при обновлении kafka-брокеров.
Как я знаю, при переподключении клиентов kafka возникает ошибка, когда bootstrap-servers
является виртуальным ip ( подробности здесь ) , Моя проблема похожа на ошибку vip.
В моей ситуации bootstrap-servers
адрес - k8s имя службы kafka : порт, а при обновлении kafka-брокеров real ip , соответствующее kafka serv cie имя изменится. Таким образом, клиент 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"}
- kafka версия: kafka_2.12-2.3.1
- информация о развертывании kafka:
> 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
- Конфигурация клиента kafka:
- version1:
bootstrap-servers = kafkadev:9091
- version2:
bootstrap-servers = 10.68.206.93:9091
- оба успешно работают, когда серверы kafka в порядке, и переподключение не удалось после обновления модулей сервера kafka.