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? Follow asked Sep 12 '15 at 0:13

6,70266 gold badges3535 silver badges5151 bronze badges
3 Answers 10
Starting from Andrey's answer, you can solve it just by adding an environment variable
export KAFKA_OPTS="-Djava.net.preferIPv4Stack=True"
Follow answered Oct 17 '17 at 7:18

30722 silver badges55 bronze badges
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? Follow answered Sep 12 '15 at 1:19

46733 silver badges1717 bronze badges
Add this is kafka/bin/Kafka-run-class.sh
KAFKA_OPTS="-Djava.net.preferIPv4Stack=True"
And restart Kafka broker.