[Kafka 기초] 1. 설정 하기 (Linux, MacOX)

이름KafkaZookeeper
기본 포트90922181
기본 설정 위치log.dirs=/path/to/data/kafkadataDir=/path/to/data/zookeeper
  • Kafka 데이터는 기본설정으로 7일간 유지된다.

Mac OS 카프카 설치 및 설정

1. MacOX 카프카 설치 및 설정

  • Java JDK 11 설치 (Open JDK중 하나인 Corretto 설치 – 비교적 안정적임)Amazon Corretto 프로덕션용 OpenJDK 배포
  • Kafka Binary 설치
    • Binary버전 및 최신 Scale로 설치
    • 설정 및 사용의 편의성을 위해 HOME 디렉토리로 파일을 옮기는게 좋다.
    • bin 폴더 안에는 카프카 실행을 위한 여러 명령 스크립트들이 있다.
    Apache Kafka
  • $PATH 환경변수 설정
    • 맥은 zshrc이 기본이고 bash인 경우도 있다.
    • home디렉토리 → vim .zshrc 명렁어 실행
PATH 환경변수 설정방법 
디렉토리 위치 확인 명령어 : pwd

vim .zshrc ->
PATH="$PATH:/Users/jeonhong-u/kafka_2.12-3.5.1/bin" 

# 등록된 환경변수 확인
echo(환경 변수 출력) echo $PATH

환경변수를 통해 기본 베이스 디렉토리를 알고 있기 때문에 베이스 위치를 생략할 수 있다. 

  • 터미널 재시작후 환경변수 확인해야한다.

2. 주키퍼와 카프카 시작하기

주키퍼 하나와 브로커가 있는 카프카 클러스터


  • 주키퍼 및 카프카 실행 순서
    • 카프카 바이너리를 사용해서 주키퍼를 실행하고
    • 카프카 바이너리를 이용해서 카프카를 시작한다.
  • 주키퍼 실행을 위해서 zookeeper.properties파일을 준비해야 한다.
    • 주키퍼 설정 파일이다.
    • zookeeper.properties 위치 → [카프카 폴더 위치]/config 안에 존재함.
# zookeeper 실행
# Log 라인이 잘 나오면 제대로 실행된 것이다.
zookeeper-server-start.sh ~/[카프카 설치위치]/config/zookeeper.properties

# kafka 실행
# Log 라인이 잘 나오면 제대로 실행된 것이다.
kafka-server-start.sh ~/[카프카 설치위치]/config/server.properties# zookeeper 실행
# Log 라인이 잘 나오면 제대로 실행된 것이다.
zookeeper-server-start.sh ~/[카프카 설치위치]/config/zookeeper.properties

# kafka 실행
# Log 라인이 잘 나오면 제대로 실행된 것이다.
kafka-server-start.sh ~/[카프카 설치위치]/config/server.properties
  • 성공적으로 연결되면 주키퍼에서 연결에 대한 반응이 온다.
  • 주키퍼나 카프카 둘중 하나가 죽으면 실행이 정지되니 꼭 터미널을 열어둬야한다.
이름 주키퍼 카프카
프로퍼티 명 zookeeper.properties server.properties
데이터 저장 및 디렉토리 경로 변경 변수명 dataDir – 데이터 경로 dataDir – 데이터 경로
log.dirs – 로그 경로 log.dirs – 로그 경로

3. MacOX Brew로 카프카 설치

  • CLI(Command Line Interface) 명령어를 통한 카프카 설치
  • Brew로 설치했다면 .zshrc에 기존에 설정한 카프카 PATH 환경변수를 제거해야 한다.
# 카프카 설치 전 필요한 Homebrew 설치 명령어
/bin/bash -c "$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh>)"

# 카프카 설치
brew install kafka
  • Brew 설치시 카프카에 필요한 파일(JAVA, Kafka)이 자동으로 설치된다.
  • 자동으로 kafka 경로가 설정 된다.
    • 카프카 스크립트 위치 (/user/local/bin)
    • 카프카 구성 파일 위치 (/user/local/etc/kafka)
    • log.dirs config 위치 (/user/local/var/lib/kafka-logs)
  • brew로 설치시 명령어를 사용할때 sh없이 스크립트 이름만 입력해야 실행이 된다.
# Zookeeper 실행
/usr/local/bin/zookeeper-server-start /usr/local/etc/zookeeper/zoo.cfg

# Kafka 실행
/usr/local/bin/kafka-server-start /usr/local/etc/kafka/server.properties

Linux 카프카 설치 및 설정

1. Open JDK 설치

# JDK 설치 명령어
wget -O- <https://apt.corretto.aws/corretto.key> | sudo apt-key add - 
sudo add-apt-repository 'deb <https://apt.corretto.aws> stable main'
sudo apt-get update; sudo apt-get install -y java-11-amazon-corretto-jdk

# 버전 확인
java -version

# 간혹 설치가 잘 안되는 경우
su 명령어로 관리자 모드로 진입  설치

# Java Version 선택
sudo update-alternatives --config java

# JDK Version 선택
sudo update-alternatives --config javac

# Open JDK 제거
sudo dpkg --remove java-11-amazon-corretto-jdk

2. Apache Kafka 설치

# Kafka 설치 명령어 ( 버전 확인후 최신버전 설치 )
wget <https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz>

# 압축 해제
tar xzf kafka_2.13-3.5.1.tgz

# Home 으로 옮겨야할때만 꼭 사용
mv kafka_2.13-3.5.1 ~

3. Kafka 환경변수 설정 – $PATH

CLI 명령어를 더 쉽게 Full 디렉토리를 넣지 않아도 스크립트 명만으로 사용 가능하다.

# 환경 변수 등록
vim .bashrc 

# 실행 후 가장 하단에 추가
PATH="$PATH:~/kafka_2.13-3.5.1/bin"

# esc 누르고 wq 후 엔터 눌러서 저장

# 수정된 옵션을 바로 적용 (터미널 재시작하지 않아도 됨)
source ~/.bashrc

4. Apache Kafka 실행

Zookeeper와 Kafka 서버를 실행하는 명령어

  • 주키퍼 및 카프카 실행 순서
    • 카프카 바이너리를 사용해서 주키퍼를 실행하고
    • 카프카 바이너리를 이용해서 카프카를 시작한다.
이름 주키퍼 카프카
프로퍼티 명 zookeeper.properties server.properties
데이터 저장 및 디렉토리 경로 변경 변수명 dataDir – 데이터 경로 dataDir – 데이터 경로
log.dirs – 로그 경로 log.dirs – 로그 경로
# 주키퍼 실행
zookeeper-server-start.sh ~/kafka_2.13-3.5.1/config/zookeeper.properties

# 카프카 실행
kafka-server-start.sh ~/kafka_2.13-3.5.1/config/server.properties

Heap Memory 낮추기

보통 EC2같은 무료 클라우드 서버를 사용시 메모리가 상당히 낮으니 낮춰줘야한다.

  • Kafka 브로커는 기본 Default Memory는 1GB다
  • Zookeeper의 Default Memory는 500MB다.
# Home 디렉토리에서
vim .bashrc

# 맨 아래 옵션에 추가.
export KAFKA_HEAP_OPTS="-Xmx100m -Xms100m"

# 수정된 옵션을 바로 적용 (터미널 재시작하지 않아도 됨)
source ~/.bashrc

# 확인
echo $KAFKA_HEAP_OPTS
LIST