常见问题的解决办法

首先检查 Kafka 配置文件 server.properties

root@chen_unubtu18:/home/chen# vim  ./kafka_2.11-1.1.0/config/server.properties

找到 listenersadvertised.listeners 配置项:

# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
#listeners=PLAINTEXT://your.host.name:9092

# Hostname and port the broker will advertise to producers and consumers. If not set, 
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
#advertised.listeners=PLAINTEXT://your.host.name:9092

你可能会好奇为什么需要 advertised.listeners,为什么不合并到一起?假设你的 Kafka broker 位于代理后面。所有的 kafka 客户端都必须通过代理才能连接到broker。那么在这种情况下,就需要设置advertised.listeners为代理的地址。

解决办法

对于在公司内网环境部署的Kafka,可以修改 listeners 将其绑定到服务器的IP地址:

listeners=PLAINTEXT://192.168.31.253:9092
然后使用Kafka Assistant进行连接。

如果Kafka部署在云平台上,区分内网IP和公网IP,需要这样配置:

listeners=PLAINTEXT://${内网IP}:9092
advertised.listeners=PLAINTEXT://${公网IP}:9092
最后使用Kafka Assistant进行连接:


如果你不被允许使用IP进行连接。可以修改Windows上的hosts文件(位置:C:\Windows\System32\drivers\etc\hosts),添加域名到IP地址的映射:

192.168.31.253 chen_unubtu18
这里,我的Kafka服务器地址和域名分别为:192.168.31.253, chen_unubtu18,最后使用Kafka Assistant进行连接: