【问题标题】:Not able to start Kafka-Connect as a service on CentOS 7无法在 CentOS 7 上启动 Kafka-Connect 作为服务
【发布时间】:2018-10-19 10:14:01
【问题描述】:

我有一个 Kafka 环境(Zookeeper + Kafka Server + Kafka-Connect),当我使用命令行在 CentOS 7 上启动每个单独的组件时,它运行完美。

现在我正在设置这些 Kafka 组件以作为服务运行。为此,我创建了 .service 文件并将其放在 /etc/systemd/system 文件夹中。以下是文件

zookeeper.service

#!/bin/bash
# vi /etc/systemd/system/zookeeper.service
[Unit]
Description=This service will start Zookeeper server which will be used by Kafka Server. 
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/opt/interactcrm/kafka_2.11-1.0.1/bin/zookeeper-server-start.sh /opt/interactcrm/kafka_2.11-1.0.1/config/zookeeper.properties
ExecStop=/opt/interactcrm/kafka_2.11-1.0.1/bin/zookeeper-server-stop.sh
TimeoutStartSec=0
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

kafka.service

#!/bin/bash
# vi /etc/systemd/system/kafka.service
[Unit]
Description=This service will start Kafka server. 
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
ExecStart=/opt/interactcrm/kafka_2.11-1.0.1/bin/kafka-server-start.sh /opt/interactcrm/kafka_2.11-1.0.1/config/server.properties
ExecStop=/opt/interactcrm/kafka_2.11-1.0.1/bin/kafka-server-stop.sh
TimeoutStartSec=0
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Kafka-connect.service

#!/bin/bash
# vi /etc/systemd/system/kafkaconnect.service
[Unit]
Description=This service will start Kafka Connect Service. 
Requires=network.target remote-fs.target nss-lookup.target kafka.service kafka.service
After=network.target remote-fs.target nss-lookup.target kafka.service 


[Service]
Type=forking
Environment="KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10040 -Dcom.sun.management.jmxremote.local.only=true -Dcom.sun.management.jmxremote.authenticate=false"
Environment="LOG_DIR=/var/log/kafka-logs"
ExecStart=/opt/interactcrm/kafka_2.11-1.0.1/bin/connect-distributed.sh /opt/interactcrm/kafka_2.11-1.0.1/config/connect-distributed.properties
TimeoutStartSec=1000
#Restart=on-abnormal
#SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

Zookeeper 和 Kafka 服务启动时没有任何问题。我可以创建主题,然后对主题进行操作。问题在于 Kafka 连接服务。

当我尝试使用 systemctl 命令启动服务时,服务没有启动。它卡住没有以下日志::

Oct 19 18:29:20 localhost.localdomain connect-distributed.sh[1071]: [2018-10-19 18:29:20,713] INFO Added plugin 'io.debezium.connector.mysql.MySqlConnector...er:136)
Oct 19 18:29:20 localhost.localdomain connect-distributed.sh[1071]: [2018-10-19 18:29:20,713] INFO Added plugin 'io.debezium.transforms.ByLogicalTableRoute...er:136)
Oct 19 18:29:20 localhost.localdomain connect-distributed.sh[1071]: [2018-10-19 18:29:20,713] INFO Added plugin 'io.debezium.transforms.UnwrapFromEnvelope'...er:136)
Oct 19 18:29:20 localhost.localdomain connect-distributed.sh[1071]: [2018-10-19 18:29:20,761] INFO Loading plugin from: /opt/interactcrm/debezium/debezium ...er:184)
Oct 19 18:29:28 localhost.localdomain connect-distributed.sh[1071]: [2018-10-19 18:29:28,725] INFO Registered loader: PluginClassLoader{pluginLocation=file...er:207)

我在此行之后的消息日志中找不到此进程的任何日志,并且在任何其他日志中都没有错误。进程卡在这一行 ::

INFO 注册的加载器:PluginClassLoader{pluginLocation=file...er:207)

无论我增加多少超时,这个过程都不​​会开始。但是当我从命令行运行相同的命令时,服务会正常启动。

我试图从插件路径中删除所有连接器以查看服务是否启动,但它卡在同一行。

以下是我的参考点::

Kafka-Connect Service

【问题讨论】:

  • 不清楚为什么不使用 Confluent OSS 提供的 systemd 文件(安装 YUM 后)
  • @cricket_007 是的,这可以解决问题。但是我仍然不知道为什么这个脚本不起作用!
  • 您可以访问 Connect 服务器的/connector-plugins 吗?顺便说一句,你不应该在同一台机器上运行 Connect、Zookeeper 和 Kafka

标签: apache-kafka centos7 apache-zookeeper systemd apache-kafka-connect


【解决方案1】:

我在 Debain 9 上遇到了同样的问题。弄清楚这是因为该服务需要 WorkingDirectory 否则 kafka-connect 永远不会充满电。

所以你的服务应该是这样的:

#!/bin/bash
# vi /etc/systemd/system/kafkaconnect.service
[Unit]
Description=This service will start Kafka Connect Service. 
Requires=network.target remote-fs.target nss-lookup.target kafka.service kafka.service
After=network.target remote-fs.target nss-lookup.target kafka.service 


[Service]
Type=forking
Environment="KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10040 -Dcom.sun.management.jmxremote.local.only=true -Dcom.sun.management.jmxremote.authenticate=false"
Environment="LOG_DIR=/var/log/kafka-logs"
WorkingDirectory="/opt/interactcrm/kafka_2.11-1.0.1" <--- or whatever directory you to use
ExecStart=/opt/interactcrm/kafka_2.11-1.0.1/bin/connect-distributed.sh /opt/interactcrm/kafka_2.11-1.0.1/config/connect-distributed.properties
TimeoutStartSec=1000
#Restart=on-abnormal
#SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

【讨论】:

    【解决方案2】:

    ** 下面的配置在 Ubuntu 中对我有用 **

    [单位]
    需要=kafka.service
    After=kafka.service

    [服务]
    类型=简单
    用户=kafka
    ExecStart=/bin/sh -c '/home/kafka/kafka/bin/connect-distributed.sh /home/kafka/kafka/config/connect-distributed.properties > /home/kafka/kafka/kafka_connect.log 2> &1'
    重启=on-abnormal

    [安装]
    WantedBy=multi-user.target

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 2015-07-22
      • 1970-01-01
      • 2016-05-31
      • 2017-01-29
      • 2019-02-08
      相关资源
      最近更新 更多