Git :)

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 카프카 설정 ( 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() 호출 까지 브로커가 기다리는 시간.