докер-рой весенний бут с Kafka в одной стеке других сервисов, проблема с отсутствием разрешаемых URL-адресов загрузки, указанных в bootstrap.servers

Вопрос или проблема

Я создал стек docker swarm. В стеке два сервиса: приложение springboot3 и kafka.

Я использовал последний образ docker apache/kafka.

введите описание изображения здесь

Это мой compose.yml, дополнительно, kafka и приложение springboot находятся в одной оверлейной сети.

Когда приложение springboot запускается, возникает ошибка, связанная с отсутствием разрешаемых URL-адресов bootstrap в bootstrap.servers.

введите описание изображения здесь

Поскольку я знаю, swarm использует DNS по имени сервиса.

В образе springboot я пытаюсь подключиться к kafka-1:29092. (Я выполнил “docker run -it –network ams myapp:4b9ecffa /bin/bash”, я имею в виду, что это та же сеть).

Соединение было установлено, и ответ оказался пустым.

Но это означает, что соединение установлено, и нет ответа.

Что не так с моей конфигурацией..? Я что-то делаю не так?

Пожалуйста, дайте мне знать.

постройте ту же сеть и подключитесь к сервису kafka.

Ответ или решение

Для решения проблемы с подключением вашего Spring Boot приложения к Kafka в Docker Swarm вы можете следовать нескольким шагам и рекомендациям. Прежде всего, стоит рассмотреть структуру вашего docker-compose.yml файла и важные аспекты, касающиеся настройки сетевого взаимодействия между сервисами.

1. Структура docker-compose.yml

Ваш docker-compose.yml файл должен выглядеть примерно так:

version: '3.8'

services:
  kafka:
    image: wurstmeister/kafka:latest
    environment:
      KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:29092,OUTSIDE://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_LISTENERS: INSIDE://0.0.0.0:29092,OUTSIDE://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    ports:
      - "9092:9092"
      - "29092:29092"
    networks:
      - my_overlay_network

  zookeeper:
    image: wurstmeister/zookeeper:latest
    ports:
      - "2181:2181"
    networks:
      - my_overlay_network

  springboot:
    image: myapp:4b9ecffa
    environment:
      SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:29092
    depends_on:
      - kafka
    networks:
      - my_overlay_network

networks:
  my_overlay_network:
    driver: overlay

2. Параметры подключения Kafka

В springboot приложении вы должны убедиться, что правильный адрес сервиса Kafka установлен в переменной окружения SPRING_KAFKA_BOOTSTRAP_SERVERS. В вашем случае это должно быть kafka:29092. Это гарантирует, что ваше приложение будет использовать соответствующее DNS имя, которое Docker Swarm предоставляет для сервисов.

3. Проверка сетевого взаимодействия

Вы правильно сделали, попробовать подключиться к Kafka из контейнера Spring Boot с помощью следующей команды:

docker run -it --network my_overlay_network myapp:4b9ecffa /bin/bash

Если вы можете подключиться к Kafka, но получаете пустой ответ, это может указывать на то, что Kafka не отвечает должным образом или не имеет запущенных тем.

4. Предоставление доступных тем

Убедитесь, что вы создали темы в Kafka, прежде чем пытаться взаимодействовать с ними из вашего Spring Boot приложения. Вы можете использовать следующую команду для создания темы:

docker exec -it <kafka_container_id> kafka-topics.sh --create --topic your_topic_name --bootstrap-server kafka:29092 --partitions 1 --replication-factor 1

5. Логи и отладка

Не забывайте проверять логи контейнеров для получения дополнительной информации о том, что может идти не так. Используйте следующие команды для доступа к логам:

docker service logs <service_name>

Заключение

Если после всех этих шагов проблема всё ещё сохраняется, стоит проверить следующее:

  • Сетевые настройки и доступность контейнеров.
  • Правильность конфигурации Spring Boot для взаимодействия с Kafka.
  • Логи Kafka для возможных ошибок.

Убедитесь, что все ваши сервисы правильно взаимодействуют друг с другом в пределах одного оверлейного сетевого пространства. Настройка Docker Swarm может быть достаточно сложной, но следуя указанным рекомендациям, вы сможете решить проблемы с подключением между сервисами.

Оцените материал
Добавить комментарий

Капча загружается...