这个问题是地址解析的错误,在确保了zookeeper集群配置正确的情况下可以尝试更换java版本。在笔者这边的服务器上这个bug的原因在于使用的jdk版本不对,我这边使用的java版本是java17,更换为java8之后成功解决这个问题。
附带更换java版本的方法。
$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 auto mode
1 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode
* 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press <enter> to keep the current choice[*], or type selection number:
选择指定的版本即可。
另外需要注意的是上述的办法没有修改JAVA_HOME的值,而kafka会先通过环境变量的办法去读取java路径,这导致可能java --version
的结果是java8,但是JAVA_HOME没有设置为java8从而造成kafka无法正确启动,解决办法是直接重置JAVA_HOME。
unset JAVA_HOME
ps:后续如果有需要设置JAVA_HOME的可以在通过
export JAVA_HOME=/path/to/java
这里的路径应该是bin的父文件夹,比如笔者的服务器上对应的路径就是/usr/lib/jvm/java-17-openjdk-amd64
这种办法设置的变量在关闭终端之后就会被清楚,可以直接写到.bashrc
或者.profile
里面,正常来说这两个文件都在用户目录下有,将代码写入之后执行即可
source .bashrc
附带:
kafka自带的zookeeper的配置文件少了很多东西修改config//zookeeper.properties
即可
# limitations under the License.
# the directory where the snapshot is stored.
dataDir=/path/you/define
dataLogDir=/path/you/define
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
server.x=x.x.x.x:2888:4888
后台启动的命令是这样的
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper.log &
kafka的也可以后台启动
nohup bin/kafka-server-start.sh config/server.properties > kafka-server.log 2>&1 &
nohub的作用是关闭终端之后进程还可以进行,&的作用是把进程后台运行,从而不阻塞命令行
另外还有一个关于kafka的常见问题就是配置的broker的id和之前留下的id不对,在配置的logdirs里面找找meta.properties然后修改下broker的id就好