Regras do Kafka e firewall

Temos uma política de segmentação da rede bastante rigorosa. Estou a usar uma instância de fundição em nuvem para enviar uma aplicação. As regras do firewall foram criadas para alcançar o cluster kafka de dentro da instância de fundição de nuvem. Penso que as regras da firewall também foram estabelecidas para chegar ao caso do tratador do Jardim zoológico. Tenho de confirmar essa.

O meu problema parece ser que posso enviar mensagens ao kafka, mas o meu consumidor não parece estar a recebê-las. Parece que espera enquanto"sondagens".

Há alguns hospedeiros ou portos escondidos com os quais preciso de lidar para as minhas regras de firewall que não são apenas os hospedeiros e portos Padrão para os nós kafka e zookeeper?

Author: George Smith, 2016-07-22

2 answers

O Kafka e o guarda do zoo são coisas diferentes. Se você está executando ambos na mesma máquina, você precisa abrir ambas as portas, da corse.

Portas predefinidas do Kafka:

  • 9092, pode ser alterado no servidor.propriedades;

Portos Predefinidos do guardião do Jardim zoológico:

  • 2181 para ligações com clientes;
  • 2888 para ligações de seguidores(outros nós de tratadores de jardins zoológicos);
  • 3888 para ligações entre nós;
É isso.

Kafka, também tem o ouvintes e anunciado.ouvintes propriedades que criam alguma confusão nos primeiros utilizadores. Para torná-lo simples, ouvinte é a interface de rede que o seu servidor irá ligar, e anunciado.os ouvintes é o nome da máquina ou IP que o seu servidor irá registar-se no tratador do Jardim zoológico e ouvir os pedidos. Se você colocar um hostname lá, seus clientes terão que usar o hostname para se conectar. O anunciado.ouvintes o url é o seu os clientes usarão para iniciar a conexão. Uma vez que a conexão é feita, o seu cliente terá uma conexão com o tratador de zoológico para obter outros corretores urls. O teu produtor não está a trabalhar por causa disso.

Então, para que funcione, tem de abrir o 2888 na sua firewall, não apenas o 2181. E @Jaya Ananthram está errado quando ele diz que kafka precisa do porto 2181. É um porto de tratores. Os consumidores em Kafka 0,10 stills precisam contatar o tratador de zoológico para persistir algumas coisas, é isso.

Kafka 0.11.0.0 mudou isso e está fazendo com que os clientes não precisam de zookeeper em tudo.

 4
Author: Marcos Arruda, 2017-09-25 23:20:45

Não há Porto Escondido. Verifique a configuração do seu corretor. Certifique-se de que ele anuncia IP/PORT que é acessível pelos consumidores Kafka.


Deparei-me com esta questão depois de ter experimentado o mesmo problema com o Kafka 0.10.1.1 com a biblioteca kafka-python como consumidor.

Não. Captei o tráfego da rede e não usa nenhuma outra porta para comunicar com o Kafka. Se os corretores estiverem configurados para usar o 9092, será a única porta usada por consumidor. Mas depois de mais investigações, as configurações de corretores estavam erradas no meu caso.
Kafka.anunciar.ouvintes = texto simples: / / [private_ip]:9092, SSL: / / [public_ip]:9093 kafka.ouvintes = texto simples: / / 0.0.0.0:9092, SSL://0.0.0.0:9093

Usei [public_ip]: 9092 como servidor de bootstrap porque não tinha o PKI montado, mas queria testar o meu consumidor a partir da internet pública.

O consumidor foi capaz de se ligar ao corretor, mas não consegui enviar nenhuma mensagem.

Uma vez que o consumidor estava ligado ao Kafka usando um texto simples, o Kafka publicitou endereços de corretor de texto simples em vez de endereços SSL. O consumidor, em seguida, tentou chegar a corretores Kafka usando endereços IP privados em vez de públicos. (tal como revelado pela captura da rede raw)

Depois de o PKI estar activo e configurado em corretores e clientes, consegui extrair mensagens da internet pública muito bem.
 3
Author: Duke Grouchy, 2017-02-13 05:31:48