EC2 实例上的 Kafka 用于集成测试
Kafka on EC2 instance for integration testing
我正在尝试为我们使用 Kafka 的项目的一部分设置一些集成测试。我选择使用包含 kafka 和 Zookeeper 的 spotify/kafka docker 图像。
如果我 运行 kafka 容器如该项目站点所述,我可以在本地机器上 运行 我的测试(并且它们通过了!)。然而,当我尝试在我的 ec2 构建服务器上 运行 它时,容器死了。最后的致命错误是“INFO gave up: kafka entered FATAL state, too many start retries too quickly”.
我怀疑它不喜欢传入的地址。我试过同时使用 public 和 ec2 提供的私有 ip 地址,但结果都是一样的,只是与本地主机一样。
如有任何帮助,我们将不胜感激。谢谢!
它现在神奇地起作用了,即使我仍然在做我以前所做的事情。但是,为了帮助其他可能出现的人,我会 post 我所做的一切让它发挥作用。
我创建了以下批处理文件,并让 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 块只是为了测试容器是否已经存在并在其他情况下重用它。
我正在尝试为我们使用 Kafka 的项目的一部分设置一些集成测试。我选择使用包含 kafka 和 Zookeeper 的 spotify/kafka docker 图像。 如果我 运行 kafka 容器如该项目站点所述,我可以在本地机器上 运行 我的测试(并且它们通过了!)。然而,当我尝试在我的 ec2 构建服务器上 运行 它时,容器死了。最后的致命错误是“INFO gave up: kafka entered FATAL state, too many start retries too quickly”.
我怀疑它不喜欢传入的地址。我试过同时使用 public 和 ec2 提供的私有 ip 地址,但结果都是一样的,只是与本地主机一样。
如有任何帮助,我们将不胜感激。谢谢!
它现在神奇地起作用了,即使我仍然在做我以前所做的事情。但是,为了帮助其他可能出现的人,我会 post 我所做的一切让它发挥作用。
我创建了以下批处理文件,并让 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 块只是为了测试容器是否已经存在并在其他情况下重用它。