2015-06-22 54 views
1

我正在嘗試爲使用卡夫卡的部分項目設置一些集成測試。我已選擇使用包含kafka和Zookeeper的碼頭圖像spotify/kafka。 如果我按照該項目站點所述運行kafka容器,我可以在本地機器上運行我的測試(並且它們通過!)。當我嘗試在我的ec2構建服務器上運行它時,容器就會死亡。最後的致命錯誤是「INFO放棄:卡夫卡進入致命狀態,太多開始重試太快」。在EC2實例上進行集成測試的卡夫卡

我懷疑它不喜歡傳入的地址。我嘗試過使用ec2提供的公有和私有ip地址,但結果與本地主機一樣。

任何幫助,將不勝感激。謝謝!

+4

如果它幫助其他人,我只是有這個問題,這是因爲我的t1.micro沒有足夠的內存運行kafka。您可以通過將'--env KAFKA_HEAP_OPTS =「 - Xmx256M -Xms128M」''傳遞給docker run命令來解決此問題。 –

+0

@RossDeane你的解決方案也適用於我。 –

回答

2

即使我仍然在做我之前做的事情,它現在可以神奇地工作了。但是,爲了幫助其他可能會出現的人,我會發布我所做的工作。

我創建了以下批處理文件,讓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塊只是爲了測試容器是否已經存在,否則就重用它。