以下是我的docker-compose-yml:
version: '3.5'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
networks:
- kafka-network
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
networks:
- kafka-network
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
depends_on:
- zookeeper
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
kafka-network:
name: kafka-network
这样,我就可以使用url Kafka:9092从kafka-network上的anothe容器连接到Kafka代理
如何使它也可从本地主机和其他机器使用?
更新我更新了我的docker-compose如下:
version: '3.5'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
networks:
- kafka-network
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
networks:
- kafka-network
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: ${KAFKA_LISTENERS:-PLAINTEXT://:9092}
KAFKA_ADVERTISED_LISTENERS: ${KAFKA_ADVERTISED_LISTENERS:-PLAINTEXT://127.0.0.1:9092}
depends_on:
- zookeeper
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
kafka-network:
name: kafka-network
并创建了一个包含以下内容的.env文件:
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://the.ip.of.machine:9092
我在我的PC上测试了它(没有。env文件),我可以使用本地主机的kafkakat与代理进行通信:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6844a16fa14f wurstmeister/kafka "start-kafka.sh" 5 seconds ago Up 3 seconds 0.0.0.0:9092->9092/tcp kafka-compose_kafka_1_9573f71109c7
15d62557f3bd wurstmeister/zookeeper "/bin/sh -c '/usr/sb…" 6 seconds ago Up 4 seconds 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp kafka-compose_zookeeper_1_61a19213cde7
$ kafkacat -P -b localhost:9092 -t topic1
New test
^C
$ kafkacat -C -b localhost:9092 -t topic1
New test
% Reached end of topic topic1 [0] at offset 1
$ kafkacat -b localhost:9092 -L
Metadata for all topics (from broker -1: localhost:9092/bootstrap):
1 brokers:
broker 1001 at 127.0.0.1:9092
4 topics:
...
# kafkacat -b localhost:9092 -L
Metadata for all topics (from broker -1: localhost:9092/bootstrap):
1 brokers:
broker 1002 at the.ip.of.machine:9092
topic "__consumer_offsets" with 50 partitions:
partition 0, leader -1, replicas: 1001, isrs: , Broker: Leader not available
partition 1, leader -1, replicas: 1001, isrs: , Broker: Leader not available
partition 2, leader -1, replicas: 1001, isrs: , Broker: Leader not available
partition 3, leader -1, replicas: 1001, isrs: , Broker: Leader not available
partition 4, leader -1, replicas: 1001, isrs: , Broker: Leader not available
partition 5, leader -1, replicas: 1001, isrs: , Broker: Leader not available
我不应该为kafka_adveredsed_listeners设置服务器的IP吗?
您必须在环境
中设置侦听器
,以便向外部网络公开Kafka代理,如下所示:
KAFKA_LISTENERS: PLAINTEXT://:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://one.prod.com:9092
以下是示例:
https://github.com/wurstmeister/kafka-docker/blob/85821409d4d49a4edc7c5be83b68b71eceeab1bc/docker-compose-swarm.yml
您可以在这里查阅更多详细信息:https://github.com/wurstmeister/kafka-docker/wiki/connectivity
"I don't know what's wrong with my development team," the CEO thinks to himself. "Things were going so well when we started this project. For the first couple of weeks, the team cranked like crazy and
我已经通过dockerfile制作了一个图像,其中我通过“暴露22”行暴露了一个端口。 “sudo docker build-t mysql_服务器。” 在那之后,我发现我不需要这个端口。 如何关闭22端口? 编辑:@Adrian Mouat@seanmcl 图像是一个mysql。所以数据库中的数据都在我名为"cliff_mysql56"的容器中。如果我重建图像并运行它,我必须将我所有的数据从这个
我有一个kubernetes文件,如下所示: 如果我想将其公开给外界流量,因为假设我的应用程序在端口上使用prometheus公开应用程序指标...如何向外界公开该端口? 我的应用程序有以下两行代码启动需要公开的http服务器: 那是普罗米修斯服务器
我知道在linux主机系统上使用pulse audio是可能的,但是< code>paprefs是为Linux而不是mac构建的。
问题内容: 我只是通过跟随有关Udemy的教学视频开始学习Go的,我尝试按如下方式打印当前时间 我得到一个很长的文本作为输出如下 我原本希望只在其后加上a ,这应该是结尾。预期的输出如下所示,也如本教程视频中所示。但是对我来说,结果的形式要长得多。 问题是,为什么同一个命令在教师的程序和我的程序之间返回不同的格式?为什么没有设置特定的格式,不应该返回一种格式? 问题答案: 问题是,为什么同一条命令
我尝试使用mallet库运行LDA算法。当我尝试使用一组参数运行LDA时,没有问题,但使用另一组参数时,我遇到了以下错误: 我的代码如下所示: 如何捕捉由外部jar引起的异常?我听过这个问题,但它对我不起作用。知道吗? 编辑: 我的项目是一个在apache tomcat服务器上运行的restful网络服务。我试着在多普斯特函数中调用lda算法。 编辑2 Mallet是一个开源库。所以我试着阅读代码