Kafka Cluster를 구성해 보자.

배상규·2023년 8월 31일
0
post-thumbnail

kafka의 Cluster를 구성


server.properties 설정

  1. kafka 설치 폴더 아래 config 폴더에 접속하여 server.properties 파일을 수정 및 복사한다.
  2. broker.id, lesteners, log.dirs을 수정한다
//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

zookeeper 실행

  1. kafka의 설치된 폴더로 이동한다
  2. zookeeper-server-start bat 파일을 이용하여 실행하기 위하여 명령어를 실행한다
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

server 실행

  1. kafka의 설치된 폴더로 이동한다
  2. kafka-server-start 실행을 위한 명령어를 실행한다.
  3. 앞서 수정한 server.properties, server1.properties, server2.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

topic 생성

명령어를 실행할때는 무조건 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 설정을 통하여 복사본 하나를 더 추가한다.


파티션 구성 상태 확인

  1. describe 명령어 실행
.\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 포트로 실행하여도 같은 정보를 보여준다


메세지 발행

  1. producer 명령어 실행
 .\bin\windows\kafka-console-producer.bat --topic topic2 --bootstrap-server localhost:9092,localhost:9093,localhost:9094

현재 cluster를 맺고 있기 때문에 물론 하나의 서버에서만 발행하여도 무관하다.


메세지 수신

  1. consummer 명령어 실행
.\bin\windows\kafka-console-consumer.bat --topic topic2 --from-beginning --bootstrap-server localhost:9092,localhost:9093,localhost:9094

메세지 발행과 동일하게 하나의 서버로 확인하여도 무관하다.


장애상황 발생 확인

  1. 임의로 하나의 브로커의 서버를 중지 시킨다(ctrl+c).
  2. topic명령을 이용해 파티션 상태를 확인한다.
.\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 디렉토리를 삭제해주면 된다!

profile
기록에 성장을

0개의 댓글