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 | 로그 세그먼트 파일의 최대 크기. 이 크기에 도달하면 새 로그 세그먼트가 생성됨. |