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