saay, hi

1) broker configs(server.properties) 본문

kafka 설치 및 구성/참고) configuration

1) broker configs(server.properties)

saay-hi 2024. 6. 21. 16:16

[ default configs ]

-broker.id, log.dirs, zookeeper.connect는 필수 구성 요소임

  옵션명 default 값 옵션 설명
1 broker.id 0 각 broker를 구별하기 위한 broker의 id. 서로 다른 값을 주어야 함
2 num.network.threads 3 서버에서 네트워크로부터 요청을 받고 네트워크로 응답을 전송할 때 사용할 스레드 수. (네트워크 요청을 처리하는 Thread의 개수)
3 num.io.threads 8 서버에서 request를 처리할 때 사용하는 스레드 수.(I/O가 생길때 마다 생성되는 Thread의 개수)
4 socket.send.buffer.bytes 102400 네트워크 요청을 처리할 소켓 서버가 사용하는 수신 메모리 사이즈
5 socket.receive.buffer.bytes 102400 네트워크 요청을 처리할 소켓 서버가 사용하는 송신 메모리 사이즈
6 socket.request.max.bytes 104857600 서버가 받을 수 있는 최대 요청 사이즈이며, JAVA의 Heap 보다 작게 설정해야 함.
7 log.dirs /tmp/kafka-logs 로그 파일을 저장 dir 경로
로그 파일 종류
1) Log Segment File(.log) : 전송되는 topic 메시지와 같이 실제 메타데이터가 저장되는 파일
2) Index File(.index) : offset 번호를 가지고 해당 데이터를 빨리 찾기위한 인덱스 파일
3) Time-based Index File(.timeindex) : timestamp를 기반으로 데이터를 빨리 찾기위한 인덱스 파일
4) leader-epoch-checkpoint : 리더가 변경이 되었을 때 offset 정보를 저장하는 파일
8 num.partitions 1 토픽당 파티션의 수를 의미하며, 입력한 수만큼 병렬처리를 할 수 있지만 데이터 파일도 그만큼 늘어남.
9 num.recovery.threads.per.data.dir 1 기동 시 로그 복구와, 셧 다운 시 플러시에 사용할 데이터 디렉토리 당 스레드 수.장애에 빠르게 대응하고자 한다면 높은 값을 설정해야함.
10 offset.topic.replication.factor 3 오프셋 토픽(__consumer_offsets)의 replication factor를 지정. 클러스터 크기가 이 값보다 작으면 internal topic 생성에 실패한다.
__consumer_offsets : 각 topic에 대한 커밋된 오프셋에 대한 정보를 저장하는 데 사용된다.
11 transaction.state.log.replication.factor 1 트랜잭 션 토픽(__transaction_state)의 replication factor를 지정.
클러스터 크기가 이 값보다 작으면 internal topic 생성에 실패한다.
카프카 트랜잭션은 프로듀서와 컨슈머단에서 옵션을 설정해야 함.

__transaction_state : 이 topic은 프로듀서가 보내는 데이터의 트랜젝션을 기록하는데 사용되며, 기록된 데이터는 트랜젝션이 활성화된 컨슈머가 데이터를 가져가는데 사용한다.
12 transaction.state.log.min.isr 1 트랜잭션 토픽에 대한 min.insync.replicas 설정을 재정의함.
13 log.retention.hours 168
로그 파일(메시지)의 수명. 기본값은 168(7일).hours 단위로 지정하는 것이 아닌 분단위 minutes, 밀리초단위 ms 설정도 지원.
[ 기본 168시간 지난 뒤 ]


10초가량 각 deleted 파일과 함께 존재 후, 삭제됨 
14 log.retention.check.interval.ms 300000 로그를 삭제하기 위한 check 간격으로 ms단위임.
log.retention.hours(minutes, ms) 보다 더 적으면 안되며, 만일 이 옵션값이 크면 log.retention.hours 지정한 시간에 삭제되지 않고 지체됨
** log.retention.hours > log.retention.check.interval.ms
15 zookeeper.connect localhost:2181 연결된 zookeeper 서버 정보
형식 : {hostname}:{port}
zookeeper 시스템이 다운되었을 때 다른 zookeeper 노드를 통한 연결을 허용하기 위해 여러 호스트를 지정할 수도 있음
ex) {hostname1}:{port1},{hostname2}:{port2},{hostname3}:{port3}
또한, 서버는 전역 zookeeper 네임스페이스의 특정 경로 아래에 데이터를 저장하는 zookeeper 연결 문자열의 일부로 zookeeper chroot 경로를 가질 수도 있음. 
ex) chroot경로를 제공하려면 /chroot/path 문자열을
{hostname1}:{port1},{hostname2}:{port2},{hostname3}:{port3}/chroot.path 
16 zookeeper.connection.timeout.ms 18000 주키퍼 연결 최대 대기 시간
17 group.initial.rebalance.delay.ms 0 그룹 코디네이터가 새 그룹에서 처음 리밸런스(리더 역할을 할 클라이언트를 선출하며 파티션을 분배하는 과정)를 수행하기 전에, 더 많은 컨슈머가 그룹에 들어올 수 있도록 기다리는 시간. 더 오래 기다리면 앞으로 리밸런스를 덜 할 순 있지만, 리밸런스를 시작하기까지 시간이 더 오래 걸린다.개발 및 테스트 중에는 테스트 실행 시간을 지연시키지 않기 위해 이것을 0으로 설정하는 것이 바람직할 수 있다.

[ 그 외 default(1) - configs script에 주석처리 돼 있을 경우에도 default 값이 적용되었을 수 있음]

옵션명 default 값 설명
1 listeners PLAINTEXT://:9092 Broker가 사용하는 호스트와 포트를 지정.내부 브로커들 간의 통신을 위한 엔드포인트와 외부 클라이언트를 위한 엔드포인트를 구분하려면 advertised.listeners 옵션을 사용해야 함.
2 advertised.listener PLAINTEXT://your.host.name:9092 만약 주석처리를 해제하지 않는다면 lisener이 사용됨.
listeners과 달리, 0.0.0.0 메타 주소로 advertise하는것이 유효하지 않음.
또한, listeners와 다른점은 중복된 port가 있을 수 있으므로 한 listener이 다른 listener에 advertise하도록 구성할 수 있음. advertised.listener는 외부 로드 밸런서를 사용하는 경유에 유용할 수 있음
3 listener.security.protocol.map PLAINTEXT:PLAINTEXT, SSL:SSL, SALS_PLAINTEXT:SASL_PLAINTEXT, SASL_SSL:SASL_SSL 위 listeners 옵션에서 사용된 PLAINTEXT 는 보안 프로토콜이 아니기 때문에 해당 옵션을 설정해야함
4 log.flush.interval.messages 1000  
5 log.flush.interval.ms 1000  
6 log.retention.bytes 1073741824  
7 log.segment.bytes 1073741824 로그 세그먼트 파일의 최대 크기. 이 크기에 도달하면 새 로그 세그먼트가 생성됨.