[KAFKA] 로컬에서 카프카 브로커 실행

.·2024년 6월 11일

KAFKA

목록 보기
5/21

1. 카프카 커맨드 라인 툴

카프카 커맨드 라인 툴(Command-line Tool)은 카프카를 운영할 때 브로커 운영에 필요한 다양한 명령을 내릴 수 있는 도구이다.
데이터를 주고 받는 작업 뿐 아니라, 카프카 토픽이나 파티션 개수 변경과 같은 운영을 할 필요가 있기 때문에 카프카 커맨드 라인툴을 이용한 명령어를 사용할 줄 알아야 한다.
커맨드 라인툴을 이용해 명령 수행 시 필수 옵션과 선택 옵션이 있는데, 선택 옵션의 경우 지정하지 않을 경우 기본값으로 설정된다.

2. 로컬에서 카프카 브로커 실행하기

주키퍼와 카프카 브로커는 JVM 위에서 돌아가기 때문에, 1.8 이상의 JRE나 JDK를 우선 설치해야 한다.

이제 로컬에 아파치 카프카를 설치하고 실행해보자. 그 순서는 다음과 같다.

  1. 카프카 바이너리 파일 다운로드
    https://kafka.apache.org/downloads
  2. 카프카 바이너리 압축 해제
  3. 주키퍼 실행
  4. 카프카 바이너리 실행

1) JAVA 설치

JRE 설치

sudo apt update

패키지를 다운로드할 수 있는 저장소의 최신 정보를 업데이트한다.

java -version

자바 버전을 확인하면 아직 자바가 설치되지 않았기 때문에 찾을 수 없는 것을 확인할 수 있다.

sudo apt install default-jre

JRE를 설치한다.

java-version

JRE가 정상적으로 설치되고 나면 자바 버전에 대한 정보가 출력된다.

1) 디렉토리 살펴보기

카프카 바이너리 압축을 해제하면 다음과 같은 디렉토리를 확인할 수 있다.

bin

bin 디렉토리에는 실행할 바이너리와 쉘 스크립트들이 포함되어 있다. 쉘 스크립트 또는 브로커 실행 시 이 bin 디렉토리에서 실행한다.

config

config 디렉토리에는 여러 설정 파일들이 포함되어 있다.

server.properties

server.properties 파일에는 브로커를 실행할 때 필요한 여러 옵션들을 포함한다.

기존 설정

변경 후 설정

listener는 카프카 브로커 통신을 통해 받을 아이피를 뜻한다. listeners, advertised.listeners 주석을 해제하고 localhost로 변경한다.
카프카 클라이언트가 통신 시 접근하고자 하는 카프카 브로커가 localhost에 있다는 메타데이터를 받고, 이 메타데이터를 바탕으로 통신하게 된다.

log.dirs에는 생성해준 data 디렉토리의 경로를 지정해주었다. 파일 시스템을 지정해준 것이다. 기존 /tmp/kafka-logs 경로를 지우고, data 디렉토리로 변경한다.
프로듀서가 데이터를 보내면 프로듀서의 데이터는 카프카 브로커로 가고, 카프카 브로커에 있는 데이터는 파일 시스템에 저장되는데, log.dirs에 설정해준 경로에 데이터가 저장되게 된다.

num.partitons에는 카프카 토픽을 만들 때 기본적으로 만들 파티션 개수를 지정해준다. 토픽 생성 시 파티션 개수 설정 옵션이 없을 경우 기본적으로 이 옵션값에 따른 파티션 개수를 가진 카프카 토픽을 생성한다.

log.retention.hours
얼만큼의 시간이 지난 후의 데이터를 삭제할 지에 대한 설정이다.

zookeeper.properties

주키퍼에 대한 설정을 지정하는 파일이다.

libs

libs 디렉토리에는 여러 라이브러리 파일들을 포함한다. 브로커 실행 시 필요한 라이브러리들을 찾을 때 이 libs 디렉토리를 참조하여 실행한다.

data

브로커에서 적재한 데이터가 파일 시스템에 적재되는 것을 확인하기 위해 data 디렉토리를 별도로 만들어준다.

2) 주키퍼 실행

bin/zookeeper-server-start.sh config/zookeeper.properties

주키퍼는 상용환경에서는 3개 이상의 서버에서 앙상블로 묶어 연동하는 것이 일반적이다. 로컬에서 테스트하는 환경에서는 한대만 띄울 수 있도록 카프카 바이너리에 포함되어 있다.

카프카 브로커를 띄우기 전에는 주키퍼를 먼저 띄워야 한다. zookeeper.properties 파일의 내용을 바탕으로 주키퍼를 실행한다.

3) 카프카 브로커 실행

카프카 브로커 실행

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

주키퍼가 실행되고 나면, 터미널을 하나 더 열어 카프카 브로커를 띄운다. (반드시 주키퍼를 실행하고 난 후 카프카 브로커를 실행시켜야 한다.)
server.properties 파일의 내용을 바탕으로 브로커(카프카 서버)를 실행한다.

마지막 로그로 started 로그가 뜨고 나면 브로커가 정상 실행된 것을 확인할 수 있다.

지금까지 주키퍼를 하나 띄우고, 카프카 브로커(localhost:9092)를 한 대 로컬에 띄웠다.
이제 특정 쉘 스크립트 명령어(sh)를 통해 브로커와 통신할 수 있다.

카프카 브로커 실행 확인

bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092

localhost의 9092 포트에 띄워진 카프카 브로커의 상태를 확인한다. bootstrap서버(카프카 클러스터에 포함된 브로커 중 1대)에 요청하며, 사용하는 포트 정보를 함께 적는다.

카프카 토픽 리스트 확인

bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

localhost의 9092 포트 카프카 브로커의 토픽 리스트를 확인한다.
현재는 카프카 토픽을 만들지 않은 상태이기 때문에 리스트에는 아무것도 조회되지 않는다.

hosts 설정

sudo vi /etc/hosts

테스트 편의를 위해서는 hosts 설정을 해줄 수 있다.
my-kafka를 한 줄 추가하여, localhost의 브로커가 연동되도록 만든다.

0개의 댓글