DevBoi

[Kafka] 카프카 config 내용 분석 하기 본문

Develop/[Kafka]

[Kafka] 카프카 config 내용 분석 하기

HiSmith 2023. 8. 6. 21:18
반응형

kafka-configs 를 정리해보자

토픽의 일부 옵션을 설정하기 위해서는 kafka-configs.sh명령어를 사용해야한다.

--alter와 --add-config 옵션을 사용하여, Min.insync.replicas옵션을 토픽별로 설정할 수있다.

 

관련 Config 명령어로 broker,all,describe옵션을 사용해서 조회가 가능하다.

bin/kafka-configs.sh --bootstrap-server my-kafka:9092 --alter --add-config min.insync.replica=2 topic test

bin/kafka-topics.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --describe

 

예를 들어 위와 같이, 해당 토픽에 대해서 생성했다고 하자.

해당 토픽에 대해서 파티션은 3개이고, 복제 개수는 1개이다.

이제 insync.replica를 수정반영해보자

 

자세히 보여야 보이는데 아랫줄에, configs: 부분에 내용이 추가된 것을 볼수있다.

뭐 이제 수정 반영하는 방법은 알겠다. 사실 이 부분은 config 파일로 저장해놓고, 기동시에 반영할 수 있는 부분이기도 하다.

카프카에서 권고하는 사항은 따로 지정되어있다.

min.insync.replicas 는 우선 최소 리플리케이션 복제 개수 값이다.

 

대부분 카프카에서 프로듀서는 acks=all를 설정을 많이한다.

acks=all은, 하나의 ISR 팔로워가 프로듀서의 데이터를 잘 복제 했다는 것을 알려주는것을 의미하고

프로듀서는 acks=all일경우 팔로워의 응답을 기다린다.

위의 상황에서 만약에 min.insync.replica=3로 지정했다고 예를 들어보자

1.프로듀서는 acks=all 옵션으로 리더 파티션에게 메시지를 전달한다.

2.리더 파티션은 메시지를 받아 저장하고, 팔로워 파티션에 있는 브로커들은 주기적으로 리더파티션과 통신한다.

3.만약에 신규 데이터가 있다면, 복제하여 저장한다.

4.리더는 복제할 대상이 최소 옵션수 유지되고있는지를 확인하고 acks를 보낸다.

5.리더가 프로듀서에게 acks를 보낸다.

 

만약 팔로워 파티션의 전체 개수만큼, 옵션값을 설정한다면

하나의 팔로워, 즉 하나의 브로커를 꺼버리면, 전체 클러스터의 장애로 이루어지게 된다.

 

 

즉, 완전 무손실을 위한 acks=all은 min.insync.replica의 옵션값이 중요하며, 해당 전체 장애로 이루어질수있기 때문에

브로커 개수를 신경 써야한다.

 

물론 아주빠르지만 손실을 감안하게 되면, acks=0으로 둘수도 있다.

 

반응형