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

标签 amazon-ec2 apache-kafka

我正在尝试为我们使用 Kafka 的项目的一部分设置一些集成测试。我选择使用spotify/kafka包含 kafka 和 Zookeeper 的 docker 镜像。 如果我按照该项目站点所述运行 kafka 容器,我可以在本地计算机上运行我的测试(并且它们通过了!)。然而,当我尝试在我的 ec2 构建服务器上运行它时,容器崩溃了。最后的 fatal error 是“INFO放弃:kafka进入FATAL状态,太多启动重试太快”。

我怀疑它不喜欢传入的地址。我尝试使用 ec2 提供的公共(public)和私有(private) 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

尽管本地主机解析为私有(private) IP 地址,但它现在似乎已经接受了。 if block 只是测试容器是否已经存在,否则重用它。

关于amazon-ec2 - EC2 实例上的 Kafka 用于集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30988668/

相关文章:

node.js - Kafka(kafka-node)消费者组接收来自所有分区的消息

java - Amazon Ec2 FTP 写入权限

python - 显示 ec2.describe.instance.status 的参数

shell - 连接到 AWS 时 SSH 卡住

java - 使用 Kafka Streams 进行自定义转换

spring - Kafka 生产者 JSON 序列化

amazon-web-services - Cloudformation 获取图像 ID

email - 如何在 Amazon EC2 上使用自己的域设置电子邮件转发?

apache-kafka - Apache Kafka - bootstrap.servers 中 url 的 DNS 解析失败(无法构建 kafka 生产者)

java - KafkaConsumer.commitSync() 实际提交了什么?