我正在尝试以下操作:
我在天青上托管了一个卡夫卡容器。当使用者处于天蓝色时,我可以从该使用者向此kafka实例发送消息。
kafka: image: confluentinc/cp-kafka:latest depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: kafka KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://kafka:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_BROKER_ID: 1 KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M" KAFKA_LOG_DIRS: /var/lib/winkafka
"Endpoint": "kafka:9092"
kafka和消费者之间在天蓝色之间的交流非常完美。
现在,我想让消费者在内部使用,而不是在天蓝色。 因此,我要做的只是从azure vm公开端口9092,并将端点更新为以下内容:
"Endpoint": "Azure Vm's Public IP:9092"
但是,它无法从本地应用程序连接到Azure上的Kafka。
您能否建议我在这里做错了什么,以及如何将本地应用程序连接到在azure(或任何云)上的容器中运行的kafka?
答案 0 :(得分:0)
您需要为单独的网络(内部Azure与公共IP)配置Kafka侦听器。有关详细说明,请参见https://rmoff.net/2018/08/02/kafka-listeners-explained/。
免责声明:我写了博客文章:)