【发布时间】:2021-03-05 19:44:14
【问题描述】:
我有 python 应用程序,它与消耗 kafka 的 docker 容器一起运行,我也在我的主机上运行 kafka,我手动运行 kafka 而不是从 docker。
当我运行我的 python 应用程序容器时,它不会从主机连接到 kafka,我使用以下命令运行它:
docker run -d --network="host" --name myptm-rating -p 8002:8002 myptm-rating-command
我设置了--network 标志以将我的应用程序与主机连接。
这是我的消费者配置(我使用 confluent kafka 包):
consumer_conf = {
'bootstrap.servers': 'localhost:9092',
}
然后我看到容器日志,它显示错误:
[2020-11-23 04:09:44 +0000] [10] [INFO] Starting gunicorn 20.0.4
[2020-11-23 04:09:44 +0000] [10] [INFO] Listening at: http://0.0.0.0:8002 (10)
[2020-11-23 04:09:44 +0000] [10] [INFO] Using worker: uvicorn.workers.UvicornWorker
[2020-11-23 04:09:44 +0000] [13] [INFO] Booting worker with pid: 13
[2020-11-23 04:09:44 +0000] [14] [INFO] Booting worker with pid: 14
[2020-11-23 04:09:44 +0000] [15] [INFO] Booting worker with pid: 15
%3|1606104584.818|FAIL|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv6#[::1]:9092 failed: Connection refused (after 0ms in state CONNECT)
INFO:src.utils.kafka_client:Start kafka consumer...
%3|1606104584.826|FAIL|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv6#[::1]:9092 failed: Connection refused (after 0ms in state CONNECT)
%3|1606104584.827|FAIL|rdkafka#consumer-2| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)
[2020-11-23 04:09:44 +0000] [13] [INFO] Started server process [13]
[2020-11-23 04:09:44 +0000] [13] [INFO] Waiting for application startup.
[2020-11-23 04:09:44 +0000] [13] [INFO] Application startup complete.
INFO:src.utils.kafka_client:Start kafka consumer...
%3|1606104584.841|FAIL|rdkafka#consumer-2| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)
%3|1606104584.845|FAIL|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)
INFO:src.utils.kafka_client:Start kafka consumer...
%3|1606104584.849|FAIL|rdkafka#consumer-2| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)
[2020-11-23 04:09:44 +0000] [14] [INFO] Started server process [14]
[2020-11-23 04:09:44 +0000] [14] [INFO] Waiting for application startup.
[2020-11-23 04:09:44 +0000] [14] [INFO] Application startup complete.
[2020-11-23 04:09:44 +0000] [15] [INFO] Started server process [15]
[2020-11-23 04:09:44 +0000] [15] [INFO] Waiting for application startup.
[2020-11-23 04:09:44 +0000] [15] [INFO] Application startup complete.
%3|1606104585.819|FAIL|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv6#[::1]:9092 failed: Connection refused (after 0ms in state CONNECT, 1 identical error(s) suppressed)
【问题讨论】:
-
你正在从容器中打开 8002 端口,但 kafka 在 9092 端口对吗?
-
8002 是我的 python 应用程序端口 @OneRaynyDay 不是 kafka
-
docker 配置反过来工作。您试图从容器连接到主机吗?根据您的 docker 网络配置,您可能可以指向主机,如下所述:stackoverflow.com/questions/24319662/… 或者,您可以确保可以从公共固定 IP 地址或域名访问主机上的 Kafka。
标签: python docker apache-kafka