Development/Kafka

1. 카프카와 환경셋팅

DevKTak 2025. 8. 30. 15:37

카프카란?

Kafka는 대규모 데이터를 처리할 수 있는 메시지 큐이다.

그럼 메시지큐란?

메시지 큐(Message Queue)는 큐 형태에 데이터를 일시적으로 저장하는 임시 저장소를 의미한다.
메시지 큐를 활용하면 비동기적으로 데이터를 처리할 수 있어서 효율적이다.

 

음 나는 일단 공부 목적이니깐 aws 대신 도커에 우분투 컨테이너를 띄우고 카프카 서버 환경을 구축해보겠어.

참고로 도커에서 진행 하는것이기 때문에 4~5번은 해당사항 없음

 

  • Docker 기본 보안 정책(cgroup / capability 제한) 때문에 swapon/mkswap 같은 커널 레벨 메모리 관리 명령은 컨테이너 안에서 허용되지 않습니다.
  • 즉, 컨테이너는 자기 마음대로 스왑 파티션을 만들 수 없음(호스트 OS에서만 가능)

 

1. Ubuntu 컨테이너 생성

# ubuntu 최신 이미지로 컨테이너 만들고 터미널 접속 
docker run -it --name kafka-ubuntu ubuntu:22.04 bash
  • --name kafka-ubuntu : 컨테이너 이름
  • -it : 인터랙티브 모드
  • bash : 바로 bash 쉘 실행

* 실행중인 컨테이너에 접속

docker exec -it kafka-ubuntu bash

2. JDK 17 설치하기

Kafka를 실행시키려면 JDK 17 이상

$ sudo apt update
$ sudo apt install openjdk-17-jdk
$ java -version # 잘 설치됐는 지 확인

3. Kafka 설치 파일 다운받고 압축풀기

$ wget https://dlcdn.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz
$ tar -xzf kafka_2.13-4.0.0.tgz # 압축 풀기
$ cd kafka_2.13-4.0.0

4. Kafka를 실행시켰을 때 잡아먹는 메모리 크기 낮추기

$ export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"

5. swap을 활용해 메모리 늘리기(일부 디스크 공간을 메모리로 활용하는 기법)

$ 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 활성화

5-2. 시스템 부팅 시마다 자동으로 활성화 되도록 파일시스템 수정

# 시스템 부팅 시마다 자동으로 활성화 되도록 파일시스템 수정
$ sudo vi /etc/fstab

# 아래 내용을 추가하고 저장하기
/swapfile swap swap defaults 0 0

5-3. swap 메모리가 잘 설정됐는지 확인하기

free

6. Kafka 설정 수정하기

$ vi config/server.properties

클라이언트가 외부에서 접근할 때 사용하는 IP 주소로 localhost 2군데 수정

7. Kafka 서버 시작하기

# 초기 로그 폴더 셋팅 (카프카 첫 실행 때만 이 명령어를 입력하면 됨)
$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
$ bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties

# 카프카 서버 실행
$ cd ~/kafka_2.13-4.0.0
$ bin/kafka-server-start.sh config/server.properties # 포그라운드에서 실행

8. Kafka 서버를 백그라운드에서 실행하기

# 백그라운드에서 실행
$ bin/kafka-server-start.sh -daemon config/server.properties 

# 백그라운드에서 실행되고 있는 kafka 서버의 로그 확인하기
$ tail -f logs/kafkaServer.out

9. Kafka 서버가 실행 중인지 확인하는 방법

$ sudo lsof -i:9092 # 9092번 포트에서 실행 중인 프로세스 조회

10. Kafka 서버 종료 및 실행

# 카프카 종료하기
$ bin/kafka-server-stop.sh

# 잘 종료됐나 확인
$ sudo lsof -i:9092

# 백그라운드에서 실행
$ bin/kafka-server-start.sh -daemon config/server.properties 

# 잘 실행됐나 확인
$ sudo lsof -i:9092

 

'Development > Kafka' 카테고리의 다른 글

3. Spring Boot 실습  (0) 2025.08.30
2. CLI에서 실습  (1) 2025.08.30