본문 바로가기
Framework/Kafka

[Kafka] 아파치 카프카 실행

by 미미믹 2024. 9. 3.

카프카 브로커를 실행하기 위해서는 jdk가 설치되어 있어야한다.

 

[AWS] aws ec2 open jdk 설치 방법

초기 인스턴스 생성 시에 Amazon Linux로 설치를 했다.해당 os에는 java가 설치되어있지 않기 때문에 설치해주어야 한다.먼저 $ java -version 명령어로 자바가 설치되어있는지 확인해준다.자바가 설치되

mi2mic.tistory.com

 


아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리

카프카 브로커를 실행하기 위해 카프카 바이너리 패키지를 다운로드한다.
책 기준 버전이 2.5.0이기 때문에 해당 버전을 다운로드 해주었다.

wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz

다운로드가 완료되면 tar 명령어로 압출을 풀어준다.

tar xvf kafka_2.12-2.5.0.tgz


카프카 브로커 힙 메모리 설정

카프카 브로커는 레코드의 내용은 페이지 캐시로 시스템 메모리를 사용하고 나머지 객체들을 힙 메모리에 저장하여 사용한다는 특징이 있다.
카프카 브로커는 1G, 주키퍼는 512MB로 힙 메모리가 기본 설정되어있다.

프리티어 인스턴스의 메모리는 1G로 설정되어 있기 때문에, 카프카 브로커와 주키퍼를 동시에 실행하면
Cannot allocate memory 에러가 출력되며 실행되지 않는다.
테스트 환경의 힙 메모리 사이즈를 수정해주도록 한다.

환경변수 선언문을 bash 쉘에 넣어주어 터미널을 재실행하더라도 해당 환경변수가 유지되도록 해준다.

vi ~/.bashrc

vi 편집기에서 i를 눌러 편집모드로 들어간 후 환경변수를 설정해준다.

export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"

esc키를 누른 후 :wq 를 입력하여 편집기를 빠져나온다.

스크립트 수정 후 바로 반영될 수 있도록 source 명령어를 실행해준다.

source ~/.bashrc

메모리 설정 부분 카프카 스크립트에서 확인하기

카프카가 설치된 폴더에서 cat 명령어를 통해 스크립트를 열어본다.

cat bin/kafka-server-start.sh

1 :: KAFKA_HEAP_OPTS이 환경변수로 지정되어 있지 않으면 기본 힙 메모리는 Xmx 1G, Xms 1G로 설정된다.
2 :: -daemon 옵션을 붙이면 백그라운드로 실행되어 터미널의 세션이 끊기더라도 카프카 브로커는 계속 동작한다.
해당 옵션을 생략할 경우, 포어그라운드로 동작한다.


카프카 브로커 실행 옵션 설정

config 폴더에 server.properties 파일에 카프카 브로커가 클러스터 운영에 필요한 옵션들을 지정할 수 있다.

server.properties
broker.id=0 실행하는 카프카 브로커의 번호(ID). 다른 카프카와 번호가 겹칠 경우 오류가 발생할 수 있다.
listeners=PLAINTEXT://:9092 카프카 브로커가 통신을 위해 열어둘 인터페이스 IP, prot, 프로토콜.
따로 설정하지 않으면 모든 IP와 포트에서 접근 가능
advertised.listeners=PLAINTEXT://13.124.99.218:9092 카프카 클라이언트 또는 카프카 커맨드 라인 툴에서 접속할 때 사용하는 ip와 포트 정보
ex) 퍼블릭IP:카프카기본포트 => 13.124.99.218:9092
SASL_PLAINTEXT,SASL_SSL:SASL_SSL 보안 설정 시 프로토콜 매핑을 위한 설정
num.network.threads=3 네트워크 처리를 위한 스레드 개수
num.io.threads=8 카프카 브로커 내부에서 사용할 스레드 개수
log.dirs=/tmp/kafka-logs 통신을 통해 가져온 데이터를 저장할 디렉토리 위치
num.partitions=1 파티션 개수.
파티션 수가 많아지면 병렬처리 데이터양이 늘어난다.
log.retention.hours=168 카프카 브로커가 저장한 파일이 삭제되기까지 걸리는 시간
log.retention.hours보다는 log.retention.ms 값을 설정해 운영하는 것을 추천
log.retention.ms=-1로 설정 시 영원히 삭제되지 않는다.
log.segment.bytes=1073741824 카프카 브로커가 저장할 파일의 최대 크기
크기를 채우면 새로운 파일 생성
log.retention.check.interval.ms=300000 저장한 파일을 삭제하기 위해 체크하는 간격
zookeeper.connect=localhost:2181 카프카 브로커와 연동할 주키퍼의 IP와 포트 설정
zookeeper.connection.timeout.ms=18000 주키퍼의 세션 타임아웃 시간

카프카 및 주키퍼 실행

주키퍼 실행 ::
카프카 바이너리가 포함된 폴더에 주키퍼도 준비되어 있다.
분산 코디네이션 서비스를 제공하는 주키퍼는 카프카의 클러스터 설정 리더 정보, 컨트롤러 정보를 담고 있어 카프라를 실행하는데에 필수 애플리케이션
상용환경에서는 안전하게 운영하기 위해 3대 이상의 서버로 구성해야 한다.

bin/zookeeper-server-start.sh :: 주키퍼 시작 스크립트
-daemon :: 백그라운드에서 실행
config/zookeeper.properties :: 주키퍼 설정 경로
jps :: JVM 프로세스 상태 조회(주키퍼가 jvm 위에서 동작)
-m :: main 메소드에 전달된 인자 확인
-v :: JVM에 전달된 인자 확인(힙 메모리 설정, log4j 설정 등)

카프카 실행 ::


✨ 참고 도서 정보 :: 아파치 카프카 애플리케이션 프로그래밍 with 자바 (최원영)

 

아파치 카프카 애플리케이션 프로그래밍 with 자바

아파치 카프카로 새로운 개발 트렌드를 준비하는 분들을 위해 집대성한 아파치 카프카 최종 솔루션이다. 국내 서적 중 최초로 카프카의 핵심 기능인 미러메이커2(MirrorMaker2)에 대한 설명과 스프

www.aladin.co.kr