본문 바로가기
※ IT관련

"Kafka 클러스터 성능 극대화: 설치, 구성, 모니터링의 모든 것"

by 홍길동젼 2025. 1. 13.
728x90
반응형

Kafka 클러스터 관리는 안정성과 확장성을 보장하기 위해 필수적인 작업입니다. 

1. Kafka 클러스터의 구성

  • Broker:
    • 클러스터의 핵심 구성 요소로, 각 Broker는 고유 ID를 가짐.
    • 여러 Broker로 구성된 클러스터는 데이터 복제 및 분산 처리를 지원.
  • ZooKeeper:
    • 기존 Kafka 클러스터에서 메타데이터 관리 및 리더 선출에 사용.
    • Kafka 2.8부터 KRaft(Kafka Raft)를 도입해 ZooKeeper 의존도를 줄이는 중.
  • Topic과 Partition:
    • Topic은 논리적 데이터 스트림 단위.
    • Partition은 Topic을 분할하여 병렬 처리가 가능하도록 설계.

 

2. 클러스터 확장

2.1 Broker 추가

  • 새 Broker를 클러스터에 추가하면 Kafka가 자동으로 이를 인식.
  • 데이터를 새 Broker에 분산하려면 리밸런싱(Rebalancing) 과정이 필요.
    • 리밸런싱 명령:
      kafka-reassign-partitions.sh --zookeeper <zookeeper> --reassignment-json-file <file> --execute
      
  • 주의: 리밸런싱은 성능에 영향을 미칠 수 있으므로 비활성 시간에 수행 권장.

2.2 Partition 확장

  • Partition 개수 증가 가능. 하지만 기존 데이터는 재분배되지 않으므로, 소비자는 새로운 Partition 데이터를 읽기 위해 업데이트 필요.
  • 확장 명령:
    kafka-topics.sh --alter --topic <topic_name> --partitions <new_count> --zookeeper <zookeeper>
    

 

3. 데이터 복제와 복구

3.1 Replication Factor 관리

  • 각 Partition은 복제본(Replica)을 가짐.
  • replication.factor는 복제본 개수를 의미하며, 3 이상 설정 권장(HA 보장).
  • 복제본 간의 ISR(In-Sync Replica) 상태를 유지.
    • ISR은 리더와 동기화된 Replica를 의미.
  • 복제본 불일치 시, 리플리카 상태 점검 명령:
    kafka-topics.sh --describe --topic <topic_name> --zookeeper <zookeeper>
    

3.2 Broker 장애 복구

  • 장애가 발생한 Broker의 리더 Partition은 다른 ISR로 자동 전환.
  • 장기간 장애 시, ISR에서 제외된 Broker 복구 명령:
    kafka-replica-verification.sh --zookeeper <zookeeper>
    

 

4. 데이터 유지 및 관리

4.1 Retention 정책

  • 메시지 보존 기간:
    • 메시지 보관 시간(log.retention.hours) 설정.
  • 디스크 기반 보존:
    • 저장 용량 기반(log.retention.bytes)으로 데이터 삭제.

4.2 로그 세그먼트 관리

  • 데이터는 로그 세그먼트 단위로 관리.
  • 오래된 세그먼트는 자동 삭제 또는 압축.
  • 압축 활성화:
    compression.type=snappy
    log.cleanup.policy=compact
    

 

5. 클러스터 모니터링

  • Kafka 메트릭 수집 도구:
    • Prometheus, Grafana, Kafka Manager.
  • 중요 지표:
    • ISR 크기.
    • Broker 네트워크 I/O.
    • 오프셋 래그(Offset Lag): Consumer와 Producer 간 지연 확인.
  • Kafka Broker 상태 확인 명령:
    kafka-broker-api-versions.sh --bootstrap-server <broker_host:port>
    

 

6. Kafka 클러스터 최적화

6.1 데이터 분배 최적화

  • Partition 분배가 특정 Broker에 편향되지 않도록 리밸런싱 수행.
  • 데이터 중심으로 Topic 및 Partition 설계.

6.2 리소스 사용량 관리

  • JVM 메모리 최적화(Xms, Xmx).
  • Broker에 충분한 디스크 용량 확보.
  • I/O 성능을 위해 SSD 사용 권장.

 

>> 결론

Kafka 클러스터 관리는 신중한 계획과 정기적인 모니터링이 필수입니다. 

728x90
반응형