потребительский клиент kafka в java не может переподключиться к kubernetes брокерам kafka после того, как все kafka-pods обновлены - PullRequest
0 голосов
/ 27 февраля 2020

Я использую 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 никогда не сможет повторно подключиться успешно. Как я могу это исправить?

Среда

  • kubectl версия
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.

1 Ответ

0 голосов
/ 27 февраля 2020

Вы должны будете убедиться, что у вас всегда есть статически назначенный набор IP-адресов, который возвращается в качестве объявленных слушателей, когда потребители выбирают серверы bootstrap, будь то через внешнюю службу DNS или напрямую используя клиент API k8s для проверьте работающие службы Kafka, затем извлеките все адреса, чтобы создать строку bootstrap -server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...