Задача состоит в том, чтобы создать производителя Kafka, который подключается к кластеру Kafka, который находится в кластере Kubernetes, извне этого кластера. У нас есть несколько баз данных РСУБД, которые размещаются в помещении, и мы хотим передавать данные напрямую в Kafka, который находится в Kubernetes на AWS. Мы попробовали несколько вещей и развернули платформу с открытым исходным кодом Confluent, но пока ничего не помогло. Есть ли у кого-нибудь внятный ответ на эту проблему?
Как подключиться к Kafka в Kubernetes извне?
Ответы (2)
Возможно, вам стоит взглянуть на развертывание Kafka Connect внутри Kubernetes. Поскольку вы хотите реплицировать данные из различных баз данных RDMBS, вам необходимо настроить исходные соединители,
Исходный соединитель принимает целые базы данных и передает обновления таблиц в темы Kafka. Он также может собирать метрики со всех ваших серверов приложений в темы Kafka, делая данные доступными для потоковой обработки с низкой задержкой.
В зависимости от исходных баз данных вам потребуется настроить соответствующие коннекторы.
Если вы не знакомы с Kafka Connect, в этой статье может быть весьма полезным, поскольку объясняет ключевые концепции.
Клиенты Kafka должны подключаться к определенному узлу для создания или использования сообщений.
Протокол kafka может подключаться к любому узлу для получения метаданных. Затем клиент подключается к определенному узлу, который был выбран лидером раздела, который клиент хочет производить / потреблять.
Каждый модуль kafka должен быть доступен индивидуально, поэтому вам понадобится балансировщик нагрузки L4 для каждого модуля. Рекламируемая конфигурация слушателя может быть установлена в конфигурации kafka, чтобы объявлять разные IP / имена хоста для внутренних и внешних клиентов. Настройте ADVERTISED_LISTENERS EXTERNAL для использования балансировщика нагрузки и INTERNAL для использования IP-адреса модуля. Порты должны быть разными для внутренних и внешних.
Оформить заказ https://strimzi.io/, https://bitnami.com/stack/kafka, https://github.com/confluentinc/cp-helm-charts
Обновлять:
Пробовал установить kafka в k8s, работающем в AWS EC2. Между confluent-operator, bitnami-kafka и strimzi только strimzi настроил ВНЕШНИЙ в настройках kafka для балансировщика нагрузки.
bitnami-kafka использовал безголовый сервис, который бесполезен за пределами сети k8s. Confluent-operator настраивается на IP-адрес узла, что делает его доступным за пределами k8s, но для тех, кто может подключиться к экземпляру EC2 через частный IP-адрес.