Apache Kafka

O Apache Kafka é um serviço de mensageria de grande throughput e baixa latência para publicar mensagens em tempo real gravando logs das transações.

[ Hits: 9.436 ]

Por: Fernando Nunes em 29/03/2016


Apache Kafka + Zookeeper



Ambiente testado:
  • CentOS 7 - x64
  • Java 1.8
  • Procedimento aplicado em multi-cluster (3 servidores)

1. Instale o Java:
2. Instalando o Apache Zookeeper release 3.4.8:

# cd /opt
# wget http://ftp.unicamp.br/pub/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
# tar -zxvf zookeeper-3.4.8.tar.gz
# cd zookeeper-3.4.8
# cp conf/zoo_sample.cfg conf/zoo.cfg


3. Edite o arquivo "zoo.cfg" e insira as linhas abaixo:

dataDir=/opt/data/zookeeper #Crie o diretório que você deseja manter os dados
initLimit=10
syncLimit=5
server.1=kafka-teste001:2888:3888 #Lembre-se de que este hostname deve ser alterado pelo que você criou
server.2=kafka-teste002:2888:3888 #Lembre-se de que este hostname deve ser alterado pelo que você criou
server.3=kafka-teste003:2888:3888 #Lembre-se de que este hostname deve ser alterado pelo que você criou

4. Crie as identificações dos Brokers em cada servidor.

No servidor "kafka-teste001":

# echo "1" > /opt/data/zookeeper/myid

No servidor "kafka-teste002":

# echo "2" > /opt/data/zookeeper/myid

No servidor "kafka-teste003":

# echo "3" > /opt/data/zookeeper/myid

5. Instalando o Apache Kafka release 0.9.0.1:

# cd /opt
# wget http://ftp.unicamp.br/pub/apache/kafka/0.9.0.1/kafka_2.10-0.9.0.1.tgz
# tar -zxvf kafka_2.10-0.9.0.1.tgz
# cd kafka_2.10-0.9.0.1


6. Edite o arquivo "server.properties":

# vim config/server.properties

Neste arquivo vamos ajustar os parâmetros do primeiro Broker:

broker.id=0
port=9092
log.dir=/tmp/kafka0-logs
host.name=kafka-teste001
zookeeper.connect=kafka-teste001:2181,kafka-teste002:2181,kafka-teste003:2181

Após alterado faça duas cópias deste arquivo:

# cp config/server.properties config/server-1.properties
# cp config/server.properties config/server-2.properties


E por fim edite esses 2 novos arquivos:

# vim config/server-1.properties

broker.id=1
port=9093
log.dir=/tmp/kafka1-logs
host.name=kafka-teste002
zookeeper.connect=kafka-teste001:2181,kafka-teste002:2181,kafka-teste003:2181

# vim config/server-2.properties

broker.id=2
port=9094
log.dir=/tmp/kafka2-logs
host.name=kafka-teste003
zookeeper.connect=kafka-teste001:2181,kafka-teste002:2181,kafka-teste003:2181

Após finalizar os ajustes, faça o procedimento acima nos outros 2 servidores para criar o cluster, ou se estiver em um ambiente virtualizado faça clones.

Por fim vamos iniciar os serviços:

7. Inicie o Zookeeper nos 3 servidores. Mandei rodar em background com o "&".

# nohup /opt/zookeeper-3.4.8/bin/zkServer.sh start &

8. Inicie cada Broker do Kafka em cada servidor.

Servidor 1 - kafka-teste001:

# nohup bin/kafka-server-start.sh config/server.properties &

Servidor 2 - kafka-teste002:

# nohup bin/kafka-server-start.sh config/server-1.properties &

# Servidor 3 - kafka-teste003

# nohup bin/kafka-server-start.sh config/server-2.properties &

9. Para testar as funcionalidades você deve rodar o as consoles de "Producer" e "consumer".

Criando um "Topic" no servidor "kafka-teste001":

# bin/kafka-topics.sh --create --zookeeper kafka-teste001:2181 --replication-factor 1 --partition 1 --topic test-topic

Listando os "Topics" criados:

# bin/kafka-topics.sh --list --zookeeper kafka-teste001:2181

Deve aparecer o "Topic" criado anteriormente: test-topic

10. Iniciar o "Consumer" para coletar as mensagens geradas:

# bin/kafka-console-consumer.sh --zookeeper kafka-teste001:2181 --topic test-topic --from-beginning

11. Iniciando o "Producer" para enviar as mensagens:

# bin/kafka-console-producer.sh --broker-list kafka-teste001:9092 --topic test-topic
Hello world
Teste de envio de mensagem Kafka
Teste


12. Nos outros servidores do cluster verifique se as mensagens foram distribuídas corretamente:

# bin/kafka-console-consumer.sh --zookeeper kafka-teste001:2181 --topic test-topic --from-beginning

Referências


   

Páginas do artigo
   1. Apache Kafka + Zookeeper
Outros artigos deste autor

Evitando acúmulo de arquivos na lixeira do Samba

Compilação do kernel passo-a-passo

Leitura recomendada

Conectividade Social vs. proxy Squid transparente

N2N: Layer Two Peer-to-Peer VPN

Experiencias de um viajante - binômio sidux/Ceni novamente destaque

Aplicações remotas: um exemplo com o Octave

Pure-ftpd: Servidor de FTP com MySQL, quota e usuários virtuais

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts