Kafka 클러스터 생성 및 관리

Apache Kafka 입문

Mike Metzger

Data Engineering Consultant

ZooKeeper란?

  • ZooKeeper는 분산 시스템 운영에 필요한 정보 관리 및 서비스를 제공하는 프레임워크입니다
  • 주로 개발자가 분산 애플리케이션을 만들 때 사용합니다
    • 사용자는 ZooKeeper와 상호작용합니다
  • 예시 애플리케이션
    • Kafka
    • Hadoop
    • Neo4j

Apache_ZooKeeper_logo.svg.png

Apache Kafka 입문

ZooKeeper의 역할

  • ZooKeeper는 분산 애플리케이션 구동에 필요한 서비스를 제공합니다
    • 구성 관리
    • 시스템 네이밍
    • 시스템 간 동기화
    • 시스템 그룹에 필요한 공통 서비스
  • 개별 애플리케이션이 서비스를 직접 구현하지 않도록 하는 프레임워크로 설계되었습니다
    • 전원 플러그나 호스 노즐 같은 공용 커넥터와 유사합니다
Apache Kafka 입문

ZooKeeper와 Kafka

  • Kafka는 클러스터 관리를 위해 ZooKeeper를 사용합니다
    • 최신 Kafka는 KRaft도 사용할 수 있습니다
  • 사용하는 파일 두 개
    • config/zookeeper.properties
    • config/server.properties
# zookeeper.properties

# The directory where the 
# snapshot is stored.
dataDir=/tmp/zookeeper

# The port at which the clients 
# will connect
clientPort=2181

...
Apache Kafka 입문

config/server.properties

  • Kafka 전용 설정을 다룹니다
    • 브로커 세부정보
    • 네트워크 구성
    • 이벤트 저장 위치
    • 복제를 포함한 기본 토픽 설정
...
# A comma separated list of directories under which to store log files
log.dirs=/tmp/kafka-logs
# The default number of log partitions per topic.
num.partitions=1
Apache Kafka 입문

Kafka 클러스터 시작

  • Kafka 클러스터는 두 단계로 시작합니다
$ bin/zookeeper-server-start.sh config/zookeeper.properties
...
INFO   ______                  _                                           (org.apache.zookeeper.server.ZooKeeperServer)
INFO  |___  /                 | |                                          (org.apache.zookeeper.server.ZooKeeperServer)
INFO     / /    ___     ___   | | __   ___    ___   _ __     ___   _ __    (org.apache.zookeeper.server.ZooKeeperServer)
INFO    / /    / _ \   / _ \  | |/ /  / _ \  / _ \ | '_ \   / _ \ | '__| (org.apache.zookeeper.server.ZooKeeperServer)
INFO   / /__  | (_) | | (_) | |   <  |  __/ |  __/ | |_) | |  __/ | |     (org.apache.zookeeper.server.ZooKeeperServer)
INFO  /_____|  \___/   \___/  |_|\_\  \___|  \___| | .__/   \___| |_| (org.apache.zookeeper.server.ZooKeeperServer)
INFO                                               | |                      (org.apache.zookeeper.server.ZooKeeperServer)
INFO                                               |_|                      (org.apache.zookeeper.server.ZooKeeperServer)
INFO  (org.apache.zookeeper.server.ZooKeeperServer)
...
Apache Kafka 입문

Kafka 클러스터 시작 (계속)

$ bin/kafka-server-start.sh config/server.properties
INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.DataPlaneAcceptor)
INFO Kafka version: 3.7.0 (org.apache.kafka.common.utils.AppInfoParser)
INFO Kafka commitId: 2ae524ed625438c5 (org.apache.kafka.common.utils.AppInfoParser)
INFO Kafka startTimeMs: 1717502877829 (org.apache.kafka.common.utils.AppInfoParser)
INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
INFO [zk-broker-0-to-controller-forwarding-channel-manager]: Recorded new controller, 
     from now on will use node 815f25786085:9092 (id: 0 ra
Apache Kafka 입문

Kafka 클러스터 중지

  • bin/kafka-server-stop.sh
  • bin/zookeeper-server-stop.sh
  • 종료는 역순으로 진행합니다
Apache Kafka 입문

연습해 봅시다!

Apache Kafka 입문

Preparing Video For Download...