-
카프카 설정 ( Broker-Server )아키텍처/kafka 2025. 6. 2. 09:21
Kafka를 설치하고 난 후,
config 디렉토리 내부를 확인해보면 server.properties, zookeeper.properties 두 가지가 있다.
카프카와 주키퍼의 설정과 관련된 부분인데 설정해야 할 여러 가지 항목이 있다.
- dataDir
- 로그나 데이터와 관련된 정보를 저장.
- tmp 경로로 기본 설정돼 있는데, 이렇게 되면 vm 서버를 껐다가 킬 경우, offset 정보가 날라가서 어디까지 consumer를 수행했는지 위치 정보를 잃게 됨.
- replication-factor
- 아래와 사진과 같이 브로커가 2개인 케이스에서 replication-factor을 '2'로 설정하게 되면, 파티션 내부의 데이터가 각 브로커로 복제가 되어서 하나의 브로커가 다운되더라도 다른 브로커에서 데이터를 가지고 있어, 데이터의 정합성을 보장할 수 있다.
- 단점: 저장소가 커지기 때문에 데이터 용량을 많이 차지하게 된다.
- auto.offset.reset
- Consumer가 Topic에 처음 접속하여 Message를 가져올 때 가장 오래된 처음 offset부터 가져올 것인지, 가장 최근인 마지막 offset부터 가져올 것 인지를 설정하는 파라미터
- max.inflight.requests.per.connection (Producer)
- Producer에서 Batch의 개수를 몇 개로 설정할 것인지에 대한 설정. 해당 설정에 따라서 Batch가 충족되면 Producer에서 Brokder로 토픽을 전송한다. (Batch 묶음으로 한번에 전송)
- delivery.timeout.ms (Producer)
- 메시지 전송 실패시, 재전송을 retry 하게 되는데 얼마 만큼의 시간동안 재전송을 할 지를 설정하는 옵션
- delivery.timeout.ms는 linger.ms + request.timeout.ms 이 두개의 설정값 보다 더 크게 설정 돼 있어야 한다.
- max.block.ms (Producer)
- Producer에서 Send() 호출 시 Record Accumulator에 입력하지 못하고 block되는 최대 시간. 초과 시 Timeout Exception 발생
- request.timeout.ms (Producer)
- 전송에 걸리는 최대 시간. 전송 재시도 대기시간 제외. 초과시 retry를 하거나 Timeout Exceptoin 발생
- retry.backoff.ms
- 전송 재시도를 위한 대기 시간
- 보통 retries는 무한대값으로 설정하고 delivery.timeout.ms (기본 120000; 2분)를 조정하는 것을 권장
- heartbeat.interval.ms (consumer)
- Heart Beat Thread가 Heart Beat를 보내는 간격
- session.timeout.ms 보다 낮게 설정되어야 함.일반적으로 session.timeout.m 보다 1/3 보다 낮게 설정되는 것이 권장
- session.timeout.ms (consumer)
- 브로커가 Consumer로 Heart Beat를 기다리는 최대 시간.브로커는 이 시간동안 Heart beat를 consumer로 부터 받지 못하면 해당 consumer를 group에서 제외하도록 rebalancing
- max.poll.interval.ms (consumer)
- 이전 poll() 호출 후 다음 poll() 호출 까지 브로커가 기다리는 시간.
'아키텍처 > kafka' 카테고리의 다른 글
Producer의 acks 설정에 따른 send 방식 (0) 2025.06.09 Kafka Config 구분 및 이해 (0) 2025.06.04 컨슈머 그룹과 컨슈머 (0) 2025.06.04 카프카 - 메시지 키 관련 내용 및 생성 방법 (0) 2025.06.02 [Kafka] 아파치 카프카 로그 경로 바꾸기 (0) 2025.04.07 - dataDir