//server.properties
broker.id=0
listeners=PLAINTEXT://localhost:9092
log.dirs=/tmp/kafka-logs
//server1.properties
broker.id=1
listeners=PLAINTEXT://localhost:9093
log.dirs=/tmp/kafka-logs1
//server2.properties
broker.id=1
listeners=PLAINTEXT://localhost:9094
log.dirs=/tmp/kafka-logs2
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
#server.properties
.\bin\windows\kafka-server-start.bat .\config\server.properties
#server1.properties
.\bin\windows\kafka-server-start.bat .\config\server1.properties
#server2.properties
.\bin\windows\kafka-server-start.bat .\config\server2.properties
명령어를 실행할때는 무조건 kafka 폴더로 변경하고 실행하여야 한다 이 설명은 이제 여기서 부터 생략한다.
1. topic 생성 명령어 실행
.\bin\windows\kafka-topics.bat --create --topic topic2 --bootstrap-server localhost:9093 --partitions 3 --replication-factor 2
앞서 zookpeer를 실행하면서 cluster르 맺고 zookpeer로 관리되기 때문에 server.properties의 포트값중 아무거나 하나로 실행 하거나 모두 실행하여도 무관하다.
partitions 3 설정을 통해 partition을 3개로 만들어 주고 replication-factor 2 설정을 통하여 복사본 하나를 더 추가한다.
.\bin\windows\kafka-topics.bat --describe --topic topic2 --bootstrap-server localhost:9093
실행후 확인하여 보면
0번 partition은 0번 leader을 1번 partition은 2번 leader을 2번 partition은 1번 leader으로 잘 분산 되어져 있다
.\bin\windows\kafka-topics.bat --describe --topic topic2 --bootstrap-server localhost:9092
물론 브로커0번인 9092 포트로 실행하여도 같은 정보를 보여준다
.\bin\windows\kafka-console-producer.bat --topic topic2 --bootstrap-server localhost:9092,localhost:9093,localhost:9094
현재 cluster를 맺고 있기 때문에 물론 하나의 서버에서만 발행하여도 무관하다.
.\bin\windows\kafka-console-consumer.bat --topic topic2 --from-beginning --bootstrap-server localhost:9092,localhost:9093,localhost:9094
메세지 발행과 동일하게 하나의 서버로 확인하여도 무관하다.
.\bin\windows\kafka-topics.bat --describe --topic topic2 --bootstrap-server localhost:9093
전에 정보와다르게 나오는걸 확인할 수 있다.
3. 메세지를 다시 발행한다.
.\bin\windows\kafka-console-producer.bat --topic topic2 --bootstrap-server localhost:9092
정상적으로 메세지가 수신될 것이다.
4. 다시 한번 중지시킨 broker를 실행시킨다.
leader 파티션은 변화가 없지만 isr에는 broker가 인식되는것을볼 수 있다.
5.다시 메세지를 발행하여 확인해보면 역시나 정상적으로 메세지가 수신되는지 확인해볼 수 있다.
역시나 실습을 해봐야 감이 오는것 같다. 좀더 실험을 해봐야 겠다. 마지막으로 있었던 토픽을 초기화 싶으면 kafka가 설치된 곳에 tmp 디렉토리를 삭제해주면 된다!