logs.dirs:

  • 카프카 로그를 저장 할 디렉토리 경로 설정이다. 카프카는 모든 로그를 세그먼트 단위로 이 디렉토리들에 저장한다.
  • 다수의 디렉토리를 지정하고자 한다면 logs.dirs 를 써야한다. 그렇지 않다면 logs.dir 에 따른 하나의 디렉토리만 쓰인다.
  • 다수의 디렉토리를 지정한 경우에 카프카는 디렉토리들 중에서 가장 적은 파티션이 담긴 디렉토리에다가 새로운 로그 파일을 저장한다.

 

min.insync.replicas:

  • 토픽 파티션에 쓰기를 할 때 최소한 이 설정 값만큼의 복제본들이 데이터를 동기화 해야지 쓰기가 성공할 수 있다.
  • 이 값은 프로듀서의 설정 중 acks=all 과 관련이 있다. acks=all 은 토픽 파티션의 리더 뿐 아니라 모든 팔로워들이 메시지를 받았음을 보장하는 옵션이다. 파티션 팔로워들이 메시지를 받고나서 min.insync.replicas 이 값만큼 도달을 해야지 쓰기가 성공할 수 있다. 만약 브로커가 장애가나서 min.insync.replicas 이 값에 도달할 수 없다면 쓰기는 실패할 것이다.

 

default.replication.factor:

  • 자동 토픽 생성 기능 (= auto.create.topics.enable) 이 활성화 되어 있는 경우에 이렇게 생성되는 토픽의 복제 팩터 수를 설정하기 위한 옵션이다.
  • 이 값은 min.insync.replicas 값보다 높을 것이다. min.insync.replicas 값은 토픽 파티션의 복제 수 중에서 동기화를 유지해야하는 개수니까.
  • default.replication.factor 값은 min.insync.replicas 값보다 2정도 높게 주는 것이 좋다. 이렇게 할 경우 레플리카를 가진 브로커가 두 대가 작동하지 않아도 괜찮기 때문이다. 한 대는 브로커가 롤링 업데이트 식으로 배포 중에 작동을 안하는 경우가 있고, 한 대는 장애가 날 경우를 대비해서 두 대가 작동하지 않더라도 min.insync.replicas 값은 충족시킬 수 있다.
  • default.replication.factor 값은 카프카 브로커 개수만큼은 설정하지 않아도 된다. 이것보다 적어도 가용성 문제는 해결할 수 있고, 복제본이 불필요하게 많으면 성능이 감소하게 되니까. 브로커 개수 5 기준으로 한 4정도 하면 되지 않을까? min.insync.replicas 는 2로 하고.

 

log.retention.ms:

  • '얼마나 오랫동안 로그 메시지를 보관해야하는가' 를 정하는 설정이다.
  • 기본값은 log.retention.hours 를 사용하며, 168시간 (= 1주일) 이다.
  • 이 설정 외에도 log.retention.minuteslog.retention.ms 를 사용할 수 있다. 이는 시간 단위만 다르지 똑같은 설정이다.
  • 그치만 log.retention.ms 를 사용하는 게 권장된다. 여러 설정이 사용될 경우 이게 우선으로 적용될 설정이기 때문에.

 

log.retention.bytes:

  • 이 설정은 보존할 수 있는 최대 로그 파일의 크기를 말한다. 중요한 건 토픽 단위가 아니라 파티션 단위라는 점임.
  • 즉 이 값이 1GB 이고 8개의 파티션을 가진다면 토픽의 최대 저장 용량은 8GB 가 되는 것이다. 그리고 파티션 하나 로그가 이 값을 넘게 되면 로그는 유실될 수 있는거임.
  • 이 값은 -1 로 설정하면 로그 파일 크기 제한은 없게 된다.
  • 메시지를 삭제하는 정책은 log.retention.mslog.retention.bytes 둘이 적용된다. 일반적으로는 하나만 사용하는 것을 권장하긴 한다.

 

log.segment.bytes:

  • 토픽 파티션들의 메시지는 하나의 거대한 로그 파일로 관리하는게 아니라 여러개의 세그먼트 로그 파일로 관리된다. 이 설정은 로그 세그먼트의 최대 파일 크기를 지정하기 위한 설정 값이다.
  • 기본 값은 1GB 이다.
  • 로그 세그먼트 파일은 최대 크기에 도달해서 닫히지 않으면 만료되지 않는다. 즉 하루에 100MB 의 로그가 쌓이고, log.segment.bytes 는 1GB 이고, log.retention.ms 값이 일주일로 관리된다면 최대 17일까지 로그는 삭제되지 않을 수 있다.
  • 너무 작은 로그 세그먼트의 크기는 디스크 쓰기가 효율적이진 않을 것이다.

 

log.roll.ms:

  • 로그 세그먼트가 최대 크기에 도달하지 않더라도 로그 파일이 닫히게 만들도록 시간을 지정할 수 있는 설정이다.
  • 이 값은 기본적으로 설정되어 있지 않다.
  • 시간으로 할건지, 크기로 할건지 하나만 선택하는 것이 혼란을 막을 수 있을 것이다.

 

message.max.bytes:

  • 카프카 브로커에 메시지를 기록할 수 있는 최대 크기를 말한다. 즉 이 값보다 큰 메시지는 거절당한다.
  • 기본 값은 1MB 이다.
  • fetch.message.max.bytes 값과 message.max.bytes 은 같아야한다. fetch.message.max.bytes 값은 컨슈머 설정으로 한번에 가지고 올 수 있는 메시지의 최대 크기를 의미한다. 이 값이 더 작은 경우에는 메시지를 가지고 올 수 없으니 맞추는게 중요하다.

+ Recent posts