РЕШИТЬ! спасибо, ребята, я собираюсь обновить правильный конфиг для работы.
Я пытаюсь сделать свой первый микросервис с помощью spring-boot, kafka и zookeeper через docker-compose. Я иду по стопам 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 и micro service нормально работают в своих контейнерах:
$: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 репо ветвь разработки
Файл 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:
файл 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: запускаю и запускаю локально 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, но исключение все равно происходит.