Kafka через прокси: bootstrap работает, а подключения к брокерам завершаются ошибкой
Объясняет, почему успешное bootstrap-подключение Kafka не гарантирует доступ через прокси к каждому обнаруженному брокеру.
Bootstrap-подключение может установиться успешно, хотя клиент Kafka по-прежнему не может производить или потреблять. Bootstrap-серверы помогают клиенту обнаружить кластер; они не обязательно являются единственными конечными точками, к которым он подключится.
Метаданные брокера содержат адреса, используемые для последующих подключений. Если эти имена или порты недоступны через предполагаемый маршрут прокси, первое успешное подключение не решает остальную задачу.
Прочитайте объявленные конечные точки
Сравните bootstrap-адрес с адресами брокеров, которые клиент действительно получает. Публичный псевдоним bootstrap может вести к приватным объявленным именам, а перенаправление одного локального порта не переписывает автоматически каждый адрес в метаданных.
Также определите путь прокси, поддерживаемый реализацией клиента. Свойство SOCKS системы Java не гарантирует, что транспорт библиотеки на основе NIO использует прокси-механизм JDK Socket. Проверяйте фактический клиент Kafka и сетевую интеграцию, а не предполагайте, что каждый сокет Java соблюдает одну и ту же настройку.
Клиенту, учитывающему прокси, нужен разрешённый маршрут к соответствующим конечным точкам брокеров. Сетевое решение требует соответствующей доступности и разрешения имён. Это разные проекты, и ни один из них не обеспечивается только указанием прокси в качестве bootstrap-сервера.
Держите настройки протокола безопасности и аутентификации отдельно. Прокси может установить путь TCP, пока идентичность TLS, аутентификация SASL или авторизация брокера всё ещё не работают.
Для диагностики отметьте, какая конечная точка отказала и получена ли она из статической конфигурации или из возвращённых метаданных. Это различие сужает проблему гораздо сильнее, чем повторное изменение уже доступной конечной точки.