在 Kraft 模式下启动 Apache Kafka 作为 Ubuntu 上的服务

问题描述 投票:0回答:1

我正在使用这个答案中的说明将 Kafka 设置为 AWS EC2 上 Ubuntu-22.04 上的服务。我正在按照此处的说明安装 Kafka。这是我的 /etc/init.d/kafka 文件。请注意,我能够从命令行成功启动 Kafka;但是,作为一项服务,启动失败了。

KAFKA_HOME=/opt/kafka
# See how we were called.
case "$1" in
  start)
        # Start daemon.
        echo "Generate cluster UUID"
        KAFKA_CLUSTER_ID="$(${KAFKA_HOME}/bin/kafka-storage.sh random-uuid)"
        echo "Format log directories"
        ${KAFKA_HOME}/bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c ${KAFKA_HOME}/config/kraft/server.properties
        echo "Start Kafka server"
        ${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/kraft/server.properties
        ;;
  stop)
        # Stop daemons.
        echo "Shutting down Kafka";
        pid=`ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}'`
        if [ -n "$pid" ]
          then
          kill -9 $pid
        else
          echo "Kafka was not Running"
        fi
        ;;
  restart)
        $0 stop
        sleep 2
        $0 start
        ;;
  status)
        pid=`ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}'`
        if [ -n "$pid" ]
          then
          echo "Kafka is Running as PID: $pid"
        else
          echo "Kafka is not Running"
        fi
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit 0

运行时
sudo systemctl kafka start

我收到以下错误。

Job for kafka.service failed because the control process exited with error code.
See "systemctl status kafka.service" and "journalctl -xeu kafka.service" for details.

并且,
sudo systemctl kafka status

显示了这一点。

× kafka.service
     Loaded: loaded (/etc/init.d/kafka; generated)
     Active: failed (Result: exit-code) since Fri 2023-10-27 15:42:14 UTC; 2s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 8492 ExecStart=/etc/init.d/kafka start (code=exited, status=203/EXEC)
        CPU: 946us

Oct 27 15:42:14 ip-172-31-15-126 systemd[8492]: kafka.service: Failed to execute /etc/init.d/kafka: Exec format error
Oct 27 15:42:14 ip-172-31-15-126 systemd[8492]: kafka.service: Failed at step EXEC spawning /etc/init.d/kafka: Exec format error
Oct 27 15:42:14 ip-172-31-15-126 systemd[1]: Starting kafka.service...
Oct 27 15:42:14 ip-172-31-15-126 systemd[1]: kafka.service: Control process exited, code=exited, status=203/EXEC
Oct 27 15:42:14 ip-172-31-15-126 systemd[1]: kafka.service: Failed with result 'exit-code'.
Oct 27 15:42:14 ip-172-31-15-126 systemd[1]: Failed to start kafka.service.

这是我的 Java 版本 - 如果有帮助的话。

java -version openjdk version "19.0.2" 2023-01-17 OpenJDK Runtime Environment (build 19.0.2+7-Ubuntu-0ubuntu322.04) OpenJDK 64-Bit Server VM (build 19.0.2+7-Ubuntu-0ubuntu322.04, mixed mode, sharing)

请让我知道如何将 Kafka 作为服务启动。

java ubuntu amazon-ec2 apache-kafka service
1个回答
0
投票
shebang

放在启动 shell 脚本的顶部可能会修复此错误。如果它不能修复错误,您可以检查journalctl,如此处所述,这也可能与 systemd 配置有关,在这种情况下,我建议创建一个类似 this 的服务文件

为什么我们使用shebang

,在show中告诉linux系统使用bash来运行文件中“下面”的代码很重要。 下面的工作代码

#!/bin/bash KAFKA_HOME=/opt/kafka # See how we were called. case "$1" in start) # Start daemon. echo "Generate cluster UUID" KAFKA_CLUSTER_ID="$(${KAFKA_HOME}/bin/kafka-storage.sh random-uuid)" echo "Format log directories" ${KAFKA_HOME}/bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c ${KAFKA_HOME}/config/kraft/server.properties echo "Start Kafka server" ${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/kraft/server.properties ;; stop) # Stop daemons. echo "Shutting down Kafka"; pid=`ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}'` if [ -n "$pid" ] then kill -9 $pid else echo "Kafka was not Running" fi ;; restart) $0 stop sleep 2 $0 start ;; status) pid=`ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}'` if [ -n "$pid" ] then echo "Kafka is Running as PID: $pid" else echo "Kafka is not Running" fi ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0

© www.soinside.com 2019 - 2024. All rights reserved.