Как обрабатывать сообщения вне GCP на сервере Kafka, работающем на GCP - PullRequest
0 голосов
/ 18 июня 2020

Я пытался запустить потребителя на моем локальном компьютере, подключенном к серверу Kafka, работающему внутри GCP.

Kafka и Zookeeper работают на одном экземпляре виртуальной машины GCP

Шаг 1: Запустите Zookeeper

bin/zookeeper-server-start.sh config/zookeeper.properties

Шаг 2: Запустите Kafka

bin/kafka-server-start.sh config/server.properties

Если я запускаю потребителя внутри экземпляра виртуальной машины GCP, он работает нормально :

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

Я проверил правила брандмауэра, и у меня есть доступ с моего локального компьютера, я могу получить доступ как к IP-адресу publi c, так и к порту, на котором работает сервер Kafka.

Я протестировал множество вариантов, изменив server.properties kafka, например:

advertised.host.name=public-ip

или

advertised.listeners=public-ip

После ответа на connected-kafka-running-on -ec2-machine-from-my-local-machine безуспешно.

1 Ответ

0 голосов
/ 18 июня 2020

Из официальной документации :

рекламируемых слушателей

Слушатели публикации sh в ZooKeeper для использования клиентами . В средах IaaS он может отличаться от интерфейса, к которому привязан брокер. Если он не установлен, будет использоваться значение для слушателей. В отличие от слушателей, недопустимо рекламировать мета-адрес 0.0.0.0.

После тестирования множества различных вариантов это решение сработало для меня:

Настройка двух слушателей, один ВНЕШНИЙ с publi c IP и один ВНУТРЕННИЙ с частным IP:

# Configure protocol map
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT

# Use plaintext for inter-broker communication
inter.broker.listener.name=INTERNAL

# Specify that Kafka listeners should bind to all local interfaces
listeners=INTERNAL://0.0.0.0:9027,EXTERNAL://0.0.0.0:9037

# Separately, specify externally visible address
advertised.listeners=INTERNAL://localhost:9027,EXTERNAL://kafkabroker-n.mydomain.com:9093

Пояснение:

Во многих сценарий ios, например, при развертывании на AWS, объявленные извне адреса брокеров Kafka в кластере отличаются от внутренних сетевых интерфейсов, которые использует Kafka.

Также не забудьте настроить свой правило брандмауэра, чтобы открыть порт на прослушивателе EXTERNAL в другом, чтобы подключиться к нему с внешней машины.

Примечание. Важно ограничивать доступ только авторизованным клиентам. Вы можете использовать правила сетевого брандмауэра для ограничения доступа. Это руководство применимо к сценарию ios, который включает как RF C 1918, так и publi c IP; однако при использовании IP-адресов publi c еще более важно защитить вашу конечную точку Kafka, потому что любой может получить к ней доступ.

Взято из решений Google .

...