관리 메뉴

The Nirsa Way

[Apache Kafka] 리눅스에 카프카 설치하기 본문

Development/Apache Kafka

[Apache Kafka] 리눅스에 카프카 설치하기

KoreaNirsa 2025. 7. 19. 17:49
반응형

 

리눅스에 카프카 설치하기

현재 저는 VMware에 리눅스 서버(Rocky 9.6)를 준비해두었으며 테스트를 위한 서버이므로 selinux, firewalld를 모두 disabled 해두었습니다. 우선 kafka의 바이너리를 다운로드 받기 위해 vim, wget, tar을 설치해두겠습니다.

dnf -y install vim wget tar
※ 만약 자바가 설치되어 있지 않은 경우 설치 진행
저의 경우 dnf -y install java-17-openjdk java-17-openjdk-devel -y 을 입력하여 jdk 17을 설치해두었습니다.

 

이후 https://downloads.apache.org/kafka/ 으로 이동하여 원하는 버전의 폴더를 클릭합니다. (저는 3.9.0으로 진행하겠습니다)

 

소스 다운로드와 바이너리 다운이 모두 있는데, 저는 바이너리 다운로드를 설치하기 위해 kafka_2.12-3.9.0.tgz로 진행 합니다. 우클릭하여 "링크 주소 복사"를 클릭하여 주소를 복사해두세요.

※ 소스 다운로드 vs 바이너리 다운로드 참고
https://www.reddit.com/r/learnprogramming/comments/287kx9/what_is_the_difference_between_downloading/

 

또는 https://kafka.apache.org/downloads 에서 지원되는 릴리스 버전을 확인하실 수 있습니다.

https://kafka.apache.org/downloads

 

wget 커맨드를 사용하여 복사해두었던 주소를 붙여넣기 후 tgz 파일을 다운로드 받습니다.

 

tar을 사용하여 카프카의 압축을 해제하고 해당 디렉토리를 /usr/local로 이동해두겠습니다.

tar -zxvf kafka_2.12-3.9.0.tgz
mv kafka_2.12-3.9.0 /usr/local/

 

이후 KRaft 메타데이터를 저장하기 위한 디렉토리를 생성하고 클러스터 설정을 위해 config/kraft/server.properties를 vim으로 열어주세요.

mkdir -p /data/kafka-data/kraft-combined-logs
cd /usr/local/kafka_2.12-3.9.0
vim config/kraft/server.properties

 

해당 파일의 localhost 부분을 카프카 서버의 아이피로 변경해주세요.


이후 78 라인에 log.dirs를 제거 또는 주석처리 해주시고 로그 경로를 방금 생성했던 /data/kafka-data/kraft-combined-logs 으로 변경해주세요. 변경 후 :wq! 를 입력하여 저장 후 나옵니다.

 

이제 클러스터 ID 생성 및 초기화를 진행합니다.

KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
echo "Cluster ID: $KAFKA_CLUSTER_ID"

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

 

이제 기본적인 설치는 되었으니 카프카를 실행해주세요.

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


카프카 테스트

이로써 카프카의 기본적인 설치는 끝낫으며 설치 커맨드가 잘 되어있어 리눅스를 잘 다루지 못하시는 분들도 쉽게 설치할 정도의 난이도였던 것 같습니다. 

이제 잘 설치가 되었는지 콘솔에서 테스트를 진행할텐데, 이후 메시지 전송 및 수신을 확인하기 위해 쉘을 2개 더 킨 다음 아래 메시지를 입력하여 정상적으로 설치되었는지 확인하시면 됩니다. 

한쪽의 쉘에선 Producer 커멘드를, 반대쪽의 쉘에선 Consumer의 커멘드를 입력하여 테스트하시면 됩니다.

# Producer
/usr/local/kafka_2.12-3.9.0/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

# Consumer
/usr/local/kafka_2.12-3.9.0/bin/kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9092 --from-beginning

 

위에서 입력한 쉘스크립트 및 옵션들에 대한 설명은 아래와 같습니다.

  1. kafka-console-producer.sh : 콘솔에서 메시지를 직접 입력하여 토픽에 전송하는 CLI 도구
  2. kafka-console-consumer.sh : 콘솔에서 메시지를 토픽에서 수신하여 콘솔에 출력하는 CLI 도구
  3. --topic test-topic : 메시지를 전송할 Kafka 토픽 이름 (test-topic)
  4. --bootstrap-server localhost:9092 : 브로커 주소
  5. --from-beginning : 토픽의 가장 처음(offset 0)부터 모든 메시지를 읽기 위한 옵션

 

반응형