无法从 docker 中的服务 运行 向 kafka 生成消息
Cannot produce message to kafka from service running in docker
我在端口 5000 上的 docker 容器中有一个休息服务 运行,用于从 docker 容器中通过 kafka 主题 运行 生成消息。
我已使用以下属性配置我的生产者客户端:-
bootstrap.servers=localhost:9093
并且我已经使用以下命令启动了我的容器:-
docker run -d -p 127.0.0.1:5000:5000 <contained id>
我还进行了以下配置以通告 kafka 主机和端口
advertised.host.name=localhost
advertised.port=9093
尽管在我尝试生成 kafka 主题时进行了所有配置,但我还是遇到了以下错误:-
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
有人可以指出实际问题出在哪里吗?
在现实生活中,advertised.host.name
永远不应该是 localhost
。
在您的情况下,您 运行 您的 Docker 容器处于桥接网络模式,因此它将无法通过 localhost
到达代理,因为它将指向容器网络,而不是主机。
要使其正常工作,您应该将 advertised.host.name
和 bootstrap.servers
设置为 ifconfig docker0
返回的 IP 地址(在您的情况下可能不是 docker0,但您明白了)。
或者,您可能 运行 您的容器 --net=host
,但我认为您最好正确配置广告主机名。
我在端口 5000 上的 docker 容器中有一个休息服务 运行,用于从 docker 容器中通过 kafka 主题 运行 生成消息。
我已使用以下属性配置我的生产者客户端:-
bootstrap.servers=localhost:9093
并且我已经使用以下命令启动了我的容器:-
docker run -d -p 127.0.0.1:5000:5000 <contained id>
我还进行了以下配置以通告 kafka 主机和端口
advertised.host.name=localhost
advertised.port=9093
尽管在我尝试生成 kafka 主题时进行了所有配置,但我还是遇到了以下错误:-
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
有人可以指出实际问题出在哪里吗?
在现实生活中,advertised.host.name
永远不应该是 localhost
。
在您的情况下,您 运行 您的 Docker 容器处于桥接网络模式,因此它将无法通过 localhost
到达代理,因为它将指向容器网络,而不是主机。
要使其正常工作,您应该将 advertised.host.name
和 bootstrap.servers
设置为 ifconfig docker0
返回的 IP 地址(在您的情况下可能不是 docker0,但您明白了)。
或者,您可能 运行 您的容器 --net=host
,但我认为您最好正确配置广告主机名。