kafka-configs.sh는?
- 토픽의 일부옵션을 설정하기 위한 명령어 min.insync.replicas 옵션을 토픽별로 설정 가능.
- 원래 describe 했을 때 configs min.insync.replics 설정 아무것도 없던 hello.kafka2 topic

- 원래 describe 했을 때 configs min.insync.replics 설정 아무것도 없던 hello.kafka2 topic
- bin/kafka-configs.sh --bootstrap-server my_kafka:9092 --alter --add-config min.insync.replicas=2 --topic hello.kafka2

[참고] min.insync.replicas
min.insync.replicas는 ack응답을 보내기 위한 리더가 확인해야할 최소 리플리케이션의 수를 지정하는 브로커 관련 옵션이다.
아무리 메세지 무손실을 위해 acks=all의 옵션을 프로듀서에서 적용을 해 두었더라도 min.insync.replicas가 1로 설정되어 있으면 리더만 메세지를 수신하여도 리플리케이션의 조건이 충족되기 때문에 ack응답을 보내게 된다. 즉 메세지 손실이 일어날 가능성이 있다.
그렇다면 replicaiton factor이랑 min.insync.replicas의 수를 동일하게 설정하면 메세지 손실이 발생하지 않을까? 라는 생각을 하게 될 것이다.여기선 한가지 문제가 있다. 바로 카프카 브로커의 다운이다. 만약 리플리케이션이 3으로 구성되고 min.insync.replicas의 옵션도 3으로 지정해 두었다고 가정할 때 하나의 브로커가 다운되게 되면 가용 가능한 카프카 브로커는 2대이다. 이 상황에서 프로듀서가 메세지를 전송하게 되면 리플리케이션 조건을 충족시킬수 없으므로 에러가 발생하고 클러스터 전체 장애와 비슷한 상황이 나타나게 된다.
카프카에서는 topic replication.facter=3, min.insync.replicas=2를 권장한다.
'DevOps > Kafka' 카테고리의 다른 글
| [카프카 프로그래밍] kafka-consumer-groups.sh ⭐️ (0) | 2024.07.02 |
|---|---|
| [카프카 프로그래밍] kafka-console-producer.sh, kafka-console-consumer.sh (0) | 2024.07.01 |
| [카프카 프로그래밍] kafka-topics.sh (0) | 2024.06.30 |
| [카프카 프로그래밍] 로컬 카프카 실행 (0) | 2024.06.30 |
| [카프카 프로그래밍] 로컬 카프카 설치 (0) | 2024.06.30 |