无法在 openwhisk 设置中列出 kafka 主题

Unable to list kafka topics in openwhisk setup

设置详情: 我正在本地 ubuntu(16.04) 虚拟机上设置 openwhisk。在此设置中,kafka 在一个 docker 中是 运行,在另一个 docker.

中是 zookeeper

我使用 cmd

连接到 kafka docker
sudo docker exec -it <container id> sh

连接后,我执行以下命令以获取主题列表

bin/kafka-topics.sh --list --zookeeper localhost:2181

这给了我一个例外

Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 7203; nested exception is:
        java.net.BindException: Address already in use

我无法理解为什么要使用 7203 端口?

docker ps 输出

83eba3961247        ches/kafka:0.10.0.1              "/start.sh"              
11 days ago         Up 23 hours         7203/tcp, 0.0.0.0:9092->9092/tcp                                                                                                                       
kafka
947fa689a7ef        zookeeper:3.4                    "/docker-
entrypoin..."   11 days ago         Up 23 hours         2888/tcp, 
0.0.0.0:2181->2181/tcp, 3888/tcp                                                                                                             zookeeper

Kafka container OpenWhisk is using默认设置一个JMX_PORT。那就是您看到的 7203 端口。要让您的脚本工作,您需要取消设置该环境设置:

unset JMX_PORT; bin/kafka-topics.sh --list --zookeeper localhost:2181

但请注意,localhost 不是您的 zookeeper 实例的有效地址,因为它指的是当前容器的本地主机,而不是 Zookeeper。如果您将 localhost 与 VM 的外部 IP 或 zookeeper 容器的 IP 交换(通过 docker inspect zookeeper --format {{.NetworkSettings.Networks.bridge.IPAddress}} 获取),您的主题应该可以正常列出。