Dev./Apache Kafka

Apache Kafka(KRaft) 구성하기 - 1(기동까지)

hotpotato0 2023. 2. 21. 23:03

Step 1 : GET KAFKA

 

아래에서 최신 버전 카프카 다운로드(일단 최신으로 한번해보자구 ..)

https://kafka.apache.org/downloads

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

원하는 위치로 옮긴 이후 압축 해제

tar -xzf kafka_2.13-3.4.0.tgz
cd kafka_2.13-3.4.0

bin -> binary, ShellScript

config -> 설정에 필요한 파일들 *server.properties

libs -> binary에서 필요한 라이브러리들

 

 

 

 

추가로 data 디렉토리 생성해두자

#broker 에서 생성되는 데이터 저장을 위해 디렉토리를 미리 만들자
mkdir data

# 이후 server.properties 파일 수정

#listener, advertised.listeners 에 localhost 변경
listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://localhost:9092

#3. log.dirs 를 위 /data와 매핑
log.dirs=/Users/yunsangdon/Project/nice/kafka/kafka_2.13-3.4.0/data

 

 

 

 

 

아직 많이쓰이는 주키퍼가 아닌, Kafka 2.8.0 이후에 Kafka 자체적으로 quorum 을 관리하는 버전으로 구성을 해보려 한다..

여기서 quorum 이란?

쿼럼은 말 그대로 의사 결정에 필요한 정족수다. 표준국어대사전을 찾아보면 정족수는 "합의체가 의사를 진행하고 결정하는 데에 필요한 최소한의 출석 인원"이라고 나와있다. 마치 서킷 브레이커처럼 현실의 어떤 용어가 프로그래밍 쪽에서 꽤 잘 어울리는 형태로(?) 정착한 것 같다. 여튼 정족수라 함은 예를 들어 이런 것이다. 나는 이번달 회식 메뉴를 한우 오마카세로 정하고 싶다. 우리 팀은 5명인데 팀원 중 n명이 동의하면 오마카세를 먹으러 갈 수 있다. 이때 n은 팀원이 총 5명이므로 1 ≤ n ≤ 5이다.
즉 쿼럼은 좁은 의미에서는 어떤 동작을 하기 위해서 필요한 최소한의, 동등한 무언가들의 찬성표 개수를 뜻한다. 넓은 의미에서는 특정 행위를 하기 위해서 정족수가 필요하다는 규칙을 가리킨다. 

 

STEP 2: 카프카 환경 시작하기

NOTE : Java 8+ 설치가 되어있어야함.

 

Apache Kaka 는 Zookeeper or KRaft를 사용해야 구동되는데, 이중 자체 관리가 되는 KRaft를 활용하여 구성을 해보겠다.

 

Kafka with KRaft

먼저 Cluster UUID 를 생성하자

KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

#한번 ID를 체크해보고,
echo $KAFKA_CLUSTER_ID

 

다음은 로그 디렉토리 포맷

bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

 

Kafka 서버 START!!

bin/kafka-server-start.sh config/kraft/server.properties

# 실행 메시지 확인
#[2023-02-21 22:39:00,908] INFO [KafkaRaftServer nodeId=1] Kafka Server started (kafka.server.KafkaRaftServer)

 

브로커, 토픽 확인해보기

#브로커 상태 확인
bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092

#토픽 리스트 확인
bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

 

추가로 향후 원활한 진행을 위한 작업들

1. hosts 추가

 127.0.0.1 sd-kafka

 

2. alias 설정

#.zshrc 수정
#vi .zshrc

#alias 추가 
alias cdkafka="cd /Users/____/Project/nice/kafka/kafka_2.13-3.4.0"
#alias 적용
source .zshrc