Amazon ec2 用于集成测试的EC2实例上的Kafka

Amazon ec2 用于集成测试的EC2实例上的Kafka,amazon-ec2,apache-kafka,Amazon Ec2,Apache Kafka,我正在尝试为我们项目中使用Kafka的部分设置一些集成测试。我选择使用docker图像,其中包含kafka和Zookeeper。 我可以在本地机器上运行我的测试(并且它们通过了!),如果我在那个项目站点上运行kafka容器的话。然而,当我尝试在我的ec2构建服务器上运行它时,容器就死了。最后一个致命错误是“信息放弃:卡夫卡进入致命状态,太多启动重试太快” 我怀疑它不喜欢传入的地址。我尝试使用ec2提供的公共和私有ip地址,但结果都是一样的,就像使用localhost一样 任何帮助都将不胜感激。谢

我正在尝试为我们项目中使用Kafka的部分设置一些集成测试。我选择使用docker图像,其中包含kafka和Zookeeper。 我可以在本地机器上运行我的测试(并且它们通过了!),如果我在那个项目站点上运行kafka容器的话。然而,当我尝试在我的ec2构建服务器上运行它时,容器就死了。最后一个致命错误是“信息放弃:卡夫卡进入致命状态,太多启动重试太快”

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


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

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

我创建了以下批处理文件,并让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

即使本地主机解析为私有ip地址,它似乎现在就接受了。if块只是为了测试容器是否已经存在,并以其他方式重用它。

如果它对其他人有帮助,我就遇到了这个问题,这是因为我的t1.micro中没有足够的内存来运行kafka。您可以通过将
--env KAFKA_HEAP\u OPTS=“-Xmx256M-Xms128M”
传递给docker run命令来修复此问题。@RossDeane您的解决方案也对我有效。