Kafka : 대규모 데이터를 처리할 수 있는 메시지 큐
메시지 큐 : 큐 형태의 자료구조에 데이터를 일시적으로 저장하는 '임시' 저장소, 비동기로 데이터를 처리할 수 있어 효율적이다.
- 동기적 처리 : 순차처리, A 작업이 모두 끝난 뒤 B 작업 처리, Rest API 통신
- 비동기 처리 : 병렬 처리, A 작업을 시작한 직후 A 작업이 끝날 때까지 기다리지 않고 B 작업도 바로 실행, 메시지 큐 통신
비동기로 효율적으로 동작하기 때문에 대규모 트래픽 처리 시 유리하다.
Kafka Broker : 카프카가 설치된 서버
Kafka Cluster : 카프카가 설치된 서버 (브로커)들의 모음
우분투에 Kafka 설치 (우분투를 카프카 브로커로 세팅하는 방법)
#1. JDK 설치 (Kafka는 JDK 기반 동작)
$ sudo apt update
$ sudo apt install openjdk-17-jdk
$ java -version # 잘 설치됐는 지 확인
#2. Kafka 설치
wget https://archive.apache.org/dist/kafka/4.0.0/kafka_2.13-4.0.0.tgz
# wget https://dlcdn.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz
# 아파치는 새로운 버전이 나오면 이전 주소 파일을 다른 저장소로 옮기거나 변경한다 => 적절한 주소 확인 필요
#3. 압축 풀기
$ tar -xzf kafka_2.13-4.0.0.tgz # 압축 풀기
$ cd kafka_2.13-4.0.0 # 압축 푼 디렉토리로 이동
#4. Kafka를 실행시켰을 때 소요되는 메모리 줄이기 (JVM 메모리 튜닝), 설정하지 않으면 기본 1GB 할당
#kafka-server-start.sh는 실행될 때 KAFKA_HEAP_OPTS라는 변수에 적힌 값을 읽어서 JVM 메모리를 설정
#Xmx : 초기 메모리, Xms : 최대 메모리
$ export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"
#5. swap 메모리 지정 : 최대 400메가 메모리 + 스왑
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16 # 2GB 파일 생성
$ sudo chmod 600 /swapfile # 파일에 권한 부여
$ sudo mkswap /swapfile # 2GB 파일을 swap 공간의 형태로 전환
$ sudo swapon /swapfile # swap 활성화
# 시스템 부팅 시마다 swap 메모리가 자동으로 활성화 되도록 파일시스템 수정
# fstab : file system table, 부팅할 때 어떤 디스크, 장치를 어디에 연결(마운트)할지 기록한 파일
$ sudo vi /etc/fstab
# vi 편집기에서 fstab 파일에 아래 내용을 추가하고 저장하기
# /swapfile 파일을 가져와서 swap 메모리 형태로 사용, 타입 형식은 스왑 형식이고 옵션은 default, 백업 x(0), 부팅 시 디스크 검사 x(0)
/swapfile swap swap defaults 0 0
$ free #(free -h) swap 메모리 설정이 잘 되었는지 확인
#6. 카프카 설정 수정
$ vi config/server.properties
# 외부에서 접근할 때 사용하는 주소, IP 수정
advertised.listeners=PLAINTEXT://{현재 카프카 리눅스의 IP}:9092,CONTROLLER://{현재 카프카 리눅스의 IP}:9093
#7. 카프카 로그 파일 설정 (카프카 서버 처음 실행 시에만 설정하면 된다.
$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)" # 랜덤 uuid 발행하여 카프카 클러스터 id로 지정
$ bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties
# KRaft 모드(주키퍼가 없는 독립 실행 모드)에서의 저장소 포맷 명령어
#8. 카프카 리눅스 서버 실행
$ cd ~/kafka_2.13-4.0.0
$ bin/kafka-server-start.sh -daemon config/server.properties # 백그라운드 실행
$ tail -f logs/kafkaServer.out # 카프카 서버 로그 확인 (정상 실행되었는지)
$ lsof -i:9092 #9092번 포트에서 카프카가 잘 동작하는지 확인
#9. 카프카 리눅스 서버 종료
$ bin/kafka-server-stop.sh

여차저차해서 카프카 실행, 종료 성공 ..
'Infra > Kafka' 카테고리의 다른 글
| [Kafka] Kafka Basic (0) | 2026.04.30 |
|---|