
Apache Kafka는 대용량의 실시간 데이터 스트리밍을 처리하는 분산 메시징 시스템입니다. Kafka 브로커의 핵심 설정 파일인 server.properties를 올바르게 구성하는 것은 안정적이고 효율적인 운영의 시작점입니다. 이 가이드에서는 주요 설정 항목들을 카테고리별로 상세히 살펴보겠습니다.
broker.id=0
log.dirs=/var/kafka-logs
/mnt/disk1/kafka-logs,/mnt/disk2/kafka-logszookeeper.connect=localhost:2181
localhost:2181zk1:2181,zk2:2181,zk3:2181zk1:2181,zk2:2181/kafkalisteners=PLAINTEXT://:9092
PROTOCOL://HOST:PORTlisteners=PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9093advertised.listeners=PLAINTEXT://kafka-broker-1:9092
num.network.threads=3
num.io.threads=8
log.retention.hours=168
log.retention.minutes: 분 단위log.retention.ms: 밀리초 단위 (가장 우선순위 높음)log.retention.bytes=-1
log.retention.bytes=1073741824 (1GB)log.segment.bytes=1073741824
log.cleanup.policy=delete
delete: 오래된 세그먼트 삭제compact: 키별 최신 값만 유지 (로그 컴팩션)delete,compact: 두 정책 모두 적용default.replication.factor=3
min.insync.replicas=2
replication.factor=3일 때 min.insync.replicas=2 권장replica.lag.time.max.ms=30000
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
message.max.bytes=1048576
max.request.size와 일치시켜야 함fetch.max.bytes보다 작거나 같아야 함auto.create.topics.enable=true
false (명시적 토픽 관리)true (편의성)num.partitions=1
compression.type=producer
producer: Producer가 설정한 압축 유지none: 압축 없음gzip, snappy, lz4, zstd: 특정 압축 알고리즘 강제producer 유지lz4 또는 zstd# SSL 설정
listeners=SSL://0.0.0.0:9093
ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
ssl.keystore.password=password
ssl.key.password=password
ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
ssl.truststore.password=password
# SASL 설정
security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=false
# 브로커 식별
broker.id=1
# 로그 디렉토리
log.dirs=/data/kafka-logs
# Zookeeper 연결
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181/kafka
# 네트워크 설정
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://kafka-1.example.com:9092
num.network.threads=8
num.io.threads=16
# 복제 설정
default.replication.factor=3
min.insync.replicas=2
replica.lag.time.max.ms=30000
# 로그 보관
log.retention.hours=168
log.segment.bytes=1073741824
log.cleanup.policy=delete
# 토픽 설정
auto.create.topics.enable=false
num.partitions=6
# 성능 최적화
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
# 압축
compression.type=lz4
고성능 시스템 (SSD, 충분한 메모리):
num.io.threads: 16~32num.network.threads: 8~16log.segment.bytes: 2GB일반 시스템:
num.io.threads: 8~16num.network.threads: 3~8log.segment.bytes: 1GBexport JMX_PORT=9999
BytesInPerSec, BytesOutPerSecRequestQueueTimeMs, ResponseQueueTimeMsUnderReplicatedPartitionsserver.properties 설정은 Kafka 클러스터의 성능과 안정성을 좌우하는 핵심 요소입니다. 위에서 소개한 설정들을 환경과 요구사항에 맞게 조정하여 사용하시기 바랍니다.
주요 포인트:
broker.id, log.dirs, zookeeper.connect)을 반드시 구성설정 변경 후에는 반드시 테스트 환경에서 충분히 검증한 후 프로덕션에 적용하는 것을 권장합니다.
참고 자료: