Код: Выделить всё
~$ docker exec -it blopa-kafka-1 /bin/bash
I have no name!@8b166cb3a647:/$ kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list
__consumer_offsets
boton_topic
dht_topic
gps_topic
pulso_topic
Код: Выделить всё
KAFKA_BOOTSTRAP_SERVERS = os.getenv('KAFKA_BOOTSTRAP_SERVERS', '192.168.1.211:9092')
app = FastAPI()
def ckeck_conectivity_kafka(kafka_bootstrap_servers):
kafka_host, kafka_port = kafka_bootstrap_servers.split(':')
try:
with socket.create_connection((kafka_host, int(kafka_port)), timeout=10) as sock:
except Exception as e:
error_message = f"[ERROR datos_kafka] Not conection {kafka_bootstrap_servers}: {e}"
logger.error(error_message))
check_conectivity_kafka(KAFKA_BOOTSTRAP_SERVERS)
@asynccontextmanager
async def lifespan(app: FastAPI):
global producer
try:
producer = AIOKafkaProducer(
bootstrap_servers=KAFKA_BOOTSTRAP_SERVERS
)
await producer.start()
except Exception as e:
await asyncio.sleep(5)
yield
return
yield
...
app.router.lifespan_context = lifespan
Код: Выделить всё
INFO: Started server process [135789]
INFO: Waiting for application startup.
ERROR:aiokafka:Unable connect to node with id 0: [Errno -2] Name or service not known
KafkaConnectionError: No connection to node with id 0
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit)
Это мой . yaml:
Код: Выделить всё
services:
kafka:
image: 'bitnami/kafka:latest'
environment:
- KAFKA_CFG_NODE_ID=0
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://:9093
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT>
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.211:9092
volumes:
- kafka-data:/bitnami/kafka/data
tty: true
restart: always
ports:
- "9092:9092"
- "9093:9093"
- "9094:9094"
volumes:
kafka-data:
driver: local
Код: Выделить всё
telnet
Код: Выделить всё
nc -zv 192.168.1.211 9092
192.168.1.211: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.1.211] 9092 (?) open
но я предполагаю, что какая-то проблема в конфигурации не позволяет моему коду работать.
Вероятно, это несложная проблема, но есть такие решения, как «вам нужно будет объявить внешнее имя хоста/IP (например, 192.168.x.y) хоста, а также/вместо локального хоста. Требуется переадресация портов Docker». (и изменения брандмауэра/группы безопасности)» мне не помогли. Это уже сделано и не работает. Фактически, если бы ему не разрешили проходить через брандмауэр, тесты nc или telnet не работали бы.
Добавляю результаты nmap и kcat:
sudo nmap -p 9092 192.168.1.211 -vv -sV --traceroute
Сканирование 192.168.1.211 [1 порт]
Обнаружен открыть порт 9092/tcp на 192.168.1.211
АДРЕС HOP RTT
1 53,84 мс 192.168.1.211
echo "Привет, Кафка !" | kcat -P -b 192.168.1.211:9092 -t boton_topic
%3|1727082503.291|FAIL|rdkafka#producer-1| [thrd:8b166cb3a647:9092/0]: 8b166cb3a647:9092/0: Не удалось разрешить '8b166cb3a647:9092': имя или служба неизвестны (после 102 мс в состоянии CONNECT)
% ОШИБКА: Локально: Ошибка разрешения хоста: 8b166cb3a647:9092/0: Не удалось разрешить '8b166cb3a647:9092': имя или служба неизвестны (после 102 мс в состоянии CONNECT)
%3|1727082504.353|FAIL|rdkafka#producer-1| [thrd:8b166cb3a647:9092/0]: 8b166cb3a647:9092/0: не удалось разрешить '8b166cb3a647:9092': имя или служба неизвестны (после 61 мс в состоянии CONNECT подавлено 1 идентичная ошибка)
% ОШИБКА: Локальная: ошибка разрешения хоста: 8b166cb3a647:9092/0: не удалось разрешить '8b166cb3a647:9092': имя или служба неизвестны (после 61 мс в состоянии CONNECT подавлены 1 идентичная ошибка)
Это информация о сервере docker-compose:
sudo lsof -i -P -n | grep LISTEN
docker-pr 1624 root 4u IPv4 9165 0t0 TCP *:9092 (LISTEN)
docker-pr 1629 root 4u IPv6 9171 0t0 TCP *:9092 (СЛУШАТЬ)
Подробнее здесь: https://stackoverflow.com/questions/790 ... s-problems