kafka binding to ipv6 port even though ipv4 address specified in config
I am in a bit of a bind (pun intended).
I have a ubuntu server running kafka & zookeeper. This server has both ipv4 and ipv6 protocols installed.
In the server.properties file, I specified the host.name and advertised.host.name as my public ipv4 address.
When I start zookeeper and kafka, kafka still binds to ipv6 port.
$ netstat -l -t | grep 9092
tcp6 0 0 ferozed-linux3.mydomain:9092 [::]:* LISTEN
The client machine from which I am running a producer in a MapReduce job, is an IPv4 machine. Due to the fact that the server is binding to an IPv6 interface, the client is unable to connect to it.
Any idea how I can fix this?
Starting from Andrey's answer, you can solve it just by adding an environment variable
export KAFKA_OPTS="-Djava.net.preferIPv4Stack=True"
If I understand you correctly, you need the following:
System.setProperty ("java.net.preferIPv4Stack", "true");
in the code, or
-Djava.net.preferIPv4Stack = True
in the web server startup script worked.
Did you try it?
Add this is kafka/bin/Kafka-run-class.sh
KAFKA_OPTS="-Djava.net.preferIPv4Stack=True"
And restart Kafka broker.