1) Необходимо проверить переменную JAVAHOME
для демона Kafka
<cli>
root@kafka-server ~ # echo $JAVAHOME
/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el79.x8664
</cli>
2) Убедится, что путь до домашнего каталога JAVA корректный
<cli>
root@kafka-server ~ # ls -la $JAVAHOME
ls: cannot access /usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el79.x8664: No such file or directory
</cli>
3) Проверить, какие версии JAVA установлены в каталоге
/usr/lib/jvm
<cli>
root@kafka-server ~ # ls -la /usr/lib/jvm
total 4
drwxr-xr-x 4 root root 223 May 20 00:12 .
dr-xr-xr-x. 39 root root 4096 Sep 15 2021 ..
drwxr-xr-x 6 root root 68 May 20 00:11 java-11-openjdk-11.0.18.0.10-1.el79.x8664
lrwxrwxrwx 1 root root 21 May 20 00:12 jre → /etc/alternatives/jre
lrwxrwxrwx 1 root root 24 May 20 00:12 jre-11 → /etc/alternatives/jre11
lrwxrwxrwx 1 root root 32 May 20 00:12 jre-11-openjdk → /etc/alternatives/jre11openjdk
lrwxrwxrwx 1 root root 43 May 20 00:11 jre-11-openjdk-11.0.18.0.10-1.el79.x8664 → java-11-openjdk-11.0.18.0.10-1.el79.x8664
lrwxrwxrwx 1 root root 29 May 20 00:12 jre-openjdk → /etc/alternatives/jreopenjdk
</cli>
4) Проверить переменную
JAVAHOME/etc/systemd/system/kafka.service.conf
root@kafka-server ~ # cat /etc/systemd/system/kafka.service.conf JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el7_9.x86_64 KAFKA_OPTS=\ -Djdk.tls.rejectClientInitiatedRenegotiation=true \ -Djsse.enableMFLNExtension=false \ -XX:+UseAES \ -Djdk.tls.server.protocols=TLSv1.3,TLSv1.2 \ -Djdk.tls.server.cipherSuites=TLS_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 \ # -Djsse.SSLEngine.acceptLargeFragments=true \ #JMX_PORT=1979 #KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl.need.client.auth=true -Dcom.sun.management.jmxremote.registry.ssl=true -Dcom.sun.management.jmxremote.authenticate=false"
Как видно из результата, конфигурация содержит не корректный путь до JAVA_HOME
.
Так как директория /usr/lib/jvm/jre
является символической ссылкой до корректной версии, и она обезличена, то лучше использовать путь /usr/lib/jvm/jre
, чтобы избежать проблем в работе сервиса при обновлении JAVA.
5) Устанавливаем корректную переменную для JAVAHOME
в файле конфигурации демона Kafka
/etc/systemd/system/kafka.service.conf''
<cli>
root@kafka-server ~ # cat /etc/systemd/system/kafka.service.conf
JAVAHOME=/usr/lib/jvm/jre
KAFKAOPTS=\
-Djdk.tls.rejectClientInitiatedRenegotiation=true \
-Djsse.enableMFLNExtension=false \
-XX:+UseAES \
-Djdk.tls.server.protocols=TLSv1.3,TLSv1.2 \
-Djdk.tls.server.cipherSuites=TLSAES128GCMSHA256,TLSRSAWITHAES128GCMSHA256,TLSECDHERSAWITHAES128GCMSHA256 \
# -Djsse.SSLEngine.acceptLargeFragments=true \
#JMXPORT=1979
#KAFKAJMX_OPTS=«-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl.need.client.auth=true -Dcom.sun.management.jmxremote.registry.ssl=true -Dcom.sun.management.jmxremote.authenticate=false»
</cli>
6) Запускаем и проверяем сервис
<cli>
root@kafka-server ~ # systemctl start kafka
root@kafka-server ~ # systemctl status kafka
● kafka.service - Apache Kafka
Loaded: loaded (/etc/systemd/system/kafka.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-05-24 10:41:47 MSK; 2h 44min ago
Main PID: 22021 (java)
CGroup: /system.slice/kafka.service
└─22021 /usr/lib/jvm/jre/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:Initiatin…
</cli>