Broker 설정
Kafka Broker의 핵심 설정들을 살펴봅니다.
필수 설정
기본 식별자
# Broker 고유 ID (클러스터 내 유일해야 함)
broker.id = 0
# 클라이언트 연결 주소
listeners = PLAINTEXT://0.0.0.0:9092
# 외부에 알려지는 주소
advertised.listeners = PLAINTEXT://kafka1.example.com:9092
# 로그 저장 디렉토리
log.dirs = /var/kafka-logsZookeeper 연결 (Kafka 2.8 이전)
# Zookeeper 연결 문자열
zookeeper.connect = zk1:2181,zk2:2181,zk3:2181/kafka
# 세션 타임아웃
zookeeper.session.timeout.ms = 18000
# 연결 타임아웃
zookeeper.connection.timeout.ms = 18000KRaft 모드 (Kafka 3.0+)
# 프로세스 역할
process.roles = broker,controller
# 노드 ID
node.id = 1
# Controller Quorum
controller.quorum.voters = 1@controller1:9093,2@controller2:9093,3@controller3:9093
# Controller 리스너
controller.listener.names = CONTROLLER네트워크 설정
스레드 풀
# 네트워크 요청 처리 스레드 (기본 3)
num.network.threads = 8
# I/O 작업 스레드 (기본 8)
num.io.threads = 16
# 요청 큐 크기
queued.max.requests = 500소켓 설정
# 소켓 버퍼 크기
socket.send.buffer.bytes = 102400
socket.receive.buffer.bytes = 102400
socket.request.max.bytes = 104857600 # 100MB
# 연결 설정
connections.max.idle.ms = 600000리스너 설정
# 다중 리스너
listeners = PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9093
# 리스너별 보안 프로토콜 매핑
listener.security.protocol.map = PLAINTEXT:PLAINTEXT,SSL:SSL
# 내부 통신용 리스너
inter.broker.listener.name = PLAINTEXT로그 설정
기본 로그 설정
# 로그 디렉토리 (쉼표로 여러 개 가능)
log.dirs = /var/kafka-logs,/var/kafka-logs2
# 파티션당 기본 로그 세그먼트 크기
log.segment.bytes = 1073741824 # 1GB
# 세그먼트 롤링 주기
log.roll.hours = 168 # 7일Retention 설정
# 시간 기반 (기본 7일)
log.retention.hours = 168
# 크기 기반 (기본 무제한)
log.retention.bytes = -1
# 삭제 검사 주기
log.retention.check.interval.ms = 300000
# Cleanup 정책
log.cleanup.policy = delete플러시 설정
# 메시지 수 기반 플러시 (기본 없음)
log.flush.interval.messages = 10000
# 시간 기반 플러시 (기본 없음)
log.flush.interval.ms = 1000
# 일반적으로 OS에 위임 (기본값 권장)복제 설정
기본 복제
# 기본 Replication Factor
default.replication.factor = 3
# 토픽 자동 생성
auto.create.topics.enable = true
# 자동 생성 시 기본 파티션 수
num.partitions = 3ISR 관련
# 최소 ISR 수 (acks=all 사용 시 중요)
min.insync.replicas = 2
# Replica lag 임계값 (ISR 제외 기준)
replica.lag.time.max.ms = 30000Fetch 설정
# Follower fetch 스레드 수
num.replica.fetchers = 4
# Fetch 최소/최대 바이트
replica.fetch.min.bytes = 1
replica.fetch.max.bytes = 1048576
# Fetch 대기 시간
replica.fetch.wait.max.ms = 500성능 튜닝
처리량 최적화
# 네트워크 스레드
num.network.threads = 8
# I/O 스레드
num.io.threads = 16
# 배치 크기
socket.receive.buffer.bytes = 1048576
socket.send.buffer.bytes = 1048576
# 압축 (CPU ↔ 네트워크 트레이드오프)
compression.type = producer지연 시간 최적화
# 빠른 플러시 (처리량 감소)
log.flush.interval.messages = 1
# 작은 세그먼트
log.segment.bytes = 104857600 # 100MB메모리 최적화
# 로그 버퍼 크기
log.preallocate = false
# 인덱스 간격
log.index.interval.bytes = 4096
log.index.size.max.bytes = 10485760JVM 설정
힙 메모리
# kafka-server-start.sh 수정 또는 환경변수
export KAFKA_HEAP_OPTS="-Xmx6g -Xms6g"
# 권장: 물리 메모리의 10-25%
# 나머지는 Page Cache에 사용GC 설정
# G1GC 권장 (Kafka 3.0+)
export KAFKA_JVM_OPTS="-XX:+UseG1GC \
-XX:MaxGCPauseMillis=20 \
-XX:InitiatingHeapOccupancyPercent=35 \
-XX:+ExplicitGCInvokesConcurrent"프로덕션 권장 설정
3노드 클러스터 예시
# server.properties (Broker 1)
broker.id = 1
listeners = PLAINTEXT://0.0.0.0:9092
advertised.listeners = PLAINTEXT://kafka1.example.com:9092
log.dirs = /var/kafka-logs
# Zookeeper (또는 KRaft)
zookeeper.connect = zk1:2181,zk2:2181,zk3:2181/kafka
# 복제
default.replication.factor = 3
min.insync.replicas = 2
# 성능
num.network.threads = 8
num.io.threads = 16
socket.send.buffer.bytes = 102400
socket.receive.buffer.bytes = 102400
# Retention
log.retention.hours = 168
log.segment.bytes = 1073741824
# 자동 생성 비활성화 (프로덕션)
auto.create.topics.enable = false
auto.leader.rebalance.enable = true설정 확인 및 변경
동적 설정 변경
# Broker 설정 조회
kafka-configs.sh --describe \
--bootstrap-server localhost:9092 \
--entity-type brokers \
--entity-name 0
# 동적 설정 변경 (재시작 불필요)
kafka-configs.sh --alter \
--bootstrap-server localhost:9092 \
--entity-type brokers \
--entity-name 0 \
--add-config log.retention.hours=72동적 변경 가능 설정
| 설정 | 범위 | 설명 |
|---|---|---|
log.retention.ms | Topic/Broker | Retention 기간 |
log.retention.bytes | Topic/Broker | Retention 크기 |
min.insync.replicas | Topic/Broker | 최소 ISR |
unclean.leader.election.enable | Topic/Broker | 비동기 리더 선출 |
max.connections.per.ip | Broker | IP당 최대 연결 |
댓글 (0)