본문 바로가기
Kafka

Kafka 설치

by 규난 2023. 10. 9.
728x90

목차

  1. 실습 환경
  2. kafka 설치
  3. kafka 브로커 힙 메모리 설정
  4. kafka 브로커 실행 옵션 설정
  5. zookeeper, kafka broker 실행
  6. 정리

 

1.  실습 환경

OS: Ubuntu 20.04

CPU: OCPU 4core

Memory: 24G

2.  kafka 설치

https://archive.apache.org/dist/kafka/

 

Index of /dist/kafka

 

archive.apache.org

 

kafka 설치는 어렵지 않습니다!

먼저 위 사이트에서 사용하려는 버전의 kafka 바이너리 패키지 경로로 이동 후 wget 명령어를 통해 kafka 바이너리 패키지를 다운로드 받습니다. 다운로드가 완료되면 tar 명령어와 xvf 옵션을 사용해서 압축을 풀어주시면 해당 디렉토리에 kafka_2.13-3.5.1 디렉토리가 생기게 됩니다.

$ wget https://archive.apache.org/dist/kafka/3.5.1/kafka_2.13-3.5.1.tgz
$ tar xvf kafka_2.13-3.5.1.tgz

 

3.  kafka 브로커 힙 메모리 설정

밑 사진의 kafka-server-start.sh의 쉘 스크립트 파일을 보시면 브로커의 기본 힙 메모리 설정이 1G인 것을 확인하실 수 있습니다.

저와 같은 환경이거나 저보다 더 좋은 환경에서 실습하시는 분들은 kafka의 브로커 힙 메모리를 따로 설정해 주지 않아도 되지만 AWS EC2 프리티어에서 실습하시는 분들은 EC2 프리티어는 1G의 memory를 가지고 있기 때문에 브로커의 힙 메모리를 설정해 줘야 합니다. 

kafka-server-start.sh 쉘 스크립트 파일

브로커의 힙 메모리를 설정해 주기 위해 vi 편집기를 이용해 ~/.bashrc 파일에 힙 메모리 설정에 관련된 환경 변수를 넣어 주도록 하겠습니다. 여기까지 진행하셨으면 이제 브로커의 실행 옵션을 설정해 보도록 하겠습니다.

$ vim ~/.bashrc

# 진입이 된 경우
export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"

# wq 명령어로 저장 후 수정된 값을 바로 적용하기 위해 source 명령어 입력
$ source ~/.bashrc

 

4. kafka 브로커 실행 옵션 설정

브로커의 실행 옵션을  설정하기 위해 아래의 명령어로 설정 파일로 진입합니다.

# 카프카가 설치된 최상위 디렉토리라고 가정
$ vim config/server.properties

 

설정 파일에는 많은 옵션들이 있지만 실습하는 단계이기 때문에 실습에 필요한 옵션들만 보고 넘어가도록 하겠습니다.

  1.  broker.id
    • 카프카의 브로커 번호. 클러스터를 구축할 때 브로커들을 구분하기 위해 사용하는 번호이기 때문에 유니크한 번호를 사용해야 한다.
  2.  listeners
    • 카프카 브로커가 통신을 위해 열어둘 IP와 port, 프로토콜을 설정할 수 있다. 따로 설정하지 않으면 모든 IP와 port에서 접속할 수 있다.
  3. advertised.listeners
    • 카프카 클라이언트 또는 커맨드 라인 툴에서 접속할 때 사용하는 IP와 port 정보. 이번 장에서 실습할 때 커맨드 라인 툴을 사용해서 접속하기 때문에 여러분의 퍼블릭 IP:9092(카프카의 기본 포트)를 적어줘야 합니다.
  4. num.network.threads
    • 네트워크를 통한 처리를 할 때 사용할 네트워크 스레드 개수.
  5. num.io.threads
    • 브로커 내부에서 사용할 스레드 개수.
  6. log.dirs
    • 통신을 통해 가져온 데이터를 파일로 저장할 디렉토리 위치.
  7. num.partitions
    • 토픽을 생성할 때 기본으로 생성되는 파티션의 개수.
  8. log.retention.hours
    • 브로커가 저장한 파일이 삭제되기까지 걸리는 시간 설정. log.retention.hours보다는 log.retention.ms를 권장. 
    • log.retention.ms를 -1로 설정 시 파일은 삭제되지 않음.
  9. log.segment.bytes
    • 브로커가 저장할 파일의 최대 크기 설정. 파일이 최대 크기까지 차면 새로운 파일을 생성.
  10. log.retention.check.interval.ms
    • 브로커가 저장한 파일을 삭제하기 위해 체크하는 간격 설정.
  11. zookeeper.connect
    • 브로커와 연동할 주키퍼의 IP와 port 설정.
  12. zookeeper.connection.timeout.ms
    • 주키퍼의 세션 타임아웃 시간 설정

5. zookeeper, kafka 실행

zookeeper 실행

밑의 명령어로 주키퍼를 실행합니다.

# 카프카가 설치된 최상위 디렉토리라고 가정
$ bin/zookeeper-server-start.sh -daemon confing/zookeeper.properties

 

kafka 브로커 실행

밑의 명령어로 카프카 브로커를 실행합니다.

# 카프카가 설치된 최상위 디렉토리라고 가정
$ bin/kafka-server-start.sh -daemon confing/server.properties

위 명령어에서 -daemon 옵션은 주키퍼와 카프카를 백그라운드로 실행하기 위한 옵션입니다.

 

주키퍼와 카프카 브로커가 잘 실행됐는지 jps 명령어로 확인해 보도록 하겠습니다.

jps 명령어는 JVM 위에서 동작하는 애플리케이션의 프로세스 상태를 볼 수 있습니다.

jps -vm 명령어로 확인한 결과

jps 명령어로 JVM 프로세스 상태를 볼 때 -m 옵션을 통해 main 메서드에 전달된 인자를 확인할 수 있으며, -v 옵션을 통해 JVM에 전달된 인자를 확인할 수 있습니다. 카프카 브로커가 프로세스 상태에서 여러분이 설정한 브로커의 힙 메모리 설정값이 잘 들어가 있고 주키퍼와 카프카 브로커가 프로세스 상태 목록에 있으면 주키퍼와 카프카 브로커가 성공적으로 실행이 됐다 보면 됩니다.

6. 정리

이번 포스트에서는 카프카 설치와 카프카 브로커의 설정 그리고 주키퍼와 카프카의 실행까지 진행해 보았습니다.

다음 포스트에서는 커맨드 라인 툴을 사용하여 브로커에 토픽을 생성하고 프로듀서를 통해 토픽의 데이터를 전송하고 컨슈머를 통해 토픽의 데이터를 가져오는 실습을 해보도록 하겠습니다.

728x90

'Kafka' 카테고리의 다른 글

KafKa란?  (1) 2023.10.08