【发布时间】:2018-10-19 13:49:32
【问题描述】:
已解决!谢谢你们,我要更新正确的配置才能工作。
我正在尝试通过 docker-compose 使用 spring-boot、kafka 和 zookeeper 来做我的第一个微服务。我正在追随https://docs.docker.com/compose/gettingstarted/的脚步 但是当我尝试使用 docker-compose up 命令提升服务时,我遇到了一个异常:
demo-quartz_1 | web - 2018-05-09 14:57:48,824 [scheduler_Worker-2] INFO c.a.d.service.SampleJobService - created entity...
demo-quartz_1 | web - 2018-05-09 14:57:48,824 [scheduler_Worker-2] INFO c.a.d.service.SampleJobService - BitcoinEuroEntity [idBCEntity=8, id=bitcoin, name=Bitcoin, symbol=BTC, rank=1, priceUsd=9299.31, priceBtc=1.0, _24hVolumeUsd=7170100000.0, marketCapUsd=158311453440, availableSupply=17024000.0, totalSupply=17024000.0, maxSupply=21000000.0, percentChange1h=0.05, percentChange24h=1.36, percentChange7d=1.7, lastUpdated=1525877672, priceEur=7830.80946135, _24hVolumeEur=6037833658.5, marketCapEur=133311700270]
demo-quartz_1 | web - 2018-05-09 14:58:38,868 [scheduler_Worker-1] ERROR o.s.k.s.LoggingProducerListener - Exception thrown when sending a message with key='null' and payload='BitcoinEuroKafkaEntity [id=bitcoin, name=Bitcoin, symbol=BTC, rank=1, priceUsd=9299.31, priceBtc=1.0...' to topic aironman:
demo-quartz_1 | org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
我可以看到 zookeeper、kafka 和微服务容器在它们的容器中运行良好:
$:demo-quartz aironman$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f9201046956c wurstmeister/kafka "start-kafka.sh" 7 minutes ago Up 6 minutes 0.0.0.0:9092->9092/tcp demo-quartz_kafka_1
386270f126da aironman/demo-quartz:0.0.1-SNAPSHOT "/usr/bin/java -jar …" 7 minutes ago Up 6 minutes demo-quartz_demo-quartz_1
ac1df2c6429d wurstmeister/zookeeper "/bin/sh -c '/usr/sb…" 7 minutes ago Up 6 minutes 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp demo-quartz_zookeeper_1
这是GitHub repodevelop 分支
Docker 文件如下所示:
FROM openjdk:8-jre
ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/aironman/demo-quartz.jar"]
ARG JAR_FILE
ADD target/${JAR_FILE} /usr/share/aironman/demo-quartz.jar
Docker-compose.yml 文件看起来像:
version: '3.6'
services:
demo-quartz:
image: aironman/demo-quartz:0.0.1-SNAPSHOT
deploy:
replicas: 5
resources:
limits:
cpus: "0.5"
memory: 512M
restart_policy:
condition: on-failure
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
volumes:
- /var/run/docker.sock:/var/run/docker.sock
这是 docker-compose up 命令完整输出的link:
微服务的application.properties文件如下:
using.spring.schedulerFactory=true
kafka.bootstrapAddress=kafka:9092
message.topic.name=aironman
greeting.topic.name=greeting
filtered.topic.name=filtered
partitioned.topic.name=partitioned
我一直在查看 stackoverflow 中存在类似问题的其他线程,但它们都没有帮助我通过提升微服务以及 zookeeper 和 kafka 相互交谈来解决问题。
看起来微服务无法与kafka通信而zookeeper不能,因为docker-compose运行容器但微服务容器无法相互通信。如果我使用 mvn spring-boot:run 在本地运行该进程并在本地运行 zookeeper 和 kafka,它工作正常,我可以将消息推送到主题中。
您能指导我找到正确的解决方案吗?
谢谢大家,我学到了很多!
:demo-quartz aironman$ docker exec -it 693ab89a26fb /bin/sh
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:13:00:03
inet addr:172.19.0.3 Bcast:172.19.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:227 errors:0 dropped:0 overruns:0 frame:0
TX packets:390 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:20677 (20.1 KiB) TX bytes:30809 (30.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:590 (590.0 B) TX bytes:590 (590.0 B)
/ # ping 172.19.0.2
PING 172.19.0.2 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.190 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.167 ms
64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.121 ms
64 bytes from 172.19.0.2: seq=3 ttl=64 time=0.173 ms
64 bytes from 172.19.0.2: seq=4 ttl=64 time=0.173 ms
^C
--- 172.19.0.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.121/0.164/0.190 ms
/ #
/ #
/ #
/ # kafka-topics.sh --list --zookeeper 172.19.0.2:2181
/ # kafka-topics.sh --create --zookeeper 172.19.0.2:2181 --replication-factor 1
--partitions 1 --topic aironman
Created topic "aironman".
/ # kafka-topics.sh --list --zookeeper 172.19.0.2:2181
aironman
可以看到主题是在kafka broker中创建的,但是还是会出现异常。
【问题讨论】:
标签: docker spring-boot apache-kafka docker-compose