我有点绑定(双关语)。
我有一台运行kafka&的ubuntu服务器动物园管理员。该服务器安装了ipv4和ipv6协议。
在server.properties文件中,我将host.name和advertised.host.name指定为我的公共ipv4地址。
当我启动zookeeper和kafka时,kafka仍然绑定到ipv6端口。
$ netstat -l -t | grep 9092
tcp6 0 0 ferozed-linux3.mydomain:9092 [::]:* LISTEN
我在MapReduce作业中运行生产者的客户端计算机是IPv4计算机。由于服务器绑定到IPv6接口,客户端无法连接到它。
知道如何解决这个问题吗?
答案 0 :(得分:7)
从Andrey的答案开始,您可以通过添加环境变量来解决它
export KAFKA_OPTS="-Djava.net.preferIPv4Stack=True"
答案 1 :(得分:4)
如果我理解正确,您需要以下内容:
System.setProperty ("java.net.preferIPv4Stack", "true");
或
-Djava.net.preferIPv4Stack = True
在Web服务器启动脚本中工作。
你试过吗?
答案 2 :(得分:2)
添加这是kafka/bin/Kafka-run-class.sh
KAFKA_OPTS="-Djava.net.preferIPv4Stack=True"
并重启 Kafka 代理。