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.456 ]

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

FreeBSD + FreeRadius + MySQL

Instalando o Nagios-mysql no Debian Etch

Compartilhando Internet 3G entre notebook e smartphone Android no Linux

Baixando arquivos do MegaUpload, Rapidshare, 2Shared, 4Shared, ZShare, Badongo, DepositFiles e Mediafire

Utilizando o Smartphone Samsung Omnia 900i como modem via bluetooth no Ubuntu 9.10

  
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