【问题标题】:Kafka on EC2 instance for integration testingEC2 实例上的 Kafka 用于集成测试
【发布时间】:2015-09-08 10:03:35
【问题描述】:

我正在尝试为我们使用 Kafka 的部分项目设置一些集成测试。我选择使用包含 kafka 和 Zookeeper 的 spotify/kafka docker 镜像。 如果我按照该项目站点中的描述运行 kafka 容器,我可以在本地机器上运行我的测试(并且它们通过了!)。但是,当我尝试在我的 ec2 构建服务器上运行它时,容器会死掉。最后的致命错误是“INFO give up: kafka enter FATAL state, too many start retries too faster”。

我的怀疑是它不喜欢传入的地址。我尝试过同时使用 ec2 提供的公共和私有 IP 地址,但结果都一样,就像使用 localhost 一样。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 如果它对其他人有帮助,我只是遇到了这个问题,这是因为我的 t1.micro 中没有足够的内存来运行 kafka。您可以通过将--env KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" 传递给 docker run 命令来解决此问题。
  • @RossDeane 你的解决方案也对我有用。

标签: amazon-ec2 apache-kafka


【解决方案1】:

它现在神奇地起作用了,尽管我仍然在做我以前在做的事情。但是,为了帮助可能出现的其他人,我将发布我为使其正常工作所做的工作。

我创建了以下批处理文件并让 jenkins 将其作为构建步骤运行。

#!/bin/bash
if ! docker inspect -f 1 test_kafka &>/dev/null
then docker run -d --name test_kafka -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=localhost --env ADVERTISED_PORT=9092 spotify/kafka
fi

即使 localhost 解析为私有 IP 地址,它现在似乎也接受了。 if 块只是为了测试容器是否已经存在,否则重用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2019-07-23
    相关资源
    最近更新 更多