codeedu / imersao-fsfc2

443 stars 359 forks source link

Erro no nest-api ao conectar no Kafka #1

Closed Twsouza closed 1 year ago

Twsouza commented 3 years ago

Olá.

Estou com um problema para iniciar a api e conectar no Kafka. Fiz o clone do projeto no meu computador (Ubuntu 20.04) e quando dou um up no nest-api (com o apache kafka já rodando), gera erro para mim:

app_1            | (node:41) UnhandledPromiseRejectionWarning: KafkaJSNonRetriableError
app_1            |   Caused by: KafkaJSConnectionError: Connection error: connect ECONNREFUSED 127.0.0.1:9094

Eu adicionei o endereço ao hosts:

127.0.0.1       localhost
127.0.0.1       host.docker.internal
argentinaluiz commented 3 years ago

Olá @Twsouza ,

O Apache Kafka está rodando normalmente pelo Docker? Consegue acessar a interface da Confluent?

victorhgadioli commented 3 years ago

Estou tendo o mesmo problema. E não, não consigo acessa a interface da Confluent. Estou utilizando um clone do repositório do curso.

Twsouza commented 3 years ago

Boa tarde @argentinaluiz,

Consigo acessar o apacha kafka pelo control-center, consigo visualizar os tópicos route.new-direction e route.new-position. Inclusive já rodei o system prune -a só para ter certeza e continua o mesmo erro no nest-api.

@victorhgadioli tenta acessar o control-center, adiciona o código abaixo no docker-compose do apache-kafka


  control-center:
    image: confluentinc/cp-enterprise-control-center:6.0.1
    hostname: control-center
    depends_on:
      - kafka
    ports:
      - "9021:9021"
    environment:
      CONTROL_CENTER_BOOTSTRAP_SERVERS: 'kafka:9092'
      CONTROL_CENTER_REPLICATION_FACTOR: 1
      PORT: 9021

E acessa o localhost:9021

victorhgadioli commented 3 years ago

Consegui fazer funcionar. Para isso, fiz duas coisas:

  1. Existia tanto 'hosts.docker.internal' quanto 'host.docker.internal' nos composers. Adotei 'host.docker.composer'.
  2. Subi o portainer e deletei todas as imagens e volumes (exceto os ligados ao portainer).

Depois disso, fiz 'docker-composer up' novamente e tudo rodou certinho.

Twsouza commented 3 years ago

Eu já tinha alterado tudo para host.docker.internal porém não resolveu, também já fiz o docker system prune -a e removeu todas as imagens, volumes, containers.

Vou seguir com as aulas e depois tento resolver esse problema.

phelipperibeiro commented 2 years ago

Pessoal eu também estou com o mesmo erro, fiz tudo que vcs mencionaram, mas nao rolou.

@argentinaluiz vc consegue me ajudar?

[ServerKafka] ERROR [BrokerPool] Failed to connect to seed broker, trying another broker from the list: Connection error: getaddrinfo ENOTFOUND host.docker.internal

isabellasantiago commented 2 years ago

Estou com o mesmo problema aqui também galera, já executei o docker system prune -a e nada resolveu, inclusive deu até problemas de egine por conta da versão do node nao ser compativel com algumas dependencias.

image

argentinaluiz commented 2 years ago

Oi @isabellasantiago , tudo bem?

Pelo erro, o Nest.js está tentando se conecta no Kafka usando o endereço 127.0.0.1/localhost, na imersão usamos o host.docker.internal. Veja as instruções no README.md para realizar a configuração de forma correta, altere também seu .env para o host.docker.internal.

Me fale se conseguiu evoluir com isto, ok?

Qualquer dúvida, estou à disposição.

;)

rogeriocassares commented 2 years ago

Boa noite @argentinaluiz e @isabellasantiago, tudo bem?

Estou fazendo a aula de nest-api e tive o mesmo problema!

Li o README.md também e configurei o /etc/hosts.

Pelo que pude notar, que o container do nest estava tentando se conectar ao 127.0.0.1, conforme o README.md indicava, isto é, estava tentando se conectar nele mesmo, porém o kafka está rodando em um container separado sem rede de network confurado entre eles.

Então reparei que o docker-compose.yamlda aula-01 estava configurado como:

extra_hosts:
      - "host.docker.internal:172.17.0.1"

Portanto, configurei o `/etc/hosts para esse endereço, que é o do docker:

172.17.0.1 host.docker.internal

@argentinaluiz , para mim parece que funcionou. Seria o caso de alterar o EADME.md para o endereço acima ao invés de 127.0.0.1?

Muito obrigado!

Aula incrível! Obrigado!

isabellasantiago commented 2 years ago

@roger10cassares MUITO obrigada roger! eu ja havia configurado o /etc/hosts e o problema havia continuado e a sua solução funcionou aqui perfeitamente!

rogeriocassares commented 2 years ago

Que bom @isabellasantiago !

Tem que ir até o final agora! Estou caminhando tb!