【问题标题】:Starting Kafka Server Permanently永久启动 Kafka 服务器
【发布时间】:2013-01-30 06:18:44
【问题描述】:

我已经在 Amazon EC2 实例上设置了 Kafka。

我按以下顺序执行了以下操作: (1) SSH进入Instance (2) 启动 Zookeper (3) 启动卡夫卡 (4) 执行生产者和消费者程序。

到这里为止一切正常。但是,一旦我关闭启动 Kafka 的 SSH 窗口,Kafka 服务就会停止。我无法再执行生产者和消费者程序。

即使在我关闭 SSH 窗口之后,如何让 Kafka 服务器永久地处理所有请求。

谢谢。

【问题讨论】:

    标签: amazon-ec2 apache-zookeeper apache-kafka


    【解决方案1】:

    这现在在 kafka 和 zookeeper 启动脚本中得到正式支持。因此,如果您使用的是最新的(自 2015 年 8 月以来)kafka,您可以使用 -daemon,如下所示。

    # ./kafka-server-start.sh
    USAGE: ./kafka-server-start.sh [-daemon] server.properties
    
    # ./zookeeper-server-start.sh
    USAGE: ./zookeeper-server-start.sh [-daemon] zookeeper.properties
    

    【讨论】:

    • @NikeshDevaki,-daemon 是你现在应该使用的,因为 kafka 直接支持它。
    • 这在 Windows 上不起作用(使用 .bat 文件启动 ZK、Kafka)
    • 有没有办法让日志在初始化时显示? -daemon 标志似乎隐藏了所有这些,因此更难解决潜在的启动异常。
    【解决方案2】:

    试试bin/kafka-server-start.sh -daemon config/server.properties.

    或者:

    在这里尝试新贵脚本:upstart script for kafka

    【讨论】:

    • 不知道为什么这么少的人赞成我的回答,但下面的一个....没有太大区别
    • 以上shell执行后,如何查看是否已经运行?
    • 如果没有必要,如何停止 zookeeper 和 Kafka?
    【解决方案3】:

    nohup 在命令开头是必需的,因此输出不在屏幕上,而是在文件中。在命令结束时还需要& 才能在后台启动服务器:

    bin/zookeeper-server-start.sh config/zookeeper.properties

    bin/kafka-server-start.sh config/server.properties

    将变为:

    nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

    nohup bin/kafka-server-start.sh config/server.properties &

    【讨论】:

    • 现在使用-daemon 开关是更好的选择
    • @kopos 你能详细说明为什么会这样吗?